diff --git a/404.html b/404.html index 3ec911a2..d5f19be5 100644 --- a/404.html +++ b/404.html @@ -21,14 +21,14 @@ - - - + + +
-
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/assets/css/styles.4c6baf0a.css b/assets/css/styles.31713120.css similarity index 99% rename from assets/css/styles.4c6baf0a.css rename to assets/css/styles.31713120.css index 665e9ecd..91c1e30e 100644 --- a/assets/css/styles.4c6baf0a.css +++ b/assets/css/styles.31713120.css @@ -1 +1 @@ -.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}:root,body.dark,body[data-theme=dark]{--aa-icon-color-rgb:119,119,163;--aa-scrollbar-thumb-background-color-rgb:var(--aa-background-color-rgb)}.aa-List,.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#215f3d;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.1);--docusaurus-announcement-bar-height:auto;--aa-search-input-height:44px;--aa-input-icon-size:20px;--aa-base-unit:16;--aa-spacing-factor:1;--aa-spacing:calc(var(--aa-base-unit)*var(--aa-spacing-factor)*1px);--aa-spacing-half:calc(var(--aa-spacing)/2);--aa-panel-max-height:650px;--aa-base-z-index:9999;--aa-font-size:calc(var(--aa-base-unit)*1px);--aa-font-family:inherit;--aa-font-weight-medium:500;--aa-font-weight-semibold:600;--aa-font-weight-bold:700;--aa-icon-size:20px;--aa-icon-stroke-width:1.6;--aa-icon-color-alpha:1;--aa-action-icon-size:20px;--aa-text-color-rgb:38,38,39;--aa-text-color-alpha:1;--aa-primary-color-rgb:62,52,211;--aa-primary-color-alpha:0.2;--aa-muted-color-rgb:128,126,163;--aa-muted-color-alpha:0.6;--aa-panel-border-color-rgb:128,126,163;--aa-panel-border-color-alpha:0.3;--aa-input-border-color-rgb:128,126,163;--aa-input-border-color-alpha:0.8;--aa-background-color-rgb:255,255,255;--aa-background-color-alpha:1;--aa-input-background-color-rgb:255,255,255;--aa-input-background-color-alpha:1;--aa-selected-color-rgb:179,173,214;--aa-selected-color-alpha:0.205;--aa-description-highlight-background-color-rgb:245,223,77;--aa-description-highlight-background-color-alpha:0.5;--aa-detached-media-query:(max-width:680px);--aa-detached-modal-media-query:(min-width:680px);--aa-detached-modal-max-width:680px;--aa-detached-modal-max-height:500px;--aa-overlay-color-rgb:115,114,129;--aa-overlay-color-alpha:0.4;--aa-panel-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);--aa-scrollbar-width:13px;--aa-scrollbar-track-background-color-rgb:234,234,234;--aa-scrollbar-track-background-color-alpha:1;--aa-scrollbar-thumb-background-color-alpha:1;--aa-search-input-height:36px;--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}*,.aa-Autocomplete *,.aa-DetachedFormContainer *,.aa-Panel *{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{-webkit-text-decoration-color:var(--ifm-alert-border-color);text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area.breadcrumbs__link[href]:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:-webkit-any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.collapsibleContent_i85q>:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.docsWrapper_BCFX,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.announcementBar_mb4j,.skipToContent_fXgn{z-index:calc(var(--ifm-z-index-fixed) + 1)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#215f3d;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.3)}.project-logo{margin-bottom:2em}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#docusaurus-base-url-issue-banner-container,.aa-ClearButton[hidden],.aa-ItemContent:empty,.aa-LoadingIndicator[hidden],.aa-Source:empty,.aa-SourceHeader:empty,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);box-shadow:var(--ifm-global-shadow-lw);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.aa-Form,.toggleButton_gllP{align-items:center;width:100%;display:flex}.toggleButton_gllP{border-radius:50%;height:100%;justify-content:center;transition:background var(--ifm-transition-fast)}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}body.dark,body[data-theme=dark]{--aa-text-color-rgb:183,192,199;--aa-primary-color-rgb:146,138,255;--aa-muted-color-rgb:146,138,255;--aa-input-background-color-rgb:0,3,9;--aa-background-color-rgb:21,24,42;--aa-selected-color-rgb:146,138,255;--aa-selected-color-alpha:0.25;--aa-description-highlight-background-color-rgb:0 255 255;--aa-description-highlight-background-color-alpha:0.25;--aa-panel-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--aa-scrollbar-track-background-color-rgb:44,46,64;--aa-muted-color-alpha:1}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-family:inherit;font-family:var(--aa-font-family);font-size:16px;font-size:var(--aa-font-size);font-weight:400;line-height:1em;margin:0;padding:0;text-align:left}.aa-Form{background-color:#fff;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(128,126,163,.8);border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;line-height:1em;margin:0;position:relative}.aa-ClearButton,.aa-Input,.aa-SubmitButton{border:0;background:none}.aa-Form[focus-within]{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:currentColor}.aa-Form:focus-within{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:currentColor}.aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;height:44px;height:var(--aa-search-input-height);order:1}.aa-Label,.aa-LoadingIndicator{cursor:auto;flex-shrink:0;height:100%;padding:0;text-align:left}.aa-Label svg,.aa-LoadingIndicator svg{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);height:auto;max-height:20px;max-height:var(--aa-input-icon-size);width:20px;width:var(--aa-input-icon-size)}.aa-LoadingIndicator,.aa-SubmitButton{height:100%;padding-left:11px;padding-left:calc(var(--aa-spacing)*.75 - 1px);padding-right:8px;padding-right:var(--aa-spacing-half);width:47px;width:calc(var(--aa-spacing)*1.75 + var(--aa-icon-size) - 1px)}.aa-SubmitButton{-webkit-appearance:none;appearance:none;margin:0}.aa-LoadingIndicator,.buttons_AeoN{align-items:center;display:flex;justify-content:center}.aa-InputWrapper{order:3;position:relative;width:100%}.aa-Input{-webkit-appearance:none;appearance:none;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font:inherit;height:44px;height:var(--aa-search-input-height);padding:0;width:100%}.aa-Input::placeholder{color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));opacity:1}.aa-Input:focus{border-color:none;box-shadow:none;outline:0}.aa-Input::-webkit-search-cancel-button,.aa-Input::-webkit-search-decoration,.aa-Input::-webkit-search-results-button,.aa-Input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.aa-InputWrapperSuffix{align-items:center;display:flex;height:44px;height:var(--aa-search-input-height);order:4}.aa-ClearButton{align-items:center;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;height:100%;margin:0;padding:0 12.8333333333px;padding:0 calc(var(--aa-spacing)*.83333 - .5px)}.aa-Item,.aa-ItemIcon{align-items:center;border-radius:3px}.aa-ClearButton:focus,.aa-ClearButton:hover,.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha))}.aa-ClearButton svg{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);width:20px;width:var(--aa-icon-size)}.aa-Panel{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:4px;border-radius:calc(var(--aa-spacing)/4);box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:var(--aa-panel-shadow);margin:8px 0 0;overflow:hidden;position:absolute;transition:opacity .2s ease-in,filter .2s ease-in}.aa-Panel button{-webkit-appearance:none;appearance:none;background:none;border:0;margin:0;padding:0}.aa-PanelLayout{height:100%;margin:0;max-height:650px;max-height:var(--aa-panel-max-height);overflow-y:auto;padding:0;position:relative;text-align:left}.aa-PanelLayoutColumns--twoGolden{display:grid;grid-template-columns:39.2% auto;overflow:hidden;padding:0}.aa-PanelLayoutColumns--two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;padding:0}.aa-PanelLayoutColumns--three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;padding:0}.aa-Panel--stalled .aa-Source{filter:grayscale(1);opacity:.8}.aa-Panel--scrollable{margin:0;max-height:650px;max-height:var(--aa-panel-max-height);overflow-x:hidden;overflow-y:auto;padding:8px;padding:var(--aa-spacing-half);scrollbar-color:#fff #eaeaea;scrollbar-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha)) rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));scrollbar-width:thin}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.aa-Panel--scrollable::-webkit-scrollbar{width:13px;width:var(--aa-scrollbar-width)}.aa-Panel--scrollable::-webkit-scrollbar-track{background-color:#eaeaea;background-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha))}.aa-Panel--scrollable::-webkit-scrollbar-thumb{background-color:#fff;background-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha));border:3px solid #eaeaea;border-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));border-radius:9999px;border-right:2px solid rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha))}.aa-Source{margin:0;padding:0;position:relative;width:100%}.aa-SourceNoResults{font-size:1em;margin:0;padding:16px;padding:var(--aa-spacing)}.aa-List{margin:0}.aa-List,.aa-SourceHeader{padding:0;position:relative}.aa-SourceHeader{margin:8px .5em 8px 0;margin:var(--aa-spacing-half) .5em var(--aa-spacing-half) 0}.aa-SourceHeaderTitle{background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);display:inline-block;font-size:.8em;font-weight:600;font-weight:var(--aa-font-weight-semibold);margin:0;padding:0 8px 0 0;padding:0 var(--aa-spacing-half) 0 0;position:relative;z-index:9999;z-index:var(--aa-base-z-index)}.aa-SourceHeaderLine{border-bottom:1px solid #3e34d3;border-bottom:1px solid rgba(var(--aa-primary-color-rgb),1);display:block;height:2px;left:0;margin:0;opacity:.3;padding:0;position:absolute;right:0;top:8px;top:var(--aa-spacing-half);z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-SourceFooterSeeAll{background:linear-gradient(180deg,#fff,rgba(128,126,163,.14));background:linear-gradient(180deg,rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha)),rgba(128,126,163,.14));border:1px solid rgba(128,126,163,.6);border:1px solid rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));border-radius:5px;box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);color:inherit;font-size:.95em;font-weight:500;font-weight:var(--aa-font-weight-medium);padding:.475em 1em .6em;text-decoration:none}.aa-SourceFooterSeeAll:focus,.aa-SourceFooterSeeAll:hover{border:1px solid #3e34d3;border:1px solid rgba(var(--aa-primary-color-rgb),1);color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1)}.aa-Item{cursor:pointer;display:grid;min-height:40px;min-height:calc(var(--aa-spacing)*2.5);padding:4px;padding:calc(var(--aa-spacing-half)/2)}.aa-Item[aria-selected=true]{background-color:rgba(179,173,214,.205);background-color:rgba(var(--aa-selected-color-rgb),var(--aa-selected-color-alpha))}.aa-Item[aria-selected=true] .aa-ActiveOnly,.aa-Item[aria-selected=true] .aa-ItemActionButton{visibility:visible}.aa-ItemIcon{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));color:#7777a3;color:rgba(var(--aa-icon-color-rgb),var(--aa-icon-color-alpha));display:flex;flex-shrink:0;font-size:.7em;height:28px;height:calc(var(--aa-icon-size) + var(--aa-spacing-half));justify-content:center;overflow:hidden;text-align:center;width:28px;width:calc(var(--aa-icon-size) + var(--aa-spacing-half))}.aa-ItemIcon img{height:auto;max-height:20px;max-height:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);max-width:20px;max-width:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);width:auto}.aa-ItemIcon svg{height:20px;height:var(--aa-icon-size);width:20px;width:var(--aa-icon-size)}.aa-ItemIcon--alignTop{align-self:flex-start}.aa-ItemIcon--noBorder{background:none;box-shadow:none}.aa-ItemIcon--picture{height:96px;width:96px}.aa-ItemIcon--picture img{max-height:100%;max-width:100%;padding:8px;padding:var(--aa-spacing-half)}.aa-ItemContent{grid-gap:8px;grid-gap:var(--aa-spacing-half);align-items:center;cursor:pointer;display:grid;gap:8px;gap:var(--aa-spacing-half);grid-auto-flow:column;line-height:1.25em;overflow:hidden}.aa-ItemContent mark{background:none;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-style:normal;font-weight:700;font-weight:var(--aa-font-weight-bold)}.aa-ItemContent--dual{display:flex;flex-direction:column;justify-content:space-between;text-align:left}.aa-ItemContent--dual .aa-ItemContentSubtitle,.aa-ItemContent--dual .aa-ItemContentTitle,.tocCollapsibleContent_vkbj a{display:block}.aa-ItemContent--indented{padding-left:36px;padding-left:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-ItemContentBody{grid-gap:4px;grid-gap:calc(var(--aa-spacing-half)/2);display:grid;gap:4px;gap:calc(var(--aa-spacing-half)/2)}.aa-ItemContentTitle{display:inline-block;margin:0 .5em 0 0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.aa-ItemContentSubtitle{font-size:.92em}.aa-ItemContentSubtitleIcon:before{border-color:rgba(128,126,163,.64);border-color:rgba(var(--aa-muted-color-rgb),.64);border-style:solid;content:"";display:inline-block;left:1px;position:relative;top:-3px}.aa-PanelFooter:after,.aa-PanelHeader:after{content:"";position:absolute;pointer-events:none;right:0;left:0}.aa-ItemContentSubtitle--inline .aa-ItemContentSubtitleIcon:before{border-width:0 0 1.5px;margin-left:8px;margin-left:var(--aa-spacing-half);margin-right:4px;margin-right:calc(var(--aa-spacing-half)/2);width:10px;width:calc(var(--aa-spacing-half) + 2px)}.aa-ItemContentSubtitle--standalone{grid-gap:8px;grid-gap:var(--aa-spacing-half);align-items:center;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));display:grid;gap:8px;gap:var(--aa-spacing-half);grid-auto-flow:column;justify-content:start}.aa-ItemContentSubtitle--standalone .aa-ItemContentSubtitleIcon:before{border-radius:0 0 0 3px;border-width:0 0 1.5px 1.5px;height:8px;height:var(--aa-spacing-half);width:8px;width:var(--aa-spacing-half)}.aa-ItemContentSubtitleCategory{color:#807ea3;color:rgba(var(--aa-muted-color-rgb),1);font-weight:500}.aa-ItemContentDescription{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-size:.85em;max-width:100%;overflow-x:hidden;text-overflow:ellipsis}.aa-ItemContentDescription:empty,.collapseSidebarButton_PEFL,.docSidebarContainer_b6E3,.sidebarLogo_isFc{display:none}.aa-ItemContentDescription mark{background:rgba(245,223,77,.5);background:rgba(var(--aa-description-highlight-background-color-rgb),var(--aa-description-highlight-background-color-alpha));color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-style:normal;font-weight:500;font-weight:var(--aa-font-weight-medium)}.aa-ItemContentDash{color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));display:none;opacity:.4}.aa-ItemContentTag{background-color:rgba(62,52,211,.2);background-color:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha));border-radius:3px;margin:0 .4em 0 0;padding:.08em .3em}.aa-ItemLink,.aa-ItemWrapper{grid-gap:4px;grid-gap:calc(var(--aa-spacing-half)/2);align-items:center;color:inherit;display:grid;gap:4px;gap:calc(var(--aa-spacing-half)/2);grid-auto-flow:column;justify-content:space-between;width:100%}.aa-ItemLink{color:inherit;text-decoration:none}.aa-ItemActions{display:grid;grid-auto-flow:column;height:100%;justify-self:end;margin:0 -5.3333333333px;margin:0 calc(var(--aa-spacing)/-3);padding:0 2px 0 0}.aa-ItemActionButton{align-items:center;background:none;border:0;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;flex-shrink:0;padding:0}.aa-ItemActionButton svg{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));margin:5.3333333333px;margin:calc(var(--aa-spacing)/3);width:20px;width:var(--aa-action-icon-size)}.aa-ActiveOnly{visibility:hidden}.aa-PanelHeader{align-items:center;background:#3e34d3;background:rgba(var(--aa-primary-color-rgb),1);color:#fff;display:grid;height:var(--aa-modal-header-height);margin:0;padding:8px 16px;padding:var(--aa-spacing-half) var(--aa-spacing);position:relative}.aa-PanelHeader:after{background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));bottom:-8px;bottom:calc(var(--aa-spacing-half)*-1);height:8px;height:var(--aa-spacing-half)}.aa-PanelFooter,.aa-PanelHeader:after{z-index:9999;z-index:var(--aa-base-z-index)}.aa-PanelFooter{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));box-shadow:inset 0 1px 0 rgba(128,126,163,.3);box-shadow:inset 0 1px 0 rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;justify-content:space-between;margin:0;padding:16px;padding:var(--aa-spacing);position:relative}.aa-PanelFooter:after{background-image:linear-gradient(hsla(0,0%,100%,0),rgba(128,126,163,.6));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha)));height:16px;height:var(--aa-spacing);opacity:.12;top:-16px;top:calc(var(--aa-spacing)*-1);z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-DetachedContainer{background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));bottom:0;box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:var(--aa-panel-shadow);display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:9999;z-index:var(--aa-base-z-index)}.aa-DetachedContainer:after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:8px 0 8px 2px;margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{border-bottom:1px solid rgba(128,126,163,.3);border-bottom:1px solid rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:8px;padding:var(--aa-spacing-half)}.aa-DetachedCancelButton{background:none;border:0;border-radius:3px;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));cursor:pointer;font:inherit;margin:0 0 0 8px;margin:0 0 0 var(--aa-spacing-half);padding:0 8px;padding:0 var(--aa-spacing-half)}.aa-DetachedCancelButton:focus,.aa-DetachedCancelButton:hover{box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha))}.aa-DetachedContainer--modal{border-radius:6px;bottom:inherit;height:auto;margin:0 auto;max-width:680px;max-width:var(--aa-detached-modal-max-width);position:absolute;top:3%}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:500px;max-height:var(--aa-detached-modal-max-height);padding-bottom:8px;padding-bottom:var(--aa-spacing-half);position:static}.aa-DetachedSearchButton{align-items:center;background-color:#fff;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(128,126,163,.8);border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;font:inherit;font-family:inherit;font-family:var(--aa-font-family);font-size:16px;font-size:var(--aa-font-size);height:44px;height:var(--aa-search-input-height);margin:0;padding:0 5.5px;padding:0 calc(var(--aa-search-input-height)/8);position:relative;text-align:left;width:100%}.aa-DetachedSearchButton:focus{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 3px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 3px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:currentColor}.aa-DetachedSearchButtonIcon{align-items:center;color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);cursor:auto;display:flex;height:100%;justify-content:center;width:36px;width:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:hsla(244,6%,48%,.4);background-color:rgba(var(--aa-overlay-color-rgb),var(--aa-overlay-color-alpha));height:100vh;left:0;margin:0;padding:0;position:fixed;right:0;top:0;z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-GradientBottom,.aa-GradientTop{height:8px;height:var(--aa-spacing-half);left:0;pointer-events:none;position:absolute;right:0;z-index:9999;z-index:var(--aa-base-z-index)}.aa-GradientTop{background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));top:0}.aa-GradientBottom{background-image:linear-gradient(hsla(0,0%,100%,0),#fff);background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-background-color-rgb),1));border-bottom-left-radius:4px;border-bottom-left-radius:calc(var(--aa-spacing)/4);border-bottom-right-radius:4px;border-bottom-right-radius:calc(var(--aa-spacing)/4);bottom:0}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.docMainContainer_gTbr,.docPage__5DB,.features_t9lD{display:flex;width:100%}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.features_t9lD{align-items:center;padding:2rem 0}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity .2s ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:.5rem;font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:.15s;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.breadcrumbHomeIcon_OVgt{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg);position:sticky}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;top:0;transition:background-color var(--ifm-transition-fast) ease}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}.aa-TouchOnly{display:none}}@media (hover:none) and (pointer:coarse){:root{--aa-spacing-factor:1.2;--aa-action-icon-size:22px}.aa-LoadingIndicator,.aa-SubmitButton{padding-left:3px;padding-left:calc(var(--aa-spacing-half)/ 2 - 1px);width:39px;width:calc(var(--aa-icon-size) + var(--aa-spacing)*1.25 - 1px)}.aa-ClearButton{padding:0 10.1666666667px;padding:0 calc(var(--aa-spacing)*.66667 - .5px)}.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:inherit}.aa-DesktopOnly{display:none}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media screen and (prefers-reduced-motion){.aa-Panel{transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}:root,body.dark,body[data-theme=dark]{--aa-icon-color-rgb:119,119,163;--aa-scrollbar-thumb-background-color-rgb:var(--aa-background-color-rgb)}.aa-List,.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#46638a;--ifm-color-primary-dark:#295b78;--ifm-color-primary-darker:#276271;--ifm-color-primary-darkest:#20365d;--ifm-color-primary-light:#335c92;--ifm-color-primary-lighter:#355599;--ifm-color-primary-lightest:#3c69ad;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.1);--docusaurus-announcement-bar-height:auto;--aa-search-input-height:44px;--aa-input-icon-size:20px;--aa-base-unit:16;--aa-spacing-factor:1;--aa-spacing:calc(var(--aa-base-unit)*var(--aa-spacing-factor)*1px);--aa-spacing-half:calc(var(--aa-spacing)/2);--aa-panel-max-height:650px;--aa-base-z-index:9999;--aa-font-size:calc(var(--aa-base-unit)*1px);--aa-font-family:inherit;--aa-font-weight-medium:500;--aa-font-weight-semibold:600;--aa-font-weight-bold:700;--aa-icon-size:20px;--aa-icon-stroke-width:1.6;--aa-icon-color-alpha:1;--aa-action-icon-size:20px;--aa-text-color-rgb:38,38,39;--aa-text-color-alpha:1;--aa-primary-color-rgb:62,52,211;--aa-primary-color-alpha:0.2;--aa-muted-color-rgb:128,126,163;--aa-muted-color-alpha:0.6;--aa-panel-border-color-rgb:128,126,163;--aa-panel-border-color-alpha:0.3;--aa-input-border-color-rgb:128,126,163;--aa-input-border-color-alpha:0.8;--aa-background-color-rgb:255,255,255;--aa-background-color-alpha:1;--aa-input-background-color-rgb:255,255,255;--aa-input-background-color-alpha:1;--aa-selected-color-rgb:179,173,214;--aa-selected-color-alpha:0.205;--aa-description-highlight-background-color-rgb:245,223,77;--aa-description-highlight-background-color-alpha:0.5;--aa-detached-media-query:(max-width:680px);--aa-detached-modal-media-query:(min-width:680px);--aa-detached-modal-max-width:680px;--aa-detached-modal-max-height:500px;--aa-overlay-color-rgb:115,114,129;--aa-overlay-color-alpha:0.4;--aa-panel-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);--aa-scrollbar-width:13px;--aa-scrollbar-track-background-color-rgb:234,234,234;--aa-scrollbar-track-background-color-alpha:1;--aa-scrollbar-thumb-background-color-alpha:1;--aa-search-input-height:36px;--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}*,.aa-Autocomplete *,.aa-DetachedFormContainer *,.aa-Panel *{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{-webkit-text-decoration-color:var(--ifm-alert-border-color);text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area.breadcrumbs__link[href]:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:-webkit-any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.collapsibleContent_i85q>:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.docsWrapper_BCFX,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.announcementBar_mb4j,.skipToContent_fXgn{z-index:calc(var(--ifm-z-index-fixed) + 1)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#215f3d;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.3)}.project-logo{margin-bottom:2em}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#docusaurus-base-url-issue-banner-container,.aa-ClearButton[hidden],.aa-ItemContent:empty,.aa-LoadingIndicator[hidden],.aa-Source:empty,.aa-SourceHeader:empty,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);box-shadow:var(--ifm-global-shadow-lw);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.aa-Form,.toggleButton_gllP{align-items:center;width:100%;display:flex}.toggleButton_gllP{border-radius:50%;height:100%;justify-content:center;transition:background var(--ifm-transition-fast)}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}body.dark,body[data-theme=dark]{--aa-text-color-rgb:183,192,199;--aa-primary-color-rgb:146,138,255;--aa-muted-color-rgb:146,138,255;--aa-input-background-color-rgb:0,3,9;--aa-background-color-rgb:21,24,42;--aa-selected-color-rgb:146,138,255;--aa-selected-color-alpha:0.25;--aa-description-highlight-background-color-rgb:0 255 255;--aa-description-highlight-background-color-alpha:0.25;--aa-panel-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--aa-scrollbar-track-background-color-rgb:44,46,64;--aa-muted-color-alpha:1}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-family:inherit;font-family:var(--aa-font-family);font-size:16px;font-size:var(--aa-font-size);font-weight:400;line-height:1em;margin:0;padding:0;text-align:left}.aa-Form{background-color:#fff;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(128,126,163,.8);border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;line-height:1em;margin:0;position:relative}.aa-ClearButton,.aa-Input,.aa-SubmitButton{border:0;background:none}.aa-Form[focus-within]{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:currentColor}.aa-Form:focus-within{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:currentColor}.aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;height:44px;height:var(--aa-search-input-height);order:1}.aa-Label,.aa-LoadingIndicator{cursor:auto;flex-shrink:0;height:100%;padding:0;text-align:left}.aa-Label svg,.aa-LoadingIndicator svg{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);height:auto;max-height:20px;max-height:var(--aa-input-icon-size);width:20px;width:var(--aa-input-icon-size)}.aa-LoadingIndicator,.aa-SubmitButton{height:100%;padding-left:11px;padding-left:calc(var(--aa-spacing)*.75 - 1px);padding-right:8px;padding-right:var(--aa-spacing-half);width:47px;width:calc(var(--aa-spacing)*1.75 + var(--aa-icon-size) - 1px)}.aa-SubmitButton{-webkit-appearance:none;appearance:none;margin:0}.aa-LoadingIndicator,.buttons_AeoN{align-items:center;display:flex;justify-content:center}.aa-InputWrapper{order:3;position:relative;width:100%}.aa-Input{-webkit-appearance:none;appearance:none;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font:inherit;height:44px;height:var(--aa-search-input-height);padding:0;width:100%}.aa-Input::placeholder{color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));opacity:1}.aa-Input:focus{border-color:none;box-shadow:none;outline:0}.aa-Input::-webkit-search-cancel-button,.aa-Input::-webkit-search-decoration,.aa-Input::-webkit-search-results-button,.aa-Input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.aa-InputWrapperSuffix{align-items:center;display:flex;height:44px;height:var(--aa-search-input-height);order:4}.aa-ClearButton{align-items:center;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;height:100%;margin:0;padding:0 12.8333333333px;padding:0 calc(var(--aa-spacing)*.83333 - .5px)}.aa-Item,.aa-ItemIcon{align-items:center;border-radius:3px}.aa-ClearButton:focus,.aa-ClearButton:hover,.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha))}.aa-ClearButton svg{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);width:20px;width:var(--aa-icon-size)}.aa-Panel{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:4px;border-radius:calc(var(--aa-spacing)/4);box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:var(--aa-panel-shadow);margin:8px 0 0;overflow:hidden;position:absolute;transition:opacity .2s ease-in,filter .2s ease-in}.aa-Panel button{-webkit-appearance:none;appearance:none;background:none;border:0;margin:0;padding:0}.aa-PanelLayout{height:100%;margin:0;max-height:650px;max-height:var(--aa-panel-max-height);overflow-y:auto;padding:0;position:relative;text-align:left}.aa-PanelLayoutColumns--twoGolden{display:grid;grid-template-columns:39.2% auto;overflow:hidden;padding:0}.aa-PanelLayoutColumns--two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;padding:0}.aa-PanelLayoutColumns--three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;padding:0}.aa-Panel--stalled .aa-Source{filter:grayscale(1);opacity:.8}.aa-Panel--scrollable{margin:0;max-height:650px;max-height:var(--aa-panel-max-height);overflow-x:hidden;overflow-y:auto;padding:8px;padding:var(--aa-spacing-half);scrollbar-color:#fff #eaeaea;scrollbar-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha)) rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));scrollbar-width:thin}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.aa-Panel--scrollable::-webkit-scrollbar{width:13px;width:var(--aa-scrollbar-width)}.aa-Panel--scrollable::-webkit-scrollbar-track{background-color:#eaeaea;background-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha))}.aa-Panel--scrollable::-webkit-scrollbar-thumb{background-color:#fff;background-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha));border:3px solid #eaeaea;border-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));border-radius:9999px;border-right:2px solid rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha))}.aa-Source{margin:0;padding:0;position:relative;width:100%}.aa-SourceNoResults{font-size:1em;margin:0;padding:16px;padding:var(--aa-spacing)}.aa-List{margin:0}.aa-List,.aa-SourceHeader{padding:0;position:relative}.aa-SourceHeader{margin:8px .5em 8px 0;margin:var(--aa-spacing-half) .5em var(--aa-spacing-half) 0}.aa-SourceHeaderTitle{background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);display:inline-block;font-size:.8em;font-weight:600;font-weight:var(--aa-font-weight-semibold);margin:0;padding:0 8px 0 0;padding:0 var(--aa-spacing-half) 0 0;position:relative;z-index:9999;z-index:var(--aa-base-z-index)}.aa-SourceHeaderLine{border-bottom:1px solid #3e34d3;border-bottom:1px solid rgba(var(--aa-primary-color-rgb),1);display:block;height:2px;left:0;margin:0;opacity:.3;padding:0;position:absolute;right:0;top:8px;top:var(--aa-spacing-half);z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-SourceFooterSeeAll{background:linear-gradient(180deg,#fff,rgba(128,126,163,.14));background:linear-gradient(180deg,rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha)),rgba(128,126,163,.14));border:1px solid rgba(128,126,163,.6);border:1px solid rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));border-radius:5px;box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);color:inherit;font-size:.95em;font-weight:500;font-weight:var(--aa-font-weight-medium);padding:.475em 1em .6em;text-decoration:none}.aa-SourceFooterSeeAll:focus,.aa-SourceFooterSeeAll:hover{border:1px solid #3e34d3;border:1px solid rgba(var(--aa-primary-color-rgb),1);color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1)}.aa-Item{cursor:pointer;display:grid;min-height:40px;min-height:calc(var(--aa-spacing)*2.5);padding:4px;padding:calc(var(--aa-spacing-half)/2)}.aa-Item[aria-selected=true]{background-color:rgba(179,173,214,.205);background-color:rgba(var(--aa-selected-color-rgb),var(--aa-selected-color-alpha))}.aa-Item[aria-selected=true] .aa-ActiveOnly,.aa-Item[aria-selected=true] .aa-ItemActionButton{visibility:visible}.aa-ItemIcon{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));color:#7777a3;color:rgba(var(--aa-icon-color-rgb),var(--aa-icon-color-alpha));display:flex;flex-shrink:0;font-size:.7em;height:28px;height:calc(var(--aa-icon-size) + var(--aa-spacing-half));justify-content:center;overflow:hidden;text-align:center;width:28px;width:calc(var(--aa-icon-size) + var(--aa-spacing-half))}.aa-ItemIcon img{height:auto;max-height:20px;max-height:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);max-width:20px;max-width:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);width:auto}.aa-ItemIcon svg{height:20px;height:var(--aa-icon-size);width:20px;width:var(--aa-icon-size)}.aa-ItemIcon--alignTop{align-self:flex-start}.aa-ItemIcon--noBorder{background:none;box-shadow:none}.aa-ItemIcon--picture{height:96px;width:96px}.aa-ItemIcon--picture img{max-height:100%;max-width:100%;padding:8px;padding:var(--aa-spacing-half)}.aa-ItemContent{grid-gap:8px;grid-gap:var(--aa-spacing-half);align-items:center;cursor:pointer;display:grid;gap:8px;gap:var(--aa-spacing-half);grid-auto-flow:column;line-height:1.25em;overflow:hidden}.aa-ItemContent mark{background:none;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-style:normal;font-weight:700;font-weight:var(--aa-font-weight-bold)}.aa-ItemContent--dual{display:flex;flex-direction:column;justify-content:space-between;text-align:left}.aa-ItemContent--dual .aa-ItemContentSubtitle,.aa-ItemContent--dual .aa-ItemContentTitle,.tocCollapsibleContent_vkbj a{display:block}.aa-ItemContent--indented{padding-left:36px;padding-left:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-ItemContentBody{grid-gap:4px;grid-gap:calc(var(--aa-spacing-half)/2);display:grid;gap:4px;gap:calc(var(--aa-spacing-half)/2)}.aa-ItemContentTitle{display:inline-block;margin:0 .5em 0 0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.aa-ItemContentSubtitle{font-size:.92em}.aa-ItemContentSubtitleIcon:before{border-color:rgba(128,126,163,.64);border-color:rgba(var(--aa-muted-color-rgb),.64);border-style:solid;content:"";display:inline-block;left:1px;position:relative;top:-3px}.aa-PanelFooter:after,.aa-PanelHeader:after{content:"";position:absolute;pointer-events:none;right:0;left:0}.aa-ItemContentSubtitle--inline .aa-ItemContentSubtitleIcon:before{border-width:0 0 1.5px;margin-left:8px;margin-left:var(--aa-spacing-half);margin-right:4px;margin-right:calc(var(--aa-spacing-half)/2);width:10px;width:calc(var(--aa-spacing-half) + 2px)}.aa-ItemContentSubtitle--standalone{grid-gap:8px;grid-gap:var(--aa-spacing-half);align-items:center;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));display:grid;gap:8px;gap:var(--aa-spacing-half);grid-auto-flow:column;justify-content:start}.aa-ItemContentSubtitle--standalone .aa-ItemContentSubtitleIcon:before{border-radius:0 0 0 3px;border-width:0 0 1.5px 1.5px;height:8px;height:var(--aa-spacing-half);width:8px;width:var(--aa-spacing-half)}.aa-ItemContentSubtitleCategory{color:#807ea3;color:rgba(var(--aa-muted-color-rgb),1);font-weight:500}.aa-ItemContentDescription{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-size:.85em;max-width:100%;overflow-x:hidden;text-overflow:ellipsis}.aa-ItemContentDescription:empty,.collapseSidebarButton_PEFL,.docSidebarContainer_b6E3,.sidebarLogo_isFc{display:none}.aa-ItemContentDescription mark{background:rgba(245,223,77,.5);background:rgba(var(--aa-description-highlight-background-color-rgb),var(--aa-description-highlight-background-color-alpha));color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-style:normal;font-weight:500;font-weight:var(--aa-font-weight-medium)}.aa-ItemContentDash{color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));display:none;opacity:.4}.aa-ItemContentTag{background-color:rgba(62,52,211,.2);background-color:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha));border-radius:3px;margin:0 .4em 0 0;padding:.08em .3em}.aa-ItemLink,.aa-ItemWrapper{grid-gap:4px;grid-gap:calc(var(--aa-spacing-half)/2);align-items:center;color:inherit;display:grid;gap:4px;gap:calc(var(--aa-spacing-half)/2);grid-auto-flow:column;justify-content:space-between;width:100%}.aa-ItemLink{color:inherit;text-decoration:none}.aa-ItemActions{display:grid;grid-auto-flow:column;height:100%;justify-self:end;margin:0 -5.3333333333px;margin:0 calc(var(--aa-spacing)/-3);padding:0 2px 0 0}.aa-ItemActionButton{align-items:center;background:none;border:0;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;flex-shrink:0;padding:0}.aa-ItemActionButton svg{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));margin:5.3333333333px;margin:calc(var(--aa-spacing)/3);width:20px;width:var(--aa-action-icon-size)}.aa-ActiveOnly{visibility:hidden}.aa-PanelHeader{align-items:center;background:#3e34d3;background:rgba(var(--aa-primary-color-rgb),1);color:#fff;display:grid;height:var(--aa-modal-header-height);margin:0;padding:8px 16px;padding:var(--aa-spacing-half) var(--aa-spacing);position:relative}.aa-PanelHeader:after{background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));bottom:-8px;bottom:calc(var(--aa-spacing-half)*-1);height:8px;height:var(--aa-spacing-half)}.aa-PanelFooter,.aa-PanelHeader:after{z-index:9999;z-index:var(--aa-base-z-index)}.aa-PanelFooter{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));box-shadow:inset 0 1px 0 rgba(128,126,163,.3);box-shadow:inset 0 1px 0 rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;justify-content:space-between;margin:0;padding:16px;padding:var(--aa-spacing);position:relative}.aa-PanelFooter:after{background-image:linear-gradient(hsla(0,0%,100%,0),rgba(128,126,163,.6));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha)));height:16px;height:var(--aa-spacing);opacity:.12;top:-16px;top:calc(var(--aa-spacing)*-1);z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-DetachedContainer{background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));bottom:0;box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:var(--aa-panel-shadow);display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:9999;z-index:var(--aa-base-z-index)}.aa-DetachedContainer:after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:8px 0 8px 2px;margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{border-bottom:1px solid rgba(128,126,163,.3);border-bottom:1px solid rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:8px;padding:var(--aa-spacing-half)}.aa-DetachedCancelButton{background:none;border:0;border-radius:3px;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));cursor:pointer;font:inherit;margin:0 0 0 8px;margin:0 0 0 var(--aa-spacing-half);padding:0 8px;padding:0 var(--aa-spacing-half)}.aa-DetachedCancelButton:focus,.aa-DetachedCancelButton:hover{box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha))}.aa-DetachedContainer--modal{border-radius:6px;bottom:inherit;height:auto;margin:0 auto;max-width:680px;max-width:var(--aa-detached-modal-max-width);position:absolute;top:3%}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:500px;max-height:var(--aa-detached-modal-max-height);padding-bottom:8px;padding-bottom:var(--aa-spacing-half);position:static}.aa-DetachedSearchButton{align-items:center;background-color:#fff;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(128,126,163,.8);border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;font:inherit;font-family:inherit;font-family:var(--aa-font-family);font-size:16px;font-size:var(--aa-font-size);height:44px;height:var(--aa-search-input-height);margin:0;padding:0 5.5px;padding:0 calc(var(--aa-search-input-height)/8);position:relative;text-align:left;width:100%}.aa-DetachedSearchButton:focus{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 3px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 3px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:currentColor}.aa-DetachedSearchButtonIcon{align-items:center;color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);cursor:auto;display:flex;height:100%;justify-content:center;width:36px;width:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:hsla(244,6%,48%,.4);background-color:rgba(var(--aa-overlay-color-rgb),var(--aa-overlay-color-alpha));height:100vh;left:0;margin:0;padding:0;position:fixed;right:0;top:0;z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-GradientBottom,.aa-GradientTop{height:8px;height:var(--aa-spacing-half);left:0;pointer-events:none;position:absolute;right:0;z-index:9999;z-index:var(--aa-base-z-index)}.aa-GradientTop{background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));top:0}.aa-GradientBottom{background-image:linear-gradient(hsla(0,0%,100%,0),#fff);background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-background-color-rgb),1));border-bottom-left-radius:4px;border-bottom-left-radius:calc(var(--aa-spacing)/4);border-bottom-right-radius:4px;border-bottom-right-radius:calc(var(--aa-spacing)/4);bottom:0}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.docMainContainer_gTbr,.docPage__5DB,.features_t9lD{display:flex;width:100%}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.features_t9lD{align-items:center;padding:2rem 0}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity .2s ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:.5rem;font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:.15s;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.breadcrumbHomeIcon_OVgt{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg);position:sticky}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;top:0;transition:background-color var(--ifm-transition-fast) ease}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}.aa-TouchOnly{display:none}}@media (hover:none) and (pointer:coarse){:root{--aa-spacing-factor:1.2;--aa-action-icon-size:22px}.aa-LoadingIndicator,.aa-SubmitButton{padding-left:3px;padding-left:calc(var(--aa-spacing-half)/ 2 - 1px);width:39px;width:calc(var(--aa-icon-size) + var(--aa-spacing)*1.25 - 1px)}.aa-ClearButton{padding:0 10.1666666667px;padding:0 calc(var(--aa-spacing)*.66667 - .5px)}.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:inherit}.aa-DesktopOnly{display:none}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media screen and (prefers-reduced-motion){.aa-Panel{transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/020785c0.43ef947d.js b/assets/js/020785c0.43ef947d.js new file mode 100644 index 00000000..6640fcc9 --- /dev/null +++ b/assets/js/020785c0.43ef947d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8671],{2061:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>u,metadata:()=>o,toc:()=>p});var t=a(7462),i=(a(7294),a(3905));a(1839);const u={title:"cunicu wg pubkey",sidebar_label:"wg pubkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/pubkey",hide_title:!0,keywords:["manpage"]},s=void 0,o={unversionedId:"usage/md/cunicu_wg_pubkey",id:"usage/md/cunicu_wg_pubkey",title:"cunicu wg pubkey",description:"cunicu wg pubkey",source:"@site/docs/usage/md/cunicu_wg_pubkey.md",sourceDirName:"usage/md",slug:"/usage/man/wg/pubkey",permalink:"/docs/usage/man/wg/pubkey",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_wg_pubkey.md",tags:[],version:"current",frontMatter:{title:"cunicu wg pubkey",sidebar_label:"wg pubkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/pubkey",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg genpsk",permalink:"/docs/usage/man/wg/genpsk"},next:{title:"wg show",permalink:"/docs/usage/man/wg/show"}},l={},p=[{value:"cunicu wg pubkey",id:"cunicu-wg-pubkey",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:p};function d(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},r,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-wg-pubkey"},"cunicu wg pubkey"),(0,i.kt)("p",null,"Calculates a public key and prints it in base64 to standard output."),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Calculates a public key and prints it in base64 to standard output from a corresponding private key (generated with genkey) given in base64 on standard input."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu wg pubkey [flags]\n")),(0,i.kt)("h3",{id:"examples"},"Examples"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"# A private key and a corresponding public key may be generated at once by calling:\n$ umask 077\n$ wg genkey | tee private.key | wg pubkey > public.key\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for pubkey\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/020785c0.57087961.js b/assets/js/020785c0.57087961.js deleted file mode 100644 index 2767bb52..00000000 --- a/assets/js/020785c0.57087961.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8671],{2061:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>u,metadata:()=>o,toc:()=>p});var t=a(7462),i=(a(7294),a(3905));a(1839);const u={title:"cunicu wg pubkey",sidebar_label:"wg pubkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/pubkey",hide_title:!0,keywords:["manpage"]},s=void 0,o={unversionedId:"usage/md/cunicu_wg_pubkey",id:"usage/md/cunicu_wg_pubkey",title:"cunicu wg pubkey",description:"cunicu wg pubkey",source:"@site/docs/usage/md/cunicu_wg_pubkey.md",sourceDirName:"usage/md",slug:"/usage/man/wg/pubkey",permalink:"/docs/usage/man/wg/pubkey",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_wg_pubkey.md",tags:[],version:"current",frontMatter:{title:"cunicu wg pubkey",sidebar_label:"wg pubkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/pubkey",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg genpsk",permalink:"/docs/usage/man/wg/genpsk"},next:{title:"wg show",permalink:"/docs/usage/man/wg/show"}},l={},p=[{value:"cunicu wg pubkey",id:"cunicu-wg-pubkey",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:p};function d(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},r,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-wg-pubkey"},"cunicu wg pubkey"),(0,i.kt)("p",null,"Calculates a public key and prints it in base64 to standard output."),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Calculates a public key and prints it in base64 to standard output from a corresponding private key (generated with genkey) given in base64 on standard input."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu wg pubkey [flags]\n")),(0,i.kt)("h3",{id:"examples"},"Examples"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"# A private key and a corresponding public key may be generated at once by calling:\n$ umask 077\n$ wg genkey | tee private.key | wg pubkey > public.key\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for pubkey\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/09f02e09.0bb06f17.js b/assets/js/09f02e09.0bb06f17.js new file mode 100644 index 00000000..1c86771f --- /dev/null +++ b/assets/js/09f02e09.0bb06f17.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9146],{3682:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>r,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var t=o(7462),a=(o(7294),o(3905));o(1839);const s={title:"cunicu wg showconf",sidebar_label:"wg showconf",sidebar_class_name:"command-name",slug:"/usage/man/wg/showconf",hide_title:!0,keywords:["manpage"]},i=void 0,c={unversionedId:"usage/md/cunicu_wg_showconf",id:"usage/md/cunicu_wg_showconf",title:"cunicu wg showconf",description:"cunicu wg showconf",source:"@site/docs/usage/md/cunicu_wg_showconf.md",sourceDirName:"usage/md",slug:"/usage/man/wg/showconf",permalink:"/docs/usage/man/wg/showconf",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_wg_showconf.md",tags:[],version:"current",frontMatter:{title:"cunicu wg showconf",sidebar_label:"wg showconf",sidebar_class_name:"command-name",slug:"/usage/man/wg/showconf",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg show",permalink:"/docs/usage/man/wg/show"},next:{title:"Self-update",permalink:"/docs/usage/upgrade"}},r={},u=[{value:"cunicu wg showconf",id:"cunicu-wg-showconf",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:u};function d(e){let{components:n,...o}=e;return(0,a.kt)("wrapper",(0,t.Z)({},l,o,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"cunicu-wg-showconf"},"cunicu wg showconf"),(0,a.kt)("p",null,"Shows the current configuration and information of the provided WireGuard interface"),(0,a.kt)("h3",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"Shows the current configuration of ",(0,a.kt)("inlineCode",{parentName:"p"},"interface-name")," in the wg(8) format."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cunicu wg showconf interface-name [flags]\n")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -h, --help help for showconf\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,a.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,a.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/09f02e09.f632b570.js b/assets/js/09f02e09.f632b570.js deleted file mode 100644 index 668712de..00000000 --- a/assets/js/09f02e09.f632b570.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9146],{3682:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>r,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var t=o(7462),a=(o(7294),o(3905));o(1839);const s={title:"cunicu wg showconf",sidebar_label:"wg showconf",sidebar_class_name:"command-name",slug:"/usage/man/wg/showconf",hide_title:!0,keywords:["manpage"]},i=void 0,c={unversionedId:"usage/md/cunicu_wg_showconf",id:"usage/md/cunicu_wg_showconf",title:"cunicu wg showconf",description:"cunicu wg showconf",source:"@site/docs/usage/md/cunicu_wg_showconf.md",sourceDirName:"usage/md",slug:"/usage/man/wg/showconf",permalink:"/docs/usage/man/wg/showconf",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_wg_showconf.md",tags:[],version:"current",frontMatter:{title:"cunicu wg showconf",sidebar_label:"wg showconf",sidebar_class_name:"command-name",slug:"/usage/man/wg/showconf",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg show",permalink:"/docs/usage/man/wg/show"},next:{title:"Self-update",permalink:"/docs/usage/upgrade"}},r={},u=[{value:"cunicu wg showconf",id:"cunicu-wg-showconf",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:u};function d(e){let{components:n,...o}=e;return(0,a.kt)("wrapper",(0,t.Z)({},l,o,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"cunicu-wg-showconf"},"cunicu wg showconf"),(0,a.kt)("p",null,"Shows the current configuration and information of the provided WireGuard interface"),(0,a.kt)("h3",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"Shows the current configuration of ",(0,a.kt)("inlineCode",{parentName:"p"},"interface-name")," in the wg(8) format."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cunicu wg showconf interface-name [flags]\n")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -h, --help help for showconf\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,a.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,a.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0aeccac2.962a1d06.js b/assets/js/0aeccac2.962a1d06.js new file mode 100644 index 00000000..7c5aa503 --- /dev/null +++ b/assets/js/0aeccac2.962a1d06.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[414],{6512:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>m,frontMatter:()=>n,metadata:()=>s,toc:()=>p});var r=a(7462),i=(a(7294),a(3905));a(1839);const n={sidebar_position:20},l="Design",s={unversionedId:"design",id:"design",title:"Design",description:"Architecture",source:"@site/docs/design.md",sourceDirName:".",slug:"/design",permalink:"/docs/design",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/design.md",tags:[],version:"current",sidebarPosition:20,frontMatter:{sidebar_position:20},sidebar:"tutorialSidebar",previous:{title:"Use-cases",permalink:"/docs/usage/usecases"},next:{title:"Comparison",permalink:"/docs/comparison"}},o={},p=[{value:"Architecture",id:"architecture",level:2},{value:"Objectives",id:"objectives",level:2},{value:"Related RFCs",id:"related-rfcs",level:2}],c={toc:p};function m(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"design"},"Design"),(0,i.kt)("h2",{id:"architecture"},"Architecture"),(0,i.kt)("p",null,(0,i.kt)("img",{src:a(5526).Z,width:"901",height:"629"})),(0,i.kt)("h2",{id:"objectives"},"Objectives"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Encrypt all signaling messages")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Plug-able signaling backends:"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"GRPC"),(0,i.kt)("li",{parentName:"ul"},"Kubernetes API-server"),(0,i.kt)("li",{parentName:"ul"},"WebSocket"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support ",(0,i.kt)("a",{parentName:"p",href:"https://datatracker.ietf.org/doc/html/rfc8838"},"Trickle ICE"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support ",(0,i.kt)("a",{parentName:"p",href:"https://datatracker.ietf.org/doc/html/rfc8445#section-2.4"},"ICE restart"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support ",(0,i.kt)("a",{parentName:"p",href:"https://datatracker.ietf.org/doc/html/rfc6544"},"ICE-TCP"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Encrypt exchanged ICE offers with WireGuard keys")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Seamless switch between ICE candidates and relays")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Zero configuration"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Alleviate users of exchanging endpoint IPs & ports"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Enables direct communication of WireGuard peers behind NAT / UDP-blocking firewalls")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Single-binary, zero dependency installation"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Bundled ICE agent & ",(0,i.kt)("a",{parentName:"li",href:"https://git.zx2c4.com/wireguard-go"},"WireGuard user-space daemon")),(0,i.kt)("li",{parentName:"ul"},"Portability"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support for user and kernel-space WireGuard implementations")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Zero performance impact"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Kernel-side filtering / redirection of WireGuard traffic"),(0,i.kt)("li",{parentName:"ul"},"Fallback to user-space proxying only if no Kernel features are available "))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Minimized attack surface"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Drop privileges after initial configuration"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Compatible with existing WireGuard configuration utilities like:"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/max-moser/network-manager-wireguard"},"NetworkManager")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.freedesktop.org/software/systemd/man/systemd.netdev.html#%5BWireGuard%5D%20Section%20Options"},"systemd-networkd")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://manpages.debian.org/unstable/wireguard-tools/wg-quick.8.en.html"},"wg-quick")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://kilo.squat.ai"},"Kilo")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://seashell.github.io/drago/"},"drago")))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Monitoring for new WireGuard interfaces and peers"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Inotify for new UAPI sockets in /var/run/wireguard"),(0,i.kt)("li",{parentName:"ul"},"Netlink subscription for link updates (patch is pending)")))),(0,i.kt)("h2",{id:"related-rfcs"},"Related RFCs"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc6544"},"RFC6544")," TCP Candidates with Interactive Connectivity Establishment (ICE)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8838"},"RFC8838")," Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8445"},"RFC8445")," Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8863"},"RFC8863")," Interactive Connectivity Establishment Patiently Awaiting Connectivity (ICE PAC)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8839"},"RFC8839")," Session Description Protocol (SDP) Offer/Answer Procedures for Interactive Connectivity Establishment (ICE)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc6062"},"RFC6062")," Traversal Using Relays around NAT (TURN) Extensions for TCP Allocations"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8656"},"RFC8656")," Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8489"},"RFC8489")," Session Traversal Utilities for NAT (STUN)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8866"},"RFC8866")," SDP: Session Description Protocol"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc3264"},"RFC3264")," An Offer/Answer Model with the Session Description Protocol (SDP)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc7064"},"RFC7064")," URI Scheme for the Session Traversal Utilities for NAT (STUN) Protocol"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc7065"},"RFC7065")," Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers")))}m.isMDXComponent=!0},5526:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/architecture-698f935e44bbe4e44537cc165a669ff3.svg"}}]); \ No newline at end of file diff --git a/assets/js/0aeccac2.99c5053f.js b/assets/js/0aeccac2.99c5053f.js deleted file mode 100644 index 15351474..00000000 --- a/assets/js/0aeccac2.99c5053f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[414],{6512:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>m,frontMatter:()=>n,metadata:()=>s,toc:()=>p});var r=a(7462),i=(a(7294),a(3905));a(1839);const n={sidebar_position:20},l="Design",s={unversionedId:"design",id:"design",title:"Design",description:"Objectives",source:"@site/docs/design.md",sourceDirName:".",slug:"/design",permalink:"/docs/design",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/design.md",tags:[],version:"current",sidebarPosition:20,frontMatter:{sidebar_position:20},sidebar:"tutorialSidebar",previous:{title:"Use-cases",permalink:"/docs/usage/usecases"},next:{title:"Comparison",permalink:"/docs/comparison"}},o={},p=[{value:"Objectives",id:"objectives",level:2},{value:"Architecture",id:"architecture",level:2},{value:"Related RFCs",id:"related-rfcs",level:2}],c={toc:p};function m(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"design"},"Design"),(0,i.kt)("h2",{id:"objectives"},"Objectives"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Encrypt all signaling messages")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Plug-able signaling backends:"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"GRPC"),(0,i.kt)("li",{parentName:"ul"},"Kubernetes API-server"),(0,i.kt)("li",{parentName:"ul"},"WebSocket"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support ",(0,i.kt)("a",{parentName:"p",href:"https://datatracker.ietf.org/doc/html/rfc8838"},"Trickle ICE"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support ",(0,i.kt)("a",{parentName:"p",href:"https://datatracker.ietf.org/doc/html/rfc8445#section-2.4"},"ICE restart"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support ",(0,i.kt)("a",{parentName:"p",href:"https://datatracker.ietf.org/doc/html/rfc6544"},"ICE-TCP"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Encrypt exchanged ICE offers with WireGuard keys")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Seamless switch between ICE candidates and relays")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Zero configuration"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Alleviate users of exchanging endpoint IPs & ports"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Enables direct communication of WireGuard peers behind NAT / UDP-blocking firewalls")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Single-binary, zero dependency installation"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Bundled ICE agent & ",(0,i.kt)("a",{parentName:"li",href:"https://git.zx2c4.com/wireguard-go"},"WireGuard user-space daemon")),(0,i.kt)("li",{parentName:"ul"},"Portability"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Support for user and kernel-space WireGuard implementations")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Zero performance impact"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Kernel-side filtering / redirection of WireGuard traffic"),(0,i.kt)("li",{parentName:"ul"},"Fallback to user-space proxying only if no Kernel features are available "))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Minimized attack surface"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Drop privileges after initial configuration"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Compatible with existing WireGuard configuration utilities like:"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/max-moser/network-manager-wireguard"},"NetworkManager")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.freedesktop.org/software/systemd/man/systemd.netdev.html#%5BWireGuard%5D%20Section%20Options"},"systemd-networkd")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://manpages.debian.org/unstable/wireguard-tools/wg-quick.8.en.html"},"wg-quick")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://kilo.squat.ai"},"Kilo")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://seashell.github.io/drago/"},"drago")))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Monitoring for new WireGuard interfaces and peers"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Inotify for new UAPI sockets in /var/run/wireguard"),(0,i.kt)("li",{parentName:"ul"},"Netlink subscription for link updates (patch is pending)")))),(0,i.kt)("h2",{id:"architecture"},"Architecture"),(0,i.kt)("p",null,(0,i.kt)("img",{src:a(2215).Z,width:"901",height:"629"})),(0,i.kt)("h2",{id:"related-rfcs"},"Related RFCs"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc6544"},"RFC6544")," TCP Candidates with Interactive Connectivity Establishment (ICE)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8838"},"RFC8838")," Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8445"},"RFC8445")," Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8863"},"RFC8863")," Interactive Connectivity Establishment Patiently Awaiting Connectivity (ICE PAC)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8839"},"RFC8839")," Session Description Protocol (SDP) Offer/Answer Procedures for Interactive Connectivity Establishment (ICE)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc6062"},"RFC6062")," Traversal Using Relays around NAT (TURN) Extensions for TCP Allocations"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8656"},"RFC8656")," Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8489"},"RFC8489")," Session Traversal Utilities for NAT (STUN)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc8866"},"RFC8866")," SDP: Session Description Protocol"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://datatracker.ietf.org/doc/html/rfc3264"},"RFC3264")," An Offer/Answer Model with the Session Description Protocol (SDP)")))}m.isMDXComponent=!0},2215:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/architecture-698f935e44bbe4e44537cc165a669ff3.svg"}}]); \ No newline at end of file diff --git a/assets/js/17896441.2842905b.js b/assets/js/17896441.2842905b.js deleted file mode 100644 index c90adc2f..00000000 --- a/assets/js/17896441.2842905b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7918],{9055:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ue});var a=n(7294),l=n(1944),r=n(902);const s=a.createContext(null);function o(e){let{children:t,content:n}=e;const l=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(s.Provider,{value:l},t)}function c(){const e=(0,a.useContext)(s);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=c();return a.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var d=n(6010),m=n(7524),u=n(7462),v=n(5999),b=n(2244);function h(e){const{previous:t,next:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,v.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},t&&a.createElement(b.Z,(0,u.Z)({},t,{subLabel:a.createElement(v.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&a.createElement(b.Z,(0,u.Z)({},n,{subLabel:a.createElement(v.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function p(){const{metadata:e}=c();return a.createElement(h,{previous:e.previous,next:e.next})}var f=n(2263),E=n(9960),g=n(4104),L=n(5281),N=n(373),_=n(4477);const Z={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(v.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(v.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function k(e){const t=Z[e.versionMetadata.banner];return a.createElement(t,e)}function C(e){let{versionLabel:t,to:n,onClick:l}=e;return a.createElement(v.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(E.Z,{to:n,onClick:l},a.createElement(v.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function x(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:l}}=(0,f.Z)(),{pluginId:r}=(0,g.gA)({failfast:!0}),{savePreferredVersionName:s}=(0,N.J)(r),{latestDocSuggestion:o,latestVersionSuggestion:c}=(0,g.Jo)(r),i=o??(m=c).docs.find((e=>e.id===m.mainDocId));var m;return a.createElement("div",{className:(0,d.Z)(t,L.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(k,{siteTitle:l,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(C,{versionLabel:c.label,to:i.path,onClick:()=>s(c.name)})))}function T(e){let{className:t}=e;const n=(0,_.E)();return n.banner?a.createElement(x,{className:t,versionMetadata:n}):null}function H(e){let{className:t}=e;const n=(0,_.E)();return n.badge?a.createElement("span",{className:(0,d.Z)(t,L.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(v.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}function w(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(v.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function U(e){let{lastUpdatedBy:t}=e;return a.createElement(v.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function y(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:l}=e;return a.createElement("span",{className:L.k.common.lastUpdated},a.createElement(v.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(w,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:l?a.createElement(U,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var A=n(4881),M=n(1526);const I="lastUpdated_vwxv";function B(e){return a.createElement("div",{className:(0,d.Z)(L.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(M.Z,e)))}function V(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(L.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(A.Z,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",I)},(n||l)&&a.createElement(y,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function O(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:s}=e,o=s.length>0,i=!!(t||n||r);return o||i?a.createElement("footer",{className:(0,d.Z)(L.k.docs.docFooter,"docusaurus-mt-lg")},o&&a.createElement(B,{tags:s}),i&&a.createElement(V,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var P=n(6043),S=n(3743);const D="tocCollapsibleButton_TO0P",R="tocCollapsibleButtonExpanded_MG3E";function z(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,u.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",D,!t&&R,n.className)}),a.createElement(v.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const F="tocCollapsible_ETCw",q="tocCollapsibleContent_vkbj",j="tocCollapsibleExpanded_sAul";function G(e){let{toc:t,className:n,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:s,toggleCollapsed:o}=(0,P.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(F,!s&&j,n)},a.createElement(z,{collapsed:s,onClick:o}),a.createElement(P.z,{lazy:!0,className:q,collapsed:s},a.createElement(S.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const $="tocMobile_ITEo";function J(){const{toc:e,frontMatter:t}=c();return a.createElement(G,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(L.k.docs.docTocMobile,$)})}var Q=n(9407);function W(){const{toc:e,frontMatter:t}=c();return a.createElement(Q.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:L.k.docs.docTocDesktop})}var X=n(2503),K=n(210);function Y(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(L.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(X.Z,{as:"h1"},n)),a.createElement(K.Z,null,t))}var ee=n(2802),te=n(8596),ne=n(4996);function ae(e){return a.createElement("svg",(0,u.Z)({viewBox:"0 0 24 24"},e),a.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const le={breadcrumbsContainer:"breadcrumbsContainer_Z_bl",breadcrumbHomeIcon:"breadcrumbHomeIcon_OVgt"};function re(e){let{children:t,href:n,isLast:l}=e;const r="breadcrumbs__link";return l?a.createElement("span",{className:r,itemProp:"name"},t):n?a.createElement(E.Z,{className:r,href:n,itemProp:"item"},a.createElement("span",{itemProp:"name"},t)):a.createElement("span",{className:r},t)}function se(e){let{children:t,active:n,index:l,addMicrodata:r}=e;return a.createElement("li",(0,u.Z)({},r&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,d.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,a.createElement("meta",{itemProp:"position",content:String(l+1)}))}function oe(){const e=(0,ne.Z)("/");return a.createElement("li",{className:"breadcrumbs__item"},a.createElement(E.Z,{"aria-label":(0,v.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:(0,d.Z)("breadcrumbs__link",le.breadcrumbsItemLink),href:e},a.createElement(ae,{className:le.breadcrumbHomeIcon})))}function ce(){const e=(0,ee.s1)(),t=(0,te.Ns)();return e?a.createElement("nav",{className:(0,d.Z)(L.k.docs.docBreadcrumbs,le.breadcrumbsContainer),"aria-label":(0,v.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},a.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&a.createElement(oe,null),e.map(((t,n)=>{const l=n===e.length-1;return a.createElement(se,{key:n,active:l,index:n,addMicrodata:!!t.href},a.createElement(re,{href:t.href,isLast:l},t.label))})))):null}const ie="docItemContainer_Djhp",de="docItemCol_VOVn";function me(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?a.createElement(J,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(W,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&de)},a.createElement(T,null),a.createElement("div",{className:ie},a.createElement("article",null,a.createElement(ce,null),a.createElement(H,null),n.mobile,a.createElement(Y,null,t),a.createElement(O,null)),a.createElement(p,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function ue(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(o,{content:e.content},a.createElement(l.FG,{className:t},a.createElement(i,null),a.createElement(me,null,a.createElement(n,null))))}},4881:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(7294),l=n(5999),r=n(5281),s=n(7462),o=n(6010);const c="iconEdit_Z9Sw";function i(e){let{className:t,...n}=e;return a.createElement("svg",(0,s.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(c,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function d(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},a.createElement(i,null),a.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},2244:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7294),l=n(6010),r=n(9960);function s(e){const{permalink:t,title:n,subLabel:s,isNext:o}=e;return a.createElement(r.Z,{className:(0,l.Z)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},s&&a.createElement("div",{className:"pagination-nav__sublabel"},s),a.createElement("div",{className:"pagination-nav__label"},n))}},9407:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(7462),l=n(7294),r=n(6010),s=n(3743);const o="tableOfContents_bqdL";function c(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(o,"thin-scrollbar",t)},l.createElement(s.Z,(0,a.Z)({},n,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},3743:(e,t,n)=>{n.d(t,{Z:()=>b});var a=n(7462),l=n(7294),r=n(6668);function s(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function o(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=o({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,l.useRef)(void 0),n=d();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:s}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),o=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:s}),c=i(o,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===d)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const v=l.memo(u);function b(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...b}=e;const h=(0,r.L)(),p=d??h.tableOfContents.minHeadingLevel,f=u??h.tableOfContents.maxHeadingLevel,E=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>o({toc:s(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:f});return m((0,l.useMemo)((()=>{if(c&&i)return{linkClassName:c,linkActiveClassName:i,minHeadingLevel:p,maxHeadingLevel:f}}),[c,i,p,f])),l.createElement(v,(0,a.Z)({toc:E,className:n,linkClassName:c},b))}},3008:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),l=n(6010),r=n(9960);const s="tag_zVej",o="tagRegular_sFm0",c="tagWithCount_h2kH";function i(e){let{permalink:t,label:n,count:i}=e;return a.createElement(r.Z,{href:t,className:(0,l.Z)(s,i?c:o)},n,i&&a.createElement("span",null,i))}},1526:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),l=n(6010),r=n(5999),s=n(3008);const o="tags_jXut",c="tag_QGVx";function i(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,l.Z)(o,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:c},a.createElement(s.Z,{label:t,permalink:n}))}))))}},4477:(e,t,n)=>{n.d(t,{E:()=>o,q:()=>s});var a=n(7294),l=n(902);const r=a.createContext(null);function s(e){let{children:t,version:n}=e;return a.createElement(r.Provider,{value:n},t)}function o(){const e=(0,a.useContext)(r);if(null===e)throw new l.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/assets/js/17896441.32c4f63e.js b/assets/js/17896441.32c4f63e.js new file mode 100644 index 00000000..18a3296d --- /dev/null +++ b/assets/js/17896441.32c4f63e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7918],{9055:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ue});var a=n(7294),l=n(1944),r=n(902);const s=a.createContext(null);function o(e){let{children:t,content:n}=e;const l=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(s.Provider,{value:l},t)}function c(){const e=(0,a.useContext)(s);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=c();return a.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var d=n(6010),m=n(7524),u=n(7462),v=n(5999),b=n(2244);function h(e){const{previous:t,next:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,v.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},t&&a.createElement(b.Z,(0,u.Z)({},t,{subLabel:a.createElement(v.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&a.createElement(b.Z,(0,u.Z)({},n,{subLabel:a.createElement(v.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function f(){const{metadata:e}=c();return a.createElement(h,{previous:e.previous,next:e.next})}var p=n(2263),E=n(9960),g=n(4104),L=n(5281),N=n(373),k=n(4477);const Z={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(v.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(v.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function _(e){const t=Z[e.versionMetadata.banner];return a.createElement(t,e)}function C(e){let{versionLabel:t,to:n,onClick:l}=e;return a.createElement(v.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(E.Z,{to:n,onClick:l},a.createElement(v.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function x(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:l}}=(0,p.Z)(),{pluginId:r}=(0,g.gA)({failfast:!0}),{savePreferredVersionName:s}=(0,N.J)(r),{latestDocSuggestion:o,latestVersionSuggestion:c}=(0,g.Jo)(r),i=o??(m=c).docs.find((e=>e.id===m.mainDocId));var m;return a.createElement("div",{className:(0,d.Z)(t,L.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(_,{siteTitle:l,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(C,{versionLabel:c.label,to:i.path,onClick:()=>s(c.name)})))}function T(e){let{className:t}=e;const n=(0,k.E)();return n.banner?a.createElement(x,{className:t,versionMetadata:n}):null}function H(e){let{className:t}=e;const n=(0,k.E)();return n.badge?a.createElement("span",{className:(0,d.Z)(t,L.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(v.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}function U(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(v.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function w(e){let{lastUpdatedBy:t}=e;return a.createElement(v.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function y(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:l}=e;return a.createElement("span",{className:L.k.common.lastUpdated},a.createElement(v.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(U,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:l?a.createElement(w,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var A=n(4881),M=n(1526);const I="lastUpdated_vwxv";function B(e){return a.createElement("div",{className:(0,d.Z)(L.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(M.Z,e)))}function O(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(L.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(A.Z,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",I)},(n||l)&&a.createElement(y,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function V(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:s}=e,o=s.length>0,i=!!(t||n||r);return o||i?a.createElement("footer",{className:(0,d.Z)(L.k.docs.docFooter,"docusaurus-mt-lg")},o&&a.createElement(B,{tags:s}),i&&a.createElement(O,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var S=n(6043),P=n(3743);const D="tocCollapsibleButton_TO0P",R="tocCollapsibleButtonExpanded_MG3E";function z(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,u.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",D,!t&&R,n.className)}),a.createElement(v.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const F="tocCollapsible_ETCw",q="tocCollapsibleContent_vkbj",j="tocCollapsibleExpanded_sAul";function $(e){let{toc:t,className:n,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:s,toggleCollapsed:o}=(0,S.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(F,!s&&j,n)},a.createElement(z,{collapsed:s,onClick:o}),a.createElement(S.z,{lazy:!0,className:q,collapsed:s},a.createElement(P.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const G="tocMobile_ITEo";function J(){const{toc:e,frontMatter:t}=c();return a.createElement($,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(L.k.docs.docTocMobile,G)})}var K=n(9407);function Q(){const{toc:e,frontMatter:t}=c();return a.createElement(K.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:L.k.docs.docTocDesktop})}var W=n(2503),X=n(5203);function Y(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(L.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(W.Z,{as:"h1"},n)),a.createElement(X.Z,null,t))}var ee=n(2802),te=n(8596),ne=n(4996);function ae(e){return a.createElement("svg",(0,u.Z)({viewBox:"0 0 24 24"},e),a.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const le={breadcrumbsContainer:"breadcrumbsContainer_Z_bl",breadcrumbHomeIcon:"breadcrumbHomeIcon_OVgt"};function re(e){let{children:t,href:n,isLast:l}=e;const r="breadcrumbs__link";return l?a.createElement("span",{className:r,itemProp:"name"},t):n?a.createElement(E.Z,{className:r,href:n,itemProp:"item"},a.createElement("span",{itemProp:"name"},t)):a.createElement("span",{className:r},t)}function se(e){let{children:t,active:n,index:l,addMicrodata:r}=e;return a.createElement("li",(0,u.Z)({},r&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,d.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,a.createElement("meta",{itemProp:"position",content:String(l+1)}))}function oe(){const e=(0,ne.Z)("/");return a.createElement("li",{className:"breadcrumbs__item"},a.createElement(E.Z,{"aria-label":(0,v.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:(0,d.Z)("breadcrumbs__link",le.breadcrumbsItemLink),href:e},a.createElement(ae,{className:le.breadcrumbHomeIcon})))}function ce(){const e=(0,ee.s1)(),t=(0,te.Ns)();return e?a.createElement("nav",{className:(0,d.Z)(L.k.docs.docBreadcrumbs,le.breadcrumbsContainer),"aria-label":(0,v.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},a.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&a.createElement(oe,null),e.map(((t,n)=>{const l=n===e.length-1;return a.createElement(se,{key:n,active:l,index:n,addMicrodata:!!t.href},a.createElement(re,{href:t.href,isLast:l},t.label))})))):null}const ie="docItemContainer_Djhp",de="docItemCol_VOVn";function me(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?a.createElement(J,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(Q,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&de)},a.createElement(T,null),a.createElement("div",{className:ie},a.createElement("article",null,a.createElement(ce,null),a.createElement(H,null),n.mobile,a.createElement(Y,null,t),a.createElement(V,null)),a.createElement(f,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function ue(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(o,{content:e.content},a.createElement(l.FG,{className:t},a.createElement(i,null),a.createElement(me,null,a.createElement(n,null))))}},9407:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(7462),l=n(7294),r=n(6010),s=n(3743);const o="tableOfContents_bqdL";function c(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(o,"thin-scrollbar",t)},l.createElement(s.Z,(0,a.Z)({},n,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},3743:(e,t,n)=>{n.d(t,{Z:()=>b});var a=n(7462),l=n(7294),r=n(6668);function s(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function o(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=o({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,l.useRef)(void 0),n=d();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:s}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),o=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:s}),c=i(o,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===d)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const v=l.memo(u);function b(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...b}=e;const h=(0,r.L)(),f=d??h.tableOfContents.minHeadingLevel,p=u??h.tableOfContents.maxHeadingLevel,E=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>o({toc:s(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:f,maxHeadingLevel:p});return m((0,l.useMemo)((()=>{if(c&&i)return{linkClassName:c,linkActiveClassName:i,minHeadingLevel:f,maxHeadingLevel:p}}),[c,i,f,p])),l.createElement(v,(0,a.Z)({toc:E,className:n,linkClassName:c},b))}},4477:(e,t,n)=>{n.d(t,{E:()=>o,q:()=>s});var a=n(7294),l=n(902);const r=a.createContext(null);function s(e){let{children:t,version:n}=e;return a.createElement(r.Provider,{value:n},t)}function o(){const e=(0,a.useContext)(r);if(null===e)throw new l.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/assets/js/1cd45622.d8375f23.js b/assets/js/1cd45622.d8375f23.js deleted file mode 100644 index 161d747b..00000000 --- a/assets/js/1cd45622.d8375f23.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7810],{4719:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>n,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>r});var l=o(7462),s=(o(7294),o(3905));const a={slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]},n=void 0,c={permalink:"/blog/welcome",editUrl:"https://github.com/stv0g/cunicu/master/website/blog/2022-09-08-welcome/index.md",source:"@site/blog/2022-09-08-welcome/index.md",title:"Welcome",description:"Hello, welcome to the cun\u012bcu blog. We will start posting some updates here soon.",date:"2022-09-08T00:00:00.000Z",formattedDate:"September 8, 2022",tags:[{label:"hello",permalink:"/blog/tags/hello"}],readingTime:.07,hasTruncateMarker:!1,authors:[{name:"Steffen Vogel",title:"Maintainer of cun\u012bcu",url:"https://github.com/stv0g",imageURL:"https://github.com/stv0g.png",key:"stv0g"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]}},i={authorsImageUrls:[void 0]},r=[],m={toc:r};function u(e){let{components:t,...o}=e;return(0,s.kt)("wrapper",(0,l.Z)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"Hello, welcome to the cun\u012bcu blog. We will start posting some updates here soon."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.b095e869.js b/assets/js/1f391b9e.b095e869.js deleted file mode 100644 index 17bd4275..00000000 --- a/assets/js/1f391b9e.b095e869.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3085],{4247:(e,n,t)=>{t.r(n),t.d(n,{default:()=>d});var l=t(7294),a=t(6010),c=t(1944),r=t(5281),i=t(4931),o=t(210),s=t(9407);const m="mdxPageWrapper_j9I6";function d(e){const{content:n}=e,{metadata:{title:t,description:d,frontMatter:u}}=n,{wrapperClassName:f,hide_table_of_contents:v}=u;return l.createElement(c.FG,{className:(0,a.Z)(f??r.k.wrapper.mdxPages,r.k.page.mdxPage)},l.createElement(c.d,{title:t,description:d}),l.createElement(i.Z,null,l.createElement("main",{className:"container container--fluid margin-vert--lg"},l.createElement("div",{className:(0,a.Z)("row",m)},l.createElement("div",{className:(0,a.Z)("col",!v&&"col--8")},l.createElement("article",null,l.createElement(o.Z,null,l.createElement(n,null)))),!v&&n.toc.length>0&&l.createElement("div",{className:"col col--2"},l.createElement(s.Z,{toc:n.toc,minHeadingLevel:u.toc_min_heading_level,maxHeadingLevel:u.toc_max_heading_level}))))))}},9407:(e,n,t)=>{t.d(n,{Z:()=>o});var l=t(7462),a=t(7294),c=t(6010),r=t(3743);const i="tableOfContents_bqdL";function o(e){let{className:n,...t}=e;return a.createElement("div",{className:(0,c.Z)(i,"thin-scrollbar",n)},a.createElement(r.Z,(0,l.Z)({},t,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},3743:(e,n,t)=>{t.d(n,{Z:()=>v});var l=t(7462),a=t(7294),c=t(6668);function r(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const l=t.slice(2,e.level);e.parentIndex=Math.max(...l),t[e.level]=n}));const l=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):l.push(a)})),l}function i(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:l}=e;return n.flatMap((e=>{const n=i({toc:e.children,minHeadingLevel:t,maxHeadingLevel:l});return function(e){return e.level>=t&&e.level<=l}(e)?[{...e,children:n}]:n}))}function o(e){const n=e.getBoundingClientRect();return n.top===n.bottom?o(e.parentNode):n}function s(e,n){let{anchorTopOffset:t}=n;const l=e.find((e=>o(e).top>=t));if(l){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,a.useRef)(void 0),t=m();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:l,linkActiveClassName:a,minHeadingLevel:c,maxHeadingLevel:r}=e;function i(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(l),i=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const l=[];for(let a=n;a<=t;a+=1)l.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(l.join()))}({minHeadingLevel:c,maxHeadingLevel:r}),o=s(i,{anchorTopOffset:t.current}),m=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===m)}))}return document.addEventListener("scroll",i),document.addEventListener("resize",i),i(),()=>{document.removeEventListener("scroll",i),document.removeEventListener("resize",i)}}),[e,t])}function u(e){let{toc:n,className:t,linkClassName:l,isChild:c}=e;return n.length?a.createElement("ul",{className:c?void 0:t},n.map((e=>a.createElement("li",{key:e.id},a.createElement("a",{href:`#${e.id}`,className:l??void 0,dangerouslySetInnerHTML:{__html:e.value}}),a.createElement(u,{isChild:!0,toc:e.children,className:t,linkClassName:l}))))):null}const f=a.memo(u);function v(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...v}=e;const g=(0,c.L)(),h=m??g.tableOfContents.minHeadingLevel,L=u??g.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:l}=e;return(0,a.useMemo)((()=>i({toc:r(n),minHeadingLevel:t,maxHeadingLevel:l})),[n,t,l])}({toc:n,minHeadingLevel:h,maxHeadingLevel:L});return d((0,a.useMemo)((()=>{if(o&&s)return{linkClassName:o,linkActiveClassName:s,minHeadingLevel:h,maxHeadingLevel:L}}),[o,s,h,L])),a.createElement(f,(0,l.Z)({toc:p,className:t,linkClassName:o},v))}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.fcd1ef93.js b/assets/js/1f391b9e.fcd1ef93.js new file mode 100644 index 00000000..1d708bd1 --- /dev/null +++ b/assets/js/1f391b9e.fcd1ef93.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3085],{2503:(e,n,t)=>{t.d(n,{Z:()=>m});var a=t(7462),l=t(7294),i=t(6010),r=t(5999),o=t(6668);const c="anchorWithStickyNavbar_LWe7",s="anchorWithHideOnScrollNavbar_WYt5";function m(e){let{as:n,id:t,...m}=e;const{navbar:{hideOnScroll:d}}=(0,o.L)();return"h1"!==n&&t?l.createElement(n,(0,a.Z)({},m,{className:(0,i.Z)("anchor",d?s:c),id:t}),m.children,l.createElement("a",{className:"hash-link",href:`#${t}`,title:(0,r.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):l.createElement(n,(0,a.Z)({},m,{id:void 0}))}},5203:(e,n,t)=>{t.d(n,{Z:()=>S});var a=t(7294),l=t(3905),i=t(7462),r=t(5742);var o=t(814);var c=t(9960);var s=t(6010),m=t(2389),d=t(6043);const u="details_lb9f",f="isBrowser_bmU9",v="collapsibleContent_i85q";function h(e){return!!e&&("SUMMARY"===e.tagName||h(e.parentElement))}function p(e,n){return!!e&&(e===n||p(e.parentElement,n))}function E(e){let{summary:n,children:t,...l}=e;const r=(0,m.Z)(),o=(0,a.useRef)(null),{collapsed:c,setCollapsed:E}=(0,d.u)({initialState:!l.open}),[g,N]=(0,a.useState)(l.open);return a.createElement("details",(0,i.Z)({},l,{ref:o,open:g,"data-collapsed":c,className:(0,s.Z)(u,r&&f,l.className),onMouseDown:e=>{h(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const n=e.target;h(n)&&p(n,o.current)&&(e.preventDefault(),c?(E(!1),N(!0)):E(!0))}}),n??a.createElement("summary",null,"Details"),a.createElement(d.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{E(e),N(!e)}},a.createElement("div",{className:v},t)))}const g="details_b_Ee";function N(e){let{...n}=e;return a.createElement(E,(0,i.Z)({},n,{className:(0,s.Z)("alert alert--info",g,n.className)}))}var C=t(2503);function L(e){return a.createElement(C.Z,e)}const Z="containsTaskList_mC6p";const b="img_ev3q";var y=t(5281),H=t(5999);const x="admonition_LlT9",_="admonitionHeading_tbUL",k="admonitionIcon_kALy",T="admonitionContent_S0QG";const z={note:{infimaClassName:"secondary",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:a.createElement(H.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:a.createElement(H.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:a.createElement(H.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:a.createElement(H.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 16 16"},a.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:a.createElement(H.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},w={secondary:"note",important:"info",success:"tip",warning:"danger"};function M(e){const{mdxAdmonitionTitle:n,rest:t}=function(e){const n=a.Children.toArray(e),t=n.find((e=>{var n;return a.isValidElement(e)&&"mdxAdmonitionTitle"===(null==(n=e.props)?void 0:n.mdxType)})),l=a.createElement(a.Fragment,null,n.filter((e=>e!==t)));return{mdxAdmonitionTitle:t,rest:l}}(e.children);return{...e,title:e.title??n,children:t}}const A={head:function(e){const n=a.Children.map(e.children,(e=>a.isValidElement(e)?function(e){var n;if(null!=(n=e.props)&&n.mdxType&&e.props.originalType){const{mdxType:n,originalType:t,...l}=e.props;return a.createElement(e.props.originalType,l)}return e}(e):e));return a.createElement(r.Z,e,n)},code:function(e){const n=["a","b","big","i","span","em","strong","sup","sub","small"];return a.Children.toArray(e.children).every((e=>{var t;return"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&n.includes(null==(t=e.props)?void 0:t.mdxType)}))?a.createElement("code",e):a.createElement(o.Z,e)},a:function(e){return a.createElement(c.Z,e)},pre:function(e){var n;return a.createElement(o.Z,(0,a.isValidElement)(e.children)&&"code"===(null==(n=e.children.props)?void 0:n.originalType)?e.children.props:{...e})},details:function(e){const n=a.Children.toArray(e.children),t=n.find((e=>{var n;return a.isValidElement(e)&&"summary"===(null==(n=e.props)?void 0:n.mdxType)})),l=a.createElement(a.Fragment,null,n.filter((e=>e!==t)));return a.createElement(N,(0,i.Z)({},e,{summary:t}),l)},ul:function(e){return a.createElement("ul",(0,i.Z)({},e,{className:(n=e.className,(0,s.Z)(n,(null==n?void 0:n.includes("contains-task-list"))&&Z))}));var n},img:function(e){return a.createElement("img",(0,i.Z)({loading:"lazy"},e,{className:(n=e.className,(0,s.Z)(n,b))}));var n},h1:e=>a.createElement(L,(0,i.Z)({as:"h1"},e)),h2:e=>a.createElement(L,(0,i.Z)({as:"h2"},e)),h3:e=>a.createElement(L,(0,i.Z)({as:"h3"},e)),h4:e=>a.createElement(L,(0,i.Z)({as:"h4"},e)),h5:e=>a.createElement(L,(0,i.Z)({as:"h5"},e)),h6:e=>a.createElement(L,(0,i.Z)({as:"h6"},e)),admonition:function(e){const{children:n,type:t,title:l,icon:i}=M(e),r=function(e){const n=w[e]??e;return z[n]||(console.warn(`No admonition config found for admonition type "${n}". Using Info as fallback.`),z.info)}(t),o=l??r.label,{iconComponent:c}=r,m=i??a.createElement(c,null);return a.createElement("div",{className:(0,s.Z)(y.k.common.admonition,y.k.common.admonitionType(e.type),"alert",`alert--${r.infimaClassName}`,x)},a.createElement("div",{className:_},a.createElement("span",{className:k},m),o),a.createElement("div",{className:T},n))}};function S(e){let{children:n}=e;return a.createElement(l.Zo,{components:A},n)}},4247:(e,n,t)=>{t.r(n),t.d(n,{default:()=>d});var a=t(7294),l=t(6010),i=t(1944),r=t(5281),o=t(4931),c=t(5203),s=t(9407);const m="mdxPageWrapper_j9I6";function d(e){const{content:n}=e,{metadata:{title:t,description:d,frontMatter:u}}=n,{wrapperClassName:f,hide_table_of_contents:v}=u;return a.createElement(i.FG,{className:(0,l.Z)(f??r.k.wrapper.mdxPages,r.k.page.mdxPage)},a.createElement(i.d,{title:t,description:d}),a.createElement(o.Z,null,a.createElement("main",{className:"container container--fluid margin-vert--lg"},a.createElement("div",{className:(0,l.Z)("row",m)},a.createElement("div",{className:(0,l.Z)("col",!v&&"col--8")},a.createElement("article",null,a.createElement(c.Z,null,a.createElement(n,null)))),!v&&n.toc.length>0&&a.createElement("div",{className:"col col--2"},a.createElement(s.Z,{toc:n.toc,minHeadingLevel:u.toc_min_heading_level,maxHeadingLevel:u.toc_max_heading_level}))))))}},9407:(e,n,t)=>{t.d(n,{Z:()=>c});var a=t(7462),l=t(7294),i=t(6010),r=t(3743);const o="tableOfContents_bqdL";function c(e){let{className:n,...t}=e;return l.createElement("div",{className:(0,i.Z)(o,"thin-scrollbar",n)},l.createElement(r.Z,(0,a.Z)({},t,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},3743:(e,n,t)=>{t.d(n,{Z:()=>v});var a=t(7462),l=t(7294),i=t(6668);function r(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const a=t.slice(2,e.level);e.parentIndex=Math.max(...a),t[e.level]=n}));const a=[];return n.forEach((e=>{const{parentIndex:t,...l}=e;t>=0?n[t].children.push(l):a.push(l)})),a}function o(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return n.flatMap((e=>{const n=o({toc:e.children,minHeadingLevel:t,maxHeadingLevel:a});return function(e){return e.level>=t&&e.level<=a}(e)?[{...e,children:n}]:n}))}function c(e){const n=e.getBoundingClientRect();return n.top===n.bottom?c(e.parentNode):n}function s(e,n){let{anchorTopOffset:t}=n;const a=e.find((e=>c(e).top>=t));if(a){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,l.useRef)(void 0),t=m();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:i,maxHeadingLevel:r}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),o=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const a=[];for(let l=n;l<=t;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:i,maxHeadingLevel:r}),c=s(o,{anchorTopOffset:t.current}),m=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(l),e.classList.add(l),n.current=e):e.classList.remove(l)}(e,e===m)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,t])}function u(e){let{toc:n,className:t,linkClassName:a,isChild:i}=e;return n.length?l.createElement("ul",{className:i?void 0:t},n.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:t,linkClassName:a}))))):null}const f=l.memo(u);function v(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...v}=e;const h=(0,i.L)(),p=m??h.tableOfContents.minHeadingLevel,E=u??h.tableOfContents.maxHeadingLevel,g=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>o({toc:r(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:p,maxHeadingLevel:E});return d((0,l.useMemo)((()=>{if(c&&s)return{linkClassName:c,linkActiveClassName:s,minHeadingLevel:p,maxHeadingLevel:E}}),[c,s,p,E])),l.createElement(f,(0,a.Z)({toc:g,className:t,linkClassName:c},v))}}}]); \ No newline at end of file diff --git a/assets/js/210.25f60c65.js b/assets/js/210.25f60c65.js deleted file mode 100644 index d69ec924..00000000 --- a/assets/js/210.25f60c65.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkwice=self.webpackChunkwice||[]).push([[210],{2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(7462),a=n(7294),r=n(6010),l=n(5999),c=n(6668);const s="anchorWithStickyNavbar_LWe7",i="anchorWithHideOnScrollNavbar_WYt5";function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:m}}=(0,c.L)();return"h1"!==t&&n?a.createElement(t,(0,o.Z)({},u,{className:(0,r.Z)("anchor",m?i:s),id:n}),u.children,a.createElement("a",{className:"hash-link",href:`#${n}`,title:(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):a.createElement(t,(0,o.Z)({},u,{id:void 0}))}},210:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ye});var o=n(7294),a=n(3905),r=n(7462),l=n(5742);var c=n(2389),s=n(6010),i=n(2949),u=n(6668);function m(){const{prism:e}=(0,u.L)(),{colorMode:t}=(0,i.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}var d=n(5281),p=n(7594),h=n.n(p);const f=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,y={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function v(e,t){const n=e.map((e=>{const{start:n,end:o}=y[e];return`(?:${n}\\s*(${t.flatMap((e=>{var t,n;return[e.line,null==(t=e.block)?void 0:t.start,null==(n=e.block)?void 0:n.end].filter(Boolean)})).join("|")})\\s*${o})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function b(e,t){let n=e.replace(/\n$/,"");const{language:o,magicComments:a,metastring:r}=t;if(r&&g.test(r)){const e=r.match(g).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${r}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,o=h()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(o),code:n}}if(void 0===o)return{lineClassNames:{},code:n};const l=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return v(["js","jsBlock"],t);case"jsx":case"tsx":return v(["js","jsBlock","jsx"],t);case"html":return v(["js","jsBlock","html"],t);case"python":case"py":case"bash":return v(["bash"],t);case"markdown":case"md":return v(["html","jsx","bash"],t);default:return v(Object.keys(y),t)}}(o,a),c=n.split("\n"),s=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<c.length;){const e=c[p].match(l);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));i[t]?s[i[t]].range+=`${p},`:u[t]?s[u[t]].start=p:m[t]&&(s[m[t]].range+=`${s[m[t]].start}-${p-1},`),c.splice(p,1)}n=c.join("\n");const d={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;h()(n).forEach((e=>{d[e]??=[],d[e].push(t)}))})),{lineClassNames:d,code:n}}const E="codeBlockContainer_Ckt0";function k(e){let{as:t,...n}=e;const a=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[o,a]=e;const r=t[o];r&&"string"==typeof a&&(n[r]=a)})),n}(m());return o.createElement(t,(0,r.Z)({},n,{style:a,className:(0,s.Z)(n.className,E,d.k.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return o.createElement(k,{as:"pre",tabIndex:0,className:(0,s.Z)(N.codeBlockStandalone,"thin-scrollbar",n)},o.createElement("code",{className:N.codeBlockLines},t))}var B=n(902);const w={attributes:!0,characterData:!0,childList:!0,subtree:!0};function T(e,t){const[n,a]=(0,o.useState)(),r=(0,o.useCallback)((()=>{var t;a(null==(t=e.current)?void 0:t.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,o.useEffect)((()=>{r()}),[r]),function(e,t,n){void 0===n&&(n=w);const a=(0,B.zX)(t),r=(0,B.Ql)(n);(0,o.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,r),()=>t.disconnect()}),[e,a,r])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),r())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const L={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var Z={Prism:n(7410).Z,theme:L};function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(){return j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},j.apply(this,arguments)}var _=/\r\n|\r|\n/,S=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},z=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},A=function(e,t){var n=e.plain,o=Object.create(null),a=e.styles.reduce((function(e,n){var o=n.languages,a=n.style;return o&&!o.includes(t)||n.types.forEach((function(t){var n=j({},e[t],a);e[t]=n})),e}),o);return a.root=n,a.plain=j({},n,{backgroundColor:null}),a};function I(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(n[o]=e[o]);return n}const M=function(e){function t(){for(var t=this,n=[],o=arguments.length;o--;)n[o]=arguments[o];e.apply(this,n),x(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?A(e.theme,e.language):void 0;return t.themeDict=n})),x(this,"getLineProps",(function(e){var n=e.key,o=e.className,a=e.style,r=j({},I(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),l=t.getThemeDict(t.props);return void 0!==l&&(r.style=l.plain),void 0!==a&&(r.style=void 0!==r.style?j({},r.style,a):a),void 0!==n&&(r.key=n),o&&(r.className+=" "+o),r})),x(this,"getStyleForToken",(function(e){var n=e.types,o=e.empty,a=n.length,r=t.getThemeDict(t.props);if(void 0!==r){if(1===a&&"plain"===n[0])return o?{display:"inline-block"}:void 0;if(1===a&&!o)return r[n[0]];var l=o?{display:"inline-block"}:{},c=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[l].concat(c))}})),x(this,"getTokenProps",(function(e){var n=e.key,o=e.className,a=e.style,r=e.token,l=j({},I(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:t.getStyleForToken(r),key:void 0});return void 0!==a&&(l.style=void 0!==l.style?j({},l.style,a):a),void 0!==n&&(l.key=n),o&&(l.className+=" "+o),l})),x(this,"tokenize",(function(e,t,n,o){var a={code:t,grammar:n,language:o,tokens:[]};e.hooks.run("before-tokenize",a);var r=a.tokens=e.tokenize(a.code,a.grammar,a.language);return e.hooks.run("after-tokenize",a),r}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,o=e.code,a=e.children,r=this.getThemeDict(this.props),l=t.languages[n];return a({tokens:function(e){for(var t=[[]],n=[e],o=[0],a=[e.length],r=0,l=0,c=[],s=[c];l>-1;){for(;(r=o[l]++)<a[l];){var i=void 0,u=t[l],m=n[l][r];if("string"==typeof m?(u=l>0?u:["plain"],i=m):(u=z(u,m.type),m.alias&&(u=z(u,m.alias)),i=m.content),"string"==typeof i){var d=i.split(_),p=d.length;c.push({types:u,content:d[0]});for(var h=1;h<p;h++)S(c),s.push(c=[]),c.push({types:u,content:d[h]})}else l++,t.push(u),n.push(i),o.push(0),a.push(i.length)}l--,t.pop(),n.pop(),o.pop(),a.pop()}return S(c),s}(void 0!==l?this.tokenize(t,o,l,n):[o]),className:"prism-code language-"+n,style:void 0!==r?r.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(o.Component),O="codeLine_lJS_",H="codeLineNumber_Tfdd",P="codeLineContent_feaV";function V(e){let{line:t,classNames:n,showLineNumbers:a,getLineProps:l,getTokenProps:c}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const i=l({line:t,className:(0,s.Z)(n,a&&O)}),u=t.map(((e,t)=>o.createElement("span",(0,r.Z)({key:t},c({token:e,key:t})))));return o.createElement("span",i,a?o.createElement(o.Fragment,null,o.createElement("span",{className:H}),o.createElement("span",{className:P},u)):o.createElement(o.Fragment,null,u,o.createElement("br",null)))}var D=n(5999);const R={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function $(e){let{code:t,className:n}=e;const[a,r]=(0,o.useState)(!1),l=(0,o.useRef)(void 0),c=(0,o.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;const o=document.createElement("textarea"),a=document.activeElement;o.value=e,o.setAttribute("readonly",""),o.style.contain="strict",o.style.position="absolute",o.style.left="-9999px",o.style.fontSize="12pt";const r=document.getSelection();let l=!1;r.rangeCount>0&&(l=r.getRangeAt(0)),n.append(o),o.select(),o.selectionStart=0,o.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch{}o.remove(),l&&(r.removeAllRanges(),r.addRange(l)),a&&a.focus()}(t),r(!0),l.current=window.setTimeout((()=>{r(!1)}),1e3)}),[t]);return(0,o.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),o.createElement("button",{type:"button","aria-label":a?(0,D.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,D.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,D.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,s.Z)("clean-btn",n,R.copyButton,a&&R.copyButtonCopied),onClick:c},o.createElement("span",{className:R.copyButtonIcons,"aria-hidden":"true"},o.createElement("svg",{className:R.copyButtonIcon,viewBox:"0 0 24 24"},o.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})),o.createElement("svg",{className:R.copyButtonSuccessIcon,viewBox:"0 0 24 24"},o.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const W="wordWrapButtonIcon_Bwma",F="wordWrapButtonEnabled_EoeP";function q(e){let{className:t,onClick:n,isEnabled:a}=e;const r=(0,D.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return o.createElement("button",{type:"button",onClick:n,className:(0,s.Z)("clean-btn",t,a&&F),"aria-label":r,title:r},o.createElement("svg",{className:W,viewBox:"0 0 24 24","aria-hidden":"true"},o.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})))}function G(e){let{children:t,className:n="",metastring:a,title:l,showLineNumbers:c,language:i}=e;const{prism:{defaultLanguage:d,magicComments:p}}=(0,u.L)(),h=i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return null==t?void 0:t.replace(/language-/,"")}(n)??d,g=m(),y=function(){const[e,t]=(0,o.useState)(!1),[n,a]=(0,o.useState)(!1),r=(0,o.useRef)(null),l=(0,o.useCallback)((()=>{const n=r.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[r,e]),c=(0,o.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");a(n)}),[r]);return T(r,c),(0,o.useEffect)((()=>{c()}),[e,c]),(0,o.useEffect)((()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)})),[c]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:l}}(),v=function(e){var t;return(null==e||null==(t=e.match(f))?void 0:t.groups.title)??""}(a)||l,{lineClassNames:E,code:C}=b(t,{metastring:a,language:h,magicComments:p}),B=c??function(e){return Boolean(null==e?void 0:e.includes("showLineNumbers"))}(a);return o.createElement(k,{as:"div",className:(0,s.Z)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`)},v&&o.createElement("div",{className:N.codeBlockTitle},v),o.createElement("div",{className:N.codeBlockContent},o.createElement(M,(0,r.Z)({},Z,{theme:g,code:C,language:h??"text"}),(e=>{let{className:t,tokens:n,getLineProps:a,getTokenProps:r}=e;return o.createElement("pre",{tabIndex:0,ref:y.codeBlockRef,className:(0,s.Z)(t,N.codeBlock,"thin-scrollbar")},o.createElement("code",{className:(0,s.Z)(N.codeBlockLines,B&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>o.createElement(V,{key:t,line:e,getLineProps:a,getTokenProps:r,classNames:E[t],showLineNumbers:B})))))})),o.createElement("div",{className:N.buttonGroup},(y.isEnabled||y.isCodeScrollable)&&o.createElement(q,{className:N.codeButton,onClick:()=>y.toggle(),isEnabled:y.isEnabled}),o.createElement($,{className:N.codeButton,code:C}))))}function U(e){let{children:t,...n}=e;const a=(0,c.Z)(),l=function(e){return o.Children.toArray(e).some((e=>(0,o.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),s="string"==typeof l?G:C;return o.createElement(s,(0,r.Z)({key:String(a)},n),l)}var Y=n(9960);var Q=n(6043);const J="details_lb9f",K="isBrowser_bmU9",X="collapsibleContent_i85q";function ee(e){return!!e&&("SUMMARY"===e.tagName||ee(e.parentElement))}function te(e,t){return!!e&&(e===t||te(e.parentElement,t))}function ne(e){let{summary:t,children:n,...a}=e;const l=(0,c.Z)(),i=(0,o.useRef)(null),{collapsed:u,setCollapsed:m}=(0,Q.u)({initialState:!a.open}),[d,p]=(0,o.useState)(a.open);return o.createElement("details",(0,r.Z)({},a,{ref:i,open:d,"data-collapsed":u,className:(0,s.Z)(J,l&&K,a.className),onMouseDown:e=>{ee(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;ee(t)&&te(t,i.current)&&(e.preventDefault(),u?(m(!1),p(!0)):m(!0))}}),t??o.createElement("summary",null,"Details"),o.createElement(Q.z,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},o.createElement("div",{className:X},n)))}const oe="details_b_Ee";function ae(e){let{...t}=e;return o.createElement(ne,(0,r.Z)({},t,{className:(0,s.Z)("alert alert--info",oe,t.className)}))}var re=n(2503);function le(e){return o.createElement(re.Z,e)}const ce="containsTaskList_mC6p";const se="img_ev3q";const ie="admonition_LlT9",ue="admonitionHeading_tbUL",me="admonitionIcon_kALy",de="admonitionContent_S0QG";const pe={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(D.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(D.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(D.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(D.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(D.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},he={secondary:"note",important:"info",success:"tip",warning:"danger"};function fe(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=o.Children.toArray(e),n=t.find((e=>{var t;return o.isValidElement(e)&&"mdxAdmonitionTitle"===(null==(t=e.props)?void 0:t.mdxType)})),a=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:a}}(e.children);return{...e,title:e.title??t,children:n}}const ge={head:function(e){const t=o.Children.map(e.children,(e=>o.isValidElement(e)?function(e){var t;if(null!=(t=e.props)&&t.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...a}=e.props;return o.createElement(e.props.originalType,a)}return e}(e):e));return o.createElement(l.Z,e,t)},code:function(e){const t=["a","b","big","i","span","em","strong","sup","sub","small"];return o.Children.toArray(e.children).every((e=>{var n;return"string"==typeof e&&!e.includes("\n")||(0,o.isValidElement)(e)&&t.includes(null==(n=e.props)?void 0:n.mdxType)}))?o.createElement("code",e):o.createElement(U,e)},a:function(e){return o.createElement(Y.Z,e)},pre:function(e){var t;return o.createElement(U,(0,o.isValidElement)(e.children)&&"code"===(null==(t=e.children.props)?void 0:t.originalType)?e.children.props:{...e})},details:function(e){const t=o.Children.toArray(e.children),n=t.find((e=>{var t;return o.isValidElement(e)&&"summary"===(null==(t=e.props)?void 0:t.mdxType)})),a=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return o.createElement(ae,(0,r.Z)({},e,{summary:n}),a)},ul:function(e){return o.createElement("ul",(0,r.Z)({},e,{className:(t=e.className,(0,s.Z)(t,(null==t?void 0:t.includes("contains-task-list"))&&ce))}));var t},img:function(e){return o.createElement("img",(0,r.Z)({loading:"lazy"},e,{className:(t=e.className,(0,s.Z)(t,se))}));var t},h1:e=>o.createElement(le,(0,r.Z)({as:"h1"},e)),h2:e=>o.createElement(le,(0,r.Z)({as:"h2"},e)),h3:e=>o.createElement(le,(0,r.Z)({as:"h3"},e)),h4:e=>o.createElement(le,(0,r.Z)({as:"h4"},e)),h5:e=>o.createElement(le,(0,r.Z)({as:"h5"},e)),h6:e=>o.createElement(le,(0,r.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:a,icon:r}=fe(e),l=function(e){const t=he[e]??e;return pe[t]||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),pe.info)}(n),c=a??l.label,{iconComponent:i}=l,u=r??o.createElement(i,null);return o.createElement("div",{className:(0,s.Z)(d.k.common.admonition,d.k.common.admonitionType(e.type),"alert",`alert--${l.infimaClassName}`,ie)},o.createElement("div",{className:ue},o.createElement("span",{className:me},u),c),o.createElement("div",{className:de},t))}};function ye(e){let{children:t}=e;return o.createElement(a.Zo,{components:ge},t)}},7594:(e,t)=>{function n(e){let t,n=[];for(let o of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(o))n.push(parseInt(o,10));else if(t=o.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,o,a,r]=t;if(o&&r){o=parseInt(o),r=parseInt(r);const e=o<r?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(r+=e);for(let t=o;t!==r;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/5d77abb4.2ff62661.js b/assets/js/214ce059.1d15aadf.js similarity index 62% rename from assets/js/5d77abb4.2ff62661.js rename to assets/js/214ce059.1d15aadf.js index bb245ad7..48912a79 100644 --- a/assets/js/5d77abb4.2ff62661.js +++ b/assets/js/214ce059.1d15aadf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7192],{3769:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1173],{3769:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/2529.302363cc.js b/assets/js/2529.302363cc.js deleted file mode 100644 index 3471e43b..00000000 --- a/assets/js/2529.302363cc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2529],{9058:(e,t,a)=>{a.d(t,{Z:()=>N});var l=a(7294),n=a(6010),r=a(4931),s=a(7524),o=a(9960),i=a(5999);const c="sidebar_re4s",m="sidebarItemTitle_pO2u",u="sidebarItemList_Yudw",d="sidebarItem__DBe",g="sidebarItemLink_mo7H",p="sidebarItemLinkActive_I1ZP";function h(e){let{sidebar:t}=e;return l.createElement("aside",{className:"col col--3"},l.createElement("nav",{className:(0,n.Z)(c,"thin-scrollbar"),"aria-label":(0,i.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,n.Z)(m,"margin-bottom--md")},t.title),l.createElement("ul",{className:(0,n.Z)(u,"clean-list")},t.items.map((e=>l.createElement("li",{key:e.permalink,className:d},l.createElement(o.Z,{isNavLink:!0,to:e.permalink,className:g,activeClassName:p},e.title)))))))}var E=a(3102);function f(e){let{sidebar:t}=e;return l.createElement("ul",{className:"menu__list"},t.items.map((e=>l.createElement("li",{key:e.permalink,className:"menu__list-item"},l.createElement(o.Z,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active"},e.title)))))}function b(e){return l.createElement(E.Zo,{component:f,props:e})}function v(e){let{sidebar:t}=e;const a=(0,s.i)();return null!=t&&t.items.length?"mobile"===a?l.createElement(b,{sidebar:t}):l.createElement(h,{sidebar:t}):null}function N(e){const{sidebar:t,toc:a,children:s,...o}=e,i=t&&t.items.length>0;return l.createElement(r.Z,o,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},l.createElement(v,{sidebar:t}),l.createElement("main",{className:(0,n.Z)("col",{"col--7":i,"col--9 col--offset-1":!i}),itemScope:!0,itemType:"http://schema.org/Blog"},s),a&&l.createElement("div",{className:"col col--2"},a))))}},390:(e,t,a)=>{a.d(t,{Z:()=>R});var l=a(7294),n=a(6010),r=a(9460),s=a(4996);function o(e){let{children:t,className:a}=e;const{frontMatter:n,assets:o}=(0,r.C)(),{withBaseUrl:i}=(0,s.C)(),c=o.image??n.image;return l.createElement("article",{className:a,itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},c&&l.createElement("meta",{itemProp:"image",content:i(c,{absolute:!0})}),t)}var i=a(9960);const c="title_f1Hy";function m(e){let{className:t}=e;const{metadata:a,isBlogPostPage:s}=(0,r.C)(),{permalink:o,title:m}=a,u=s?"h1":"h2";return l.createElement(u,{className:(0,n.Z)(c,t),itemProp:"headline"},s?m:l.createElement(i.Z,{itemProp:"url",to:o},m))}var u=a(5999),d=a(8824);const g="container_mt6G";function p(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,d.c)();return t=>{const a=Math.ceil(t);return e(a,(0,u.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return l.createElement(l.Fragment,null,a(t))}function h(e){let{date:t,formattedDate:a}=e;return l.createElement("time",{dateTime:t,itemProp:"datePublished"},a)}function E(){return l.createElement(l.Fragment,null," \xb7 ")}function f(e){let{className:t}=e;const{metadata:a}=(0,r.C)(),{date:s,formattedDate:o,readingTime:i}=a;return l.createElement("div",{className:(0,n.Z)(g,"margin-vert--md",t)},l.createElement(h,{date:s,formattedDate:o}),void 0!==i&&l.createElement(l.Fragment,null,l.createElement(E,null),l.createElement(p,{readingTime:i})))}function b(e){return e.href?l.createElement(i.Z,e):l.createElement(l.Fragment,null,e.children)}function v(e){let{author:t,className:a}=e;const{name:r,title:s,url:o,imageURL:i,email:c}=t,m=o||c&&`mailto:${c}`||void 0;return l.createElement("div",{className:(0,n.Z)("avatar margin-bottom--sm",a)},i&&l.createElement(b,{href:m,className:"avatar__photo-link"},l.createElement("img",{className:"avatar__photo",src:i,alt:r})),r&&l.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},l.createElement("div",{className:"avatar__name"},l.createElement(b,{href:m,itemProp:"url"},l.createElement("span",{itemProp:"name"},r))),s&&l.createElement("small",{className:"avatar__subtitle",itemProp:"description"},s)))}const N="authorCol_Hf19",_="imageOnlyAuthorRow_pa_O",Z="imageOnlyAuthorCol_G86a";function P(e){let{className:t}=e;const{metadata:{authors:a},assets:s}=(0,r.C)();if(0===a.length)return null;const o=a.every((e=>{let{name:t}=e;return!t}));return l.createElement("div",{className:(0,n.Z)("margin-top--md margin-bottom--sm",o?_:"row",t)},a.map(((e,t)=>l.createElement("div",{className:(0,n.Z)(!o&&"col col--6",o?Z:N),key:t},l.createElement(v,{author:{...e,imageURL:s.authorsImageUrls[t]??e.imageURL}})))))}function k(){return l.createElement("header",null,l.createElement(m,null),l.createElement(f,null),l.createElement(P,null))}var w=a(8780),T=a(210);function C(e){let{children:t,className:a}=e;const{isBlogPostPage:s}=(0,r.C)();return l.createElement("div",{id:s?w.blogPostContainerID:void 0,className:(0,n.Z)("markdown",a),itemProp:"articleBody"},l.createElement(T.Z,null,t))}var y=a(4881),B=a(1526),F=a(7462);function I(){return l.createElement("b",null,l.createElement(u.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))}function x(e){const{blogPostTitle:t,...a}=e;return l.createElement(i.Z,(0,F.Z)({"aria-label":(0,u.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t})},a),l.createElement(I,null))}const L="blogPostFooterDetailsFull_mRVl";function M(){const{metadata:e,isBlogPostPage:t}=(0,r.C)(),{tags:a,title:s,editUrl:o,hasTruncateMarker:i}=e,c=!t&&i,m=a.length>0;return m||c||o?l.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",t&&L)},m&&l.createElement("div",{className:(0,n.Z)("col",{"col--9":c})},l.createElement(B.Z,{tags:a})),t&&o&&l.createElement("div",{className:"col margin-top--sm"},l.createElement(y.Z,{editUrl:o})),c&&l.createElement("div",{className:(0,n.Z)("col text--right",{"col--3":m})},l.createElement(x,{blogPostTitle:s,to:e.permalink}))):null}function R(e){let{children:t,className:a}=e;const s=function(){const{isBlogPostPage:e}=(0,r.C)();return e?void 0:"margin-bottom--xl"}();return l.createElement(o,{className:(0,n.Z)(s,a)},l.createElement(k,null),l.createElement(C,null,t),l.createElement(M,null))}},4881:(e,t,a)=>{a.d(t,{Z:()=>m});var l=a(7294),n=a(5999),r=a(5281),s=a(7462),o=a(6010);const i="iconEdit_Z9Sw";function c(e){let{className:t,...a}=e;return l.createElement("svg",(0,s.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(i,t),"aria-hidden":"true"},a),l.createElement("g",null,l.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function m(e){let{editUrl:t}=e;return l.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},l.createElement(c,null),l.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},2244:(e,t,a)=>{a.d(t,{Z:()=>s});var l=a(7294),n=a(6010),r=a(9960);function s(e){const{permalink:t,title:a,subLabel:s,isNext:o}=e;return l.createElement(r.Z,{className:(0,n.Z)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},s&&l.createElement("div",{className:"pagination-nav__sublabel"},s),l.createElement("div",{className:"pagination-nav__label"},a))}},3008:(e,t,a)=>{a.d(t,{Z:()=>c});var l=a(7294),n=a(6010),r=a(9960);const s="tag_zVej",o="tagRegular_sFm0",i="tagWithCount_h2kH";function c(e){let{permalink:t,label:a,count:c}=e;return l.createElement(r.Z,{href:t,className:(0,n.Z)(s,c?i:o)},a,c&&l.createElement("span",null,c))}},1526:(e,t,a)=>{a.d(t,{Z:()=>c});var l=a(7294),n=a(6010),r=a(5999),s=a(3008);const o="tags_jXut",i="tag_QGVx";function c(e){let{tags:t}=e;return l.createElement(l.Fragment,null,l.createElement("b",null,l.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),l.createElement("ul",{className:(0,n.Z)(o,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:a}=e;return l.createElement("li",{key:a,className:i},l.createElement(s.Z,{label:t,permalink:a}))}))))}},9460:(e,t,a)=>{a.d(t,{C:()=>o,n:()=>s});var l=a(7294),n=a(902);const r=l.createContext(null);function s(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const s=function(e){let{content:t,isBlogPostPage:a}=e;return(0,l.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return l.createElement(r.Provider,{value:s},t)}function o(){const e=(0,l.useContext)(r);if(null===e)throw new n.i6("BlogPostProvider");return e}},8824:(e,t,a)=>{a.d(t,{c:()=>c});var l=a(7294),n=a(2263);const r=["zero","one","two","few","many","other"];function s(e){return r.filter((t=>e.includes(t)))}const o={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,n.Z)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),o}}),[e])}function c(){const e=i();return{selectMessage:(t,a)=>function(e,t,a){const l=e.split("|");if(1===l.length)return l[0];l.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${l.length}: ${e}`);const n=a.select(t),r=a.pluralForms.indexOf(n);return l[Math.min(r,l.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/30cd80eb.023aec76.js b/assets/js/30cd80eb.023aec76.js new file mode 100644 index 00000000..43b6d6d4 --- /dev/null +++ b/assets/js/30cd80eb.023aec76.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8027],{1669:(e,n,t)=>{t.d(n,{Z:()=>a});var i=t(7294),s=t(814);function a(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],s=[],a=!1;for(let t of e){let e=!1,r=!1,o=t.startsWith("#"),c=""===t.trim(),d=t.match(/^([a-zA-z]+):/);null!==d&&(e=d[1]==n.section,r=d[1]!=n.section),o&&(a=!1,i.push(t)),e&&(a=!0,s.push(...i),i=[]),r&&(a=!1),c&&(i=[]),a&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(s.Z,n,t)}},3271:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=t(7462),s=(t(7294),t(3905)),a=(t(1839),t(1669));const r={sidebar_position:8},o="Configuration Reference",c={unversionedId:"config-reference",id:"config-reference",title:"Configuration Reference",description:"",source:"@site/docs/config-reference.md",sourceDirName:".",slug:"/config-reference",permalink:"/docs/config-reference",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/config-reference.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/docs/config"},next:{title:"Features",permalink:"/docs/features/"}},d={},l=[],h={toc:l};function p(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"configuration-reference"},"Configuration Reference"),(0,s.kt)(a.Z,{mdxType:"ExampleConfig"}))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/339ed6ad.a16dcd06.js b/assets/js/339ed6ad.a16dcd06.js deleted file mode 100644 index 932f0472..00000000 --- a/assets/js/339ed6ad.a16dcd06.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3060],{8237:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>r,contentTitle:()=>i,default:()=>d,frontMatter:()=>u,metadata:()=>o,toc:()=>c});var n=a(7462),s=(a(7294),a(3905));a(1839);const u={title:"cunicu status",sidebar_label:"status",sidebar_class_name:"command-name",slug:"/usage/man/status",hide_title:!0,keywords:["manpage"]},i=void 0,o={unversionedId:"usage/md/cunicu_status",id:"usage/md/cunicu_status",title:"cunicu status",description:"cunicu status",source:"@site/docs/usage/md/cunicu_status.md",sourceDirName:"usage/md",slug:"/usage/man/status",permalink:"/docs/usage/man/status",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_status.md",tags:[],version:"current",frontMatter:{title:"cunicu status",sidebar_label:"status",sidebar_class_name:"command-name",slug:"/usage/man/status",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"signal",permalink:"/docs/usage/man/signal"},next:{title:"stop",permalink:"/docs/usage/man/stop"}},r={},c=[{value:"cunicu status",id:"cunicu-status",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:t,...a}=e;return(0,s.kt)("wrapper",(0,n.Z)({},l,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-status"},"cunicu status"),(0,s.kt)("p",null,"Show current status of the cun\u012bcu daemon, its interfaces and peers"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu status [interface-name [peer-public-key]] [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -f, --format format Output format (one of: human, json) (default "human")\n -h, --help help for status\n -i, --indent Format and indent JSON ouput (default true)\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/339ed6ad.b9a62f3e.js b/assets/js/339ed6ad.b9a62f3e.js new file mode 100644 index 00000000..28467e78 --- /dev/null +++ b/assets/js/339ed6ad.b9a62f3e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3060],{8237:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>r,contentTitle:()=>i,default:()=>d,frontMatter:()=>u,metadata:()=>o,toc:()=>c});var n=a(7462),s=(a(7294),a(3905));a(1839);const u={title:"cunicu status",sidebar_label:"status",sidebar_class_name:"command-name",slug:"/usage/man/status",hide_title:!0,keywords:["manpage"]},i=void 0,o={unversionedId:"usage/md/cunicu_status",id:"usage/md/cunicu_status",title:"cunicu status",description:"cunicu status",source:"@site/docs/usage/md/cunicu_status.md",sourceDirName:"usage/md",slug:"/usage/man/status",permalink:"/docs/usage/man/status",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_status.md",tags:[],version:"current",frontMatter:{title:"cunicu status",sidebar_label:"status",sidebar_class_name:"command-name",slug:"/usage/man/status",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"signal",permalink:"/docs/usage/man/signal"},next:{title:"stop",permalink:"/docs/usage/man/stop"}},r={},c=[{value:"cunicu status",id:"cunicu-status",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:t,...a}=e;return(0,s.kt)("wrapper",(0,n.Z)({},l,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-status"},"cunicu status"),(0,s.kt)("p",null,"Show current status of the cun\u012bcu daemon, its interfaces and peers"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu status [interface-name [peer-public-key]] [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -f, --format format Output format (one of: human, json) (default "human")\n -h, --help help for status\n -i, --indent Format and indent JSON ouput (default true)\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/35b202a1.81b3f40f.js b/assets/js/35b202a1.81b3f40f.js new file mode 100644 index 00000000..61332e18 --- /dev/null +++ b/assets/js/35b202a1.81b3f40f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2786],{9230:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=i(7462),n=(i(7294),i(3905));const r={slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]},s=void 0,o={permalink:"/blog/welcome",editUrl:"https://github.com/stv0g/cunicu/master/website/blog/2022-09-15-welcome/index.md",source:"@site/blog/2022-09-15-welcome/index.md",title:"Welcome",description:"Hello, welcome to the first post in the cun\u012bcu project blog!",date:"2022-09-15T00:00:00.000Z",formattedDate:"September 15, 2022",tags:[{label:"hello",permalink:"/blog/tags/hello"}],readingTime:1.2,hasTruncateMarker:!1,authors:[{name:"Steffen Vogel",title:"Maintainer of cun\u012bcu",url:"https://github.com/stv0g",imageURL:"https://github.com/stv0g.png",key:"stv0g"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]}},l={authorsImageUrls:[void 0]},c=[{value:"First release",id:"first-release",level:3},{value:"Website, Docs and Twitter",id:"website-docs-and-twitter",level:3},{value:"Stickers",id:"stickers",level:3}],u={toc:c};function h(e){let{components:t,...i}=e;return(0,n.kt)("wrapper",(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Hello, welcome to the first post in the cun\u012bcu project blog!"),(0,n.kt)("p",null,"While the project is still in its infancy there are some updates in ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/TL;DR"},"TL;DR"),"."),(0,n.kt)("h3",{id:"first-release"},"First release"),(0,n.kt)("p",null,"We are planning to publish the first official release within the next 4-10 weeks \ud83c\udf89.\nThe release pipeline, packaging and self-update feature and more has already been implemented.\nWe just need to finish the last features and do quite some more testing."),(0,n.kt)("h3",{id:"website-docs-and-twitter"},"Website, Docs and Twitter"),(0,n.kt)("p",null,"The project has now its dedicated ",(0,n.kt)("a",{parentName:"p",href:"https://cunicu.li"},"website"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cunicu"},"GitHub organization")," and Twitter handle (",(0,n.kt)("a",{parentName:"p",href:"https://twitter.com/cunicuVPN"},"@cunicuVPN"),").\nFeel free to follow us there for updates!"),(0,n.kt)("p",null,"You might also have realized that the project name has changed. We decided to rebrand from the previous name ",(0,n.kt)("em",{parentName:"p"},"wice")," to avoid any potential trademark issues with the WireGuard project as well as another small German company named ",(0,n.kt)("em",{parentName:"p"},"WICE"),".\nThe project name ",(0,n.kt)("em",{parentName:"p"},"cun\u012bcu")," ","[k\u028a\u02c8ni\u02d0k\u028a]"," is derived from the ",(0,n.kt)("a",{parentName:"p",href:"https://en.wiktionary.org/wiki/cuniculus#Latin"},"latin noun cun\u012bculus")," which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as ",(0,n.kt)("em",{parentName:"p"},"cun\u012bcu")," builds tunnels between otherwise hard to reach network locations."),(0,n.kt)("p",null,"This also gave us the opportunity to redesign the logo which you find further down in the sticker design."),(0,n.kt)("h3",{id:"stickers"},"Stickers"),(0,n.kt)("p",null,"We have stickers! Just drop me a mail at ",(0,n.kt)("a",{parentName:"p",href:"mailto:info@cunicu.li"},"\ud83d\udce7 info@cunicu.li")," and I will send you some or talk to me at some of the upcoming conferences."),(0,n.kt)("figure",null,(0,n.kt)("center",null,(0,n.kt)("img",{src:"/img/cunicu_sticker.svg",alt:"The sticker design",style:{transform:"rotate(270deg)"}}),(0,n.kt)("figcaption",null,"The sticker design"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3739c031.146ce933.js b/assets/js/3739c031.146ce933.js new file mode 100644 index 00000000..2b1f3715 --- /dev/null +++ b/assets/js/3739c031.146ce933.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1162],{8797:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>r,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>o,toc:()=>d});var s=a(7462),u=(a(7294),a(3905));a(1839);const n={},i="Self-update",o={unversionedId:"usage/upgrade",id:"usage/upgrade",title:"Self-update",description:"cun\u012bcu has a built-in self update functionality.",source:"@site/docs/usage/upgrade.md",sourceDirName:"usage",slug:"/usage/upgrade",permalink:"/docs/usage/upgrade",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/upgrade.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"wg showconf",permalink:"/docs/usage/man/wg/showconf"},next:{title:"Use-cases",permalink:"/docs/usage/usecases"}},r={},d=[],c={toc:d};function p(e){let{components:t,...a}=e;return(0,u.kt)("wrapper",(0,s.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,u.kt)("h1",{id:"self-update"},"Self-update"),(0,u.kt)("p",null,"cun\u012bcu has a built-in self update functionality."),(0,u.kt)("p",null,"Please refer to the ",(0,u.kt)("a",{parentName:"p",href:"/docs/usage/man/self-update"},"usage documentation")," for details about the ",(0,u.kt)("inlineCode",{parentName:"p"},"cunicu self-update")," command."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3739c031.a630d82b.js b/assets/js/3739c031.a630d82b.js deleted file mode 100644 index 718402e5..00000000 --- a/assets/js/3739c031.a630d82b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1162],{8797:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>r,default:()=>p,frontMatter:()=>n,metadata:()=>i,toc:()=>c});var s=a(7462),u=(a(7294),a(3905));a(1839);const n={},r="Self-update",i={unversionedId:"usage/upgrade",id:"usage/upgrade",title:"Self-update",description:"cun\u012bcu has a built-in self update functionality.",source:"@site/docs/usage/upgrade.md",sourceDirName:"usage",slug:"/usage/upgrade",permalink:"/docs/usage/upgrade",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/upgrade.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"wg showconf",permalink:"/docs/usage/man/wg/showconf"},next:{title:"Use-cases",permalink:"/docs/usage/usecases"}},o={},c=[],d={toc:c};function p(e){let{components:t,...a}=e;return(0,u.kt)("wrapper",(0,s.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,u.kt)("h1",{id:"self-update"},"Self-update"),(0,u.kt)("p",null,"cun\u012bcu has a built-in self update functionality."),(0,u.kt)("p",null,"Please refer to the ",(0,u.kt)("a",{parentName:"p",href:"/docs/usage/man/self-update"},"usage documentation")," for details about the ",(0,u.kt)("inlineCode",{parentName:"p"},"cunicu self-update")," command."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/38e469bb.5d1544ce.js b/assets/js/38e469bb.5d1544ce.js deleted file mode 100644 index d9070e58..00000000 --- a/assets/js/38e469bb.5d1544ce.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8902],{952:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>r});var a=t(7462),i=(t(7294),t(3905));t(1839);const o={},s="Usage",d={unversionedId:"usage/index",id:"usage/index",title:"Usage",description:"Command Line",source:"@site/docs/usage/index.md",sourceDirName:"usage",slug:"/usage/",permalink:"/docs/usage/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/index.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Route Synchronization",permalink:"/docs/features/rtsync"},next:{title:"cunicu",permalink:"/docs/usage/man/"}},l={},r=[{value:"Command Line",id:"command-line",level:2},{value:"Daemon",id:"daemon",level:2}],u={toc:r};function m(e){let{components:n,...t}=e;return(0,i.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"usage"},"Usage"),(0,i.kt)("h2",{id:"command-line"},"Command Line"),(0,i.kt)("p",null,"For a detailed documentation of the ",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu")," command-line tool please have a look at the following page:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},(0,i.kt)("inlineCode",{parentName:"a"},"cunicu")))),(0,i.kt)("h2",{id:"daemon"},"Daemon"),(0,i.kt)("p",null,"Sending a ",(0,i.kt)("inlineCode",{parentName:"p"},"SIGUSR1")," signal to the daemon will trigger an immediate synchronization of all WireGuard interfaces."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/38e469bb.63e0060d.js b/assets/js/38e469bb.63e0060d.js new file mode 100644 index 00000000..6016bc83 --- /dev/null +++ b/assets/js/38e469bb.63e0060d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8902],{952:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>r});var t=a(7462),i=(a(7294),a(3905));a(1839);const o={},s="Usage",d={unversionedId:"usage/index",id:"usage/index",title:"Usage",description:"Command Line",source:"@site/docs/usage/index.md",sourceDirName:"usage",slug:"/usage/",permalink:"/docs/usage/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/index.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Route Synchronization",permalink:"/docs/features/rtsync"},next:{title:"cunicu",permalink:"/docs/usage/man/"}},l={},r=[{value:"Command Line",id:"command-line",level:2},{value:"Daemon",id:"daemon",level:2}],u={toc:r};function m(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},u,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"usage"},"Usage"),(0,i.kt)("h2",{id:"command-line"},"Command Line"),(0,i.kt)("p",null,"For a detailed documentation of the ",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu")," command-line tool please have a look at the following page:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},(0,i.kt)("inlineCode",{parentName:"a"},"cunicu")))),(0,i.kt)("h2",{id:"daemon"},"Daemon"),(0,i.kt)("p",null,"Sending a ",(0,i.kt)("inlineCode",{parentName:"p"},"SIGUSR1")," signal to the daemon will trigger an immediate synchronization of all WireGuard interfaces."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/39aaac8c.02c58af0.js b/assets/js/39aaac8c.02c58af0.js new file mode 100644 index 00000000..f003855c --- /dev/null +++ b/assets/js/39aaac8c.02c58af0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4276],{8650:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>o,toc:()=>c});var a=t(7462),r=(t(7294),t(3905));t(1839);const n={},i="Use-cases",o={unversionedId:"usage/usecases",id:"usage/usecases",title:"Use-cases",description:"Zero-configuration",source:"@site/docs/usage/usecases.md",sourceDirName:"usage",slug:"/usage/usecases",permalink:"/docs/usage/usecases",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/usecases.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Self-update",permalink:"/docs/usage/upgrade"},next:{title:"Design",permalink:"/docs/design"}},u={},c=[{value:"Zero-configuration",id:"zero-configuration",level:2},{value:"Start user-space WireGuard daemon",id:"start-user-space-wireguard-daemon",level:2},{value:"Peer discovery",id:"peer-discovery",level:2}],d={toc:c};function p(e){let{components:s,...t}=e;return(0,r.kt)("wrapper",(0,a.Z)({},d,t,{components:s,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"use-cases"},"Use-cases"),(0,r.kt)("h2",{id:"zero-configuration"},"Zero-configuration"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Invocation:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"cunicu")),(0,r.kt)("h2",{id:"start-user-space-wireguard-daemon"},"Start user-space WireGuard daemon"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Invocation:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"cunicu wg1")),(0,r.kt)("h2",{id:"peer-discovery"},"Peer discovery"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Invocation:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"cunicu --community my-community-passphrase")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/39aaac8c.85639671.js b/assets/js/39aaac8c.85639671.js deleted file mode 100644 index cbfc8ceb..00000000 --- a/assets/js/39aaac8c.85639671.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4276],{8650:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>o,toc:()=>c});var a=s(7462),r=(s(7294),s(3905));s(1839);const n={},i="Use-cases",o={unversionedId:"usage/usecases",id:"usage/usecases",title:"Use-cases",description:"Zero-configuration",source:"@site/docs/usage/usecases.md",sourceDirName:"usage",slug:"/usage/usecases",permalink:"/docs/usage/usecases",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/usecases.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Self-update",permalink:"/docs/usage/upgrade"},next:{title:"Design",permalink:"/docs/design"}},u={},c=[{value:"Zero-configuration",id:"zero-configuration",level:2},{value:"Start user-space WireGuard daemon",id:"start-user-space-wireguard-daemon",level:2},{value:"Peer discovery",id:"peer-discovery",level:2}],d={toc:c};function p(e){let{components:t,...s}=e;return(0,r.kt)("wrapper",(0,a.Z)({},d,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"use-cases"},"Use-cases"),(0,r.kt)("h2",{id:"zero-configuration"},"Zero-configuration"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Invocation:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"cunicu")),(0,r.kt)("h2",{id:"start-user-space-wireguard-daemon"},"Start user-space WireGuard daemon"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Invocation:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"cunicu wg1")),(0,r.kt)("h2",{id:"peer-discovery"},"Peer discovery"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Note:")," Not implemented yet"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Invocation:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"cunicu --community my-community-passphrase --backend p2p")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3b8c55ea.f2147935.js b/assets/js/3b8c55ea.f2147935.js deleted file mode 100644 index c68a326a..00000000 --- a/assets/js/3b8c55ea.f2147935.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3217],{9803:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>s,toc:()=>r});var n=a(7462),i=(a(7294),a(3905));a(1839);const l={sidebar_position:5},o="Installation",s={unversionedId:"installation",id:"installation",title:"Installation",description:"This guide shows how to install cun\u012bcu.",source:"@site/docs/installation.md",sourceDirName:".",slug:"/installation",permalink:"/docs/installation",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/installation.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/docs/"},next:{title:"Configuration",permalink:"/docs/configuration"}},u={},r=[{value:"From the Binary Releases",id:"from-the-binary-releases",level:2},{value:"By Hand",id:"by-hand",level:2},{value:"From Script",id:"from-script",level:2},{value:"Through Package Managers",id:"through-package-managers",level:2},{value:"From Apt (Debian, Ubuntu)",id:"from-apt-debian-ubuntu",level:3},{value:"From Yum (Redhat, Fedora, RockyLinux)",id:"from-yum-redhat-fedora-rockylinux",level:3},{value:"From Homebrew (macOS)",id:"from-homebrew-macos",level:3},{value:"From Source (all)",id:"from-source-all",level:2},{value:"Conclusion",id:"conclusion",level:2}],c={toc:r};function d(e){let{components:t,...a}=e;return(0,i.kt)("wrapper",(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"installation"},"Installation"),(0,i.kt)("p",null,"This guide shows how to install cun\u012bcu.\ncun\u012bcu can be installed either from source, or from pre-built binary releases."),(0,i.kt)("h2",{id:"from-the-binary-releases"},"From the Binary Releases"),(0,i.kt)("p",null,"Every release of cun\u012bcu provides binary releases for a variety of OSes.\nThese binary versions can be manually downloaded and installed."),(0,i.kt)("h2",{id:"by-hand"},"By Hand"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/stv0g/cunicu/releases"},"Download your desired version")),(0,i.kt)("li",{parentName:"ol"},"Unzip it: ",(0,i.kt)("inlineCode",{parentName:"li"},"gunzip cunicu_0.0.1_linux_amd64.gz")),(0,i.kt)("li",{parentName:"ol"},"Move the unzipped binary to its desired destination: ",(0,i.kt)("inlineCode",{parentName:"li"},"mv cunicu_0.0.1_linux_amd64 /usr/local/bin/cunicu")),(0,i.kt)("li",{parentName:"ol"},"Make it executable: ",(0,i.kt)("inlineCode",{parentName:"li"},"chmod +x /usr/local/bin/cunicu")),(0,i.kt)("li",{parentName:"ol"},"From there, you should be able to run the client and add the stable repo: ",(0,i.kt)("inlineCode",{parentName:"li"},"cunicu help"),".")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Note:")," cun\u012bcu automated tests are performed for Linux, macOS and Windows on x86_64, ARMv6, ARMv8 amd ARM64 architectures.\nTesting of other OSes are the responsibility of the community requesting cun\u012bcu for the OS in question."),(0,i.kt)("h2",{id:"from-script"},"From Script"),(0,i.kt)("p",null,"cun\u012bcu also has an installer script that will automatically grab the latest version of cun\u012bcu and install it locally."),(0,i.kt)("p",null,"You can fetch that script, and then execute it locally.\nIt's well documented so that you can read through it and understand what it is doing before you run it."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"curl -fsSL -o get_cunicu.sh https://raw.githubusercontent.com/stv0g/cunicu/master/scripts/get_cunicu.sh\nchmod 700 get_cunicu.sh\n./get_cunicu.sh\n")),(0,i.kt)("p",null,"Yes, you can ",(0,i.kt)("inlineCode",{parentName:"p"},"curl https://raw.githubusercontent.com/stv0g/cunicu/master/scripts/get_cunicu.sh | bash")," if you want to live on the edge."),(0,i.kt)("h2",{id:"through-package-managers"},"Through Package Managers"),(0,i.kt)("p",null,"cun\u012bcu provides the ability to install via operating system package managers."),(0,i.kt)("h3",{id:"from-apt-debian-ubuntu"},"From Apt (Debian, Ubuntu)"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'sudo apt-get install apt-transport-https --yes\necho "deb [arch=$(dpkg --print-architecture) trusted=yes] https://packages.riasc.eu/apt/ /" | sudo tee /etc/apt/sources.list.d/riasc.list\nsudo apt-get update\nsudo apt-get install cunicu\n')),(0,i.kt)("h3",{id:"from-yum-redhat-fedora-rockylinux"},"From Yum (Redhat, Fedora, RockyLinux)"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"sudo cat > /etc/yum.repos.d/riasc.repo <<EOF\n[riasc]\nname=RIasC\nbaseurl=https://packages.riasc.eu/yum/\nenabled=1\ngpgcheck=0\nEOF\nsudo yum install cun\u012bcu\n")),(0,i.kt)("h3",{id:"from-homebrew-macos"},"From Homebrew (macOS)"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"brew tap stv0g/cunicu\nbrew install cunicu\n")),(0,i.kt)("h2",{id:"from-source-all"},"From Source (all)"),(0,i.kt)("p",null,"Building cun\u012bcu is fairly easy and allows you to install the latest unreleased version."),(0,i.kt)("p",null,"You must have a working Go environment."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"go install github.com/stv0g/cunicu/cmd/cunicu@latest\n")),(0,i.kt)("p",null,"If required, it will fetch the dependencies and cache them, and validate configuration.\nIt will then compile cun\u012bcu and place it in ",(0,i.kt)("inlineCode",{parentName:"p"},"${GOPATH}/bin/cunicu"),"."),(0,i.kt)("h2",{id:"conclusion"},"Conclusion"),(0,i.kt)("p",null,"In most cases, installation is as simple as getting a pre-built cun\u012bcu binary.\nThis document covers additional cases for those who want to do more sophisticated things with cun\u012bcu."),(0,i.kt)("p",null,"Once you have cun\u012bcu successfully installed, you can move on to ",(0,i.kt)("a",{parentName:"p",href:"/docs/usage/"},"using cun\u012bcu")," to setup your mesh VPN network."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3d976d8d.35b5274a.js b/assets/js/3d976d8d.35b5274a.js new file mode 100644 index 00000000..8220aec3 --- /dev/null +++ b/assets/js/3d976d8d.35b5274a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2413],{1669:(e,n,t)=>{t.d(n,{Z:()=>a});var i=t(7294),s=t(814);function a(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],s=[],a=!1;for(let t of e){let e=!1,r=!1,o=t.startsWith("#"),c=""===t.trim(),d=t.match(/^([a-zA-z]+):/);null!==d&&(e=d[1]==n.section,r=d[1]!=n.section),o&&(a=!1,i.push(t)),e&&(a=!0,s.push(...i),i=[]),r&&(a=!1),c&&(i=[]),a&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(s.Z,n,t)}},3125:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=t(7462),s=(t(7294),t(3905)),a=(t(1839),t(1669));const r={title:"Peer Discovery"},o="Peer Discovery",c={unversionedId:"features/pdisc",id:"features/pdisc",title:"Peer Discovery",description:"The peer discovery feature can be used to find other peers.",source:"@site/docs/features/pdisc.md",sourceDirName:"features",slug:"/features/pdisc",permalink:"/docs/features/pdisc",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/pdisc.md",tags:[],version:"current",frontMatter:{title:"Peer Discovery"},sidebar:"tutorialSidebar",previous:{title:"Hosts-file Synchronization",permalink:"/docs/features/hsync"},next:{title:"Pre-shared Key Establishment",permalink:"/docs/features/pske"}},d={},l=[{value:"Configuration",id:"configuration",level:2}],h={toc:l};function p(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"peer-discovery"},"Peer Discovery"),(0,s.kt)("p",null,"The peer discovery feature can be used to find other peers.\nA set of peers is identified by a common ",(0,s.kt)("em",{parentName:"p"},"community passphrase"),"."),(0,s.kt)("p",null,"Peers belonging to the same community will be added as WireGuard peers to the interface configuration."),(0,s.kt)("p",null,"No other tasks are performed.\nPaired with other features like the ",(0,s.kt)("a",{parentName:"p",href:"/docs/features/epdisc"},"endpoint discovery"),", ",(0,s.kt)("a",{parentName:"p",href:"/docs/features/autocfg"},"auto configuration")," or ",(0,s.kt)("a",{parentName:"p",href:"/docs/features/rtsync"},"route synchronization"),", the peer discovery is a cornerstone of a zero-configuration peer-to-peer VPN."),(0,s.kt)("p",null,"In addition to community passphrase, peers can be accepted by white- and blacklist filtering."),(0,s.kt)("h2",{id:"configuration"},"Configuration"),(0,s.kt)(a.Z,{section:"pdisc",mdxType:"ExampleConfig"}))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3d976d8d.c8ea940f.js b/assets/js/3d976d8d.c8ea940f.js deleted file mode 100644 index 1b01978b..00000000 --- a/assets/js/3d976d8d.c8ea940f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2413],{3125:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>n,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=s(7462),i=(s(7294),s(3905));s(1839);const o={title:"Peer Discovery"},n="Peer Discovery",c={unversionedId:"features/pdisc",id:"features/pdisc",title:"Peer Discovery",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/pdisc.md",sourceDirName:"features",slug:"/features/pdisc",permalink:"/docs/features/pdisc",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/pdisc.md",tags:[],version:"current",frontMatter:{title:"Peer Discovery"},sidebar:"tutorialSidebar",previous:{title:"Hosts-file Synchronization",permalink:"/docs/features/hsync"},next:{title:"Pre-shared Key Establishment",permalink:"/docs/features/pske"}},a={},d=[],u={toc:d};function p(e){let{components:t,...s}=e;return(0,i.kt)("wrapper",(0,r.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"peer-discovery"},"Peer Discovery"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3f8b3b9b.2c503c96.js b/assets/js/3f8b3b9b.2c503c96.js new file mode 100644 index 00000000..aac1f3ff --- /dev/null +++ b/assets/js/3f8b3b9b.2c503c96.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3816],{7412:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>u});var t=a(7462),i=(a(7294),a(3905));a(1839);const s={title:"cunicu signal",sidebar_label:"signal",sidebar_class_name:"command-name",slug:"/usage/man/signal",hide_title:!0,keywords:["manpage"]},l=void 0,o={unversionedId:"usage/md/cunicu_signal",id:"usage/md/cunicu_signal",title:"cunicu signal",description:"cunicu signal",source:"@site/docs/usage/md/cunicu_signal.md",sourceDirName:"usage/md",slug:"/usage/man/signal",permalink:"/docs/usage/man/signal",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_signal.md",tags:[],version:"current",frontMatter:{title:"cunicu signal",sidebar_label:"signal",sidebar_class_name:"command-name",slug:"/usage/man/signal",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"selfupdate",permalink:"/docs/usage/man/selfupdate"},next:{title:"status",permalink:"/docs/usage/man/status"}},r={},u=[{value:"cunicu signal",id:"cunicu-signal",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:u};function d(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},c,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-signal"},"cunicu signal"),(0,i.kt)("p",null,"Start gRPC signaling server"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu signal [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -h, --help help for signal\n -L, --listen string listen address (default ":8080")\n -S, --secure listen with TLS\n')),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3f8b3b9b.8d90ef30.js b/assets/js/3f8b3b9b.8d90ef30.js deleted file mode 100644 index f4dd63d2..00000000 --- a/assets/js/3f8b3b9b.8d90ef30.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3816],{7412:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>u});var t=a(7462),i=(a(7294),a(3905));a(1839);const s={title:"cunicu signal",sidebar_label:"signal",sidebar_class_name:"command-name",slug:"/usage/man/signal",hide_title:!0,keywords:["manpage"]},l=void 0,o={unversionedId:"usage/md/cunicu_signal",id:"usage/md/cunicu_signal",title:"cunicu signal",description:"cunicu signal",source:"@site/docs/usage/md/cunicu_signal.md",sourceDirName:"usage/md",slug:"/usage/man/signal",permalink:"/docs/usage/man/signal",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_signal.md",tags:[],version:"current",frontMatter:{title:"cunicu signal",sidebar_label:"signal",sidebar_class_name:"command-name",slug:"/usage/man/signal",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"selfupdate",permalink:"/docs/usage/man/selfupdate"},next:{title:"status",permalink:"/docs/usage/man/status"}},r={},u=[{value:"cunicu signal",id:"cunicu-signal",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:u};function d(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},c,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-signal"},"cunicu signal"),(0,i.kt)("p",null,"Start gRPC signaling server"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu signal [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -h, --help help for signal\n -L, --listen string listen address (default ":8080")\n -S, --secure listen with TLS\n')),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/424a2e2a.351bff2f.js b/assets/js/424a2e2a.351bff2f.js new file mode 100644 index 00000000..3320fc89 --- /dev/null +++ b/assets/js/424a2e2a.351bff2f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4902],{2937:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>u,toc:()=>d});var n=a(7462),s=(a(7294),a(3905));a(1839);const i={title:"cunicu selfupdate",sidebar_label:"selfupdate",sidebar_class_name:"command-name",slug:"/usage/man/selfupdate",hide_title:!0,keywords:["manpage"]},l=void 0,u={unversionedId:"usage/md/cunicu_selfupdate",id:"usage/md/cunicu_selfupdate",title:"cunicu selfupdate",description:"cunicu selfupdate",source:"@site/docs/usage/md/cunicu_selfupdate.md",sourceDirName:"usage/md",slug:"/usage/man/selfupdate",permalink:"/docs/usage/man/selfupdate",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_selfupdate.md",tags:[],version:"current",frontMatter:{title:"cunicu selfupdate",sidebar_label:"selfupdate",sidebar_class_name:"command-name",slug:"/usage/man/selfupdate",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"self-update",permalink:"/docs/usage/man/self-update"},next:{title:"signal",permalink:"/docs/usage/man/signal"}},o={},d=[{value:"cunicu selfupdate",id:"cunicu-selfupdate",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:d};function c(e){let{components:t,...a}=e;return(0,s.kt)("wrapper",(0,n.Z)({},r,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-selfupdate"},"cunicu selfupdate"),(0,s.kt)("p",null,"Update the cun\u012bcu binary"),(0,s.kt)("h3",{id:"synopsis"},"Synopsis"),(0,s.kt)("p",null,"Downloads the latest stable release of cun\u012bcu from GitHub and replaces the currently running binary.\nAfter download, the authenticity of the binary is verified using the GPG signature on the release files."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu selfupdate [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -h, --help help for selfupdate\n -o, --output filename Save the downloaded file as filename (default "cunicu")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/424a2e2a.dc2b7936.js b/assets/js/424a2e2a.dc2b7936.js deleted file mode 100644 index 8ccd2ec8..00000000 --- a/assets/js/424a2e2a.dc2b7936.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4902],{2937:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>u,toc:()=>d});var n=a(7462),s=(a(7294),a(3905));a(1839);const i={title:"cunicu selfupdate",sidebar_label:"selfupdate",sidebar_class_name:"command-name",slug:"/usage/man/selfupdate",hide_title:!0,keywords:["manpage"]},l=void 0,u={unversionedId:"usage/md/cunicu_selfupdate",id:"usage/md/cunicu_selfupdate",title:"cunicu selfupdate",description:"cunicu selfupdate",source:"@site/docs/usage/md/cunicu_selfupdate.md",sourceDirName:"usage/md",slug:"/usage/man/selfupdate",permalink:"/docs/usage/man/selfupdate",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_selfupdate.md",tags:[],version:"current",frontMatter:{title:"cunicu selfupdate",sidebar_label:"selfupdate",sidebar_class_name:"command-name",slug:"/usage/man/selfupdate",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"self-update",permalink:"/docs/usage/man/self-update"},next:{title:"signal",permalink:"/docs/usage/man/signal"}},o={},d=[{value:"cunicu selfupdate",id:"cunicu-selfupdate",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:d};function c(e){let{components:t,...a}=e;return(0,s.kt)("wrapper",(0,n.Z)({},r,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-selfupdate"},"cunicu selfupdate"),(0,s.kt)("p",null,"Update the cun\u012bcu binary"),(0,s.kt)("h3",{id:"synopsis"},"Synopsis"),(0,s.kt)("p",null,"Downloads the latest stable release of cun\u012bcu from GitHub and replaces the currently running binary.\nAfter download, the authenticity of the binary is verified using the GPG signature on the release files."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu selfupdate [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -h, --help help for selfupdate\n -o, --output filename Save the downloaded file as filename (default "cunicu")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4d2ed0aa.4d4334d6.js b/assets/js/4d2ed0aa.4d4334d6.js new file mode 100644 index 00000000..d9327a6a --- /dev/null +++ b/assets/js/4d2ed0aa.4d4334d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9901],{1054:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>d});var t=a(7462),o=(a(7294),a(3905));a(1839);const i={title:"cunicu daemon",sidebar_label:"daemon",sidebar_class_name:"command-name",slug:"/usage/man/daemon",hide_title:!0,keywords:["manpage"]},s=void 0,r={unversionedId:"usage/md/cunicu_daemon",id:"usage/md/cunicu_daemon",title:"cunicu daemon",description:"cunicu daemon",source:"@site/docs/usage/md/cunicu_daemon.md",sourceDirName:"usage/md",slug:"/usage/man/daemon",permalink:"/docs/usage/man/daemon",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_daemon.md",tags:[],version:"current",frontMatter:{title:"cunicu daemon",sidebar_label:"daemon",sidebar_class_name:"command-name",slug:"/usage/man/daemon",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"config set",permalink:"/docs/usage/man/config/set"},next:{title:"invite",permalink:"/docs/usage/man/invite"}},c={},d=[{value:"cunicu daemon",id:"cunicu-daemon",level:2},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:d};function u(e){let{components:n,...a}=e;return(0,o.kt)("wrapper",(0,t.Z)({},l,a,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-daemon"},"cunicu daemon"),(0,o.kt)("p",null,"Start the daemon"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"cunicu daemon [interface-names...] [flags]\n")),(0,o.kt)("h3",{id:"examples"},"Examples"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"$ cunicu daemon -u -x mysecretpass wg0\n")),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"}," -b, --backend URL One or more URLs to signaling backends\n -x, --community passphrase A passphrase shared with other peers in the same community\n -c, --config filename One or more filenames of configuration files\n -E, --discover-endpoints Enable ICE endpoint discovery (default true)\n -P, --discover-peers Enable peer discovery (default true)\n -D, --domain domain A DNS domain name used for DNS auto-configuration\n --ice-candidate-type candidate-type Usable candidate-types (one of host, srflx, prflx, relay)\n --ice-network-type network-type Usable network-types (one of udp4, udp6, tcp4, tcp6)\n -p, --password password The password for STUN/TURN credentials\n -T, --routing-table int Kernel routing table to use (default 254)\n -s, --rpc-socket path The path of the unix socket used by other cunicu commands\n --rpc-wait Wait until first client connected to control socket before continuing start\n -C, --sync-config Enable synchronization of configuration files (default true)\n -H, --sync-hosts Enable synchronization of /etc/hosts file (default true)\n -R, --sync-routes Enable synchronization of AllowedIPs with Kernel routes (default true)\n -a, --url URL One or more URLs of STUN and/or TURN servers\n -u, --username username The username for STUN/TURN credentials\n -w, --watch-config Watch configuration files for changes and apply changes at runtime.\n -i, --watch-interval duration An interval at which we are periodically polling the kernel for updates on WireGuard interfaces\n -U, --wg-userspace Use user-space WireGuard implementation for newly created interfaces\n -h, --help help for daemon\n")),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4d2ed0aa.8fecaf30.js b/assets/js/4d2ed0aa.8fecaf30.js deleted file mode 100644 index d6a40dad..00000000 --- a/assets/js/4d2ed0aa.8fecaf30.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9901],{1054:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var t=a(7462),o=(a(7294),a(3905));a(1839);const i={title:"cunicu daemon",sidebar_label:"daemon",sidebar_class_name:"command-name",slug:"/usage/man/daemon",hide_title:!0,keywords:["manpage"]},r=void 0,s={unversionedId:"usage/md/cunicu_daemon",id:"usage/md/cunicu_daemon",title:"cunicu daemon",description:"cunicu daemon",source:"@site/docs/usage/md/cunicu_daemon.md",sourceDirName:"usage/md",slug:"/usage/man/daemon",permalink:"/docs/usage/man/daemon",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_daemon.md",tags:[],version:"current",frontMatter:{title:"cunicu daemon",sidebar_label:"daemon",sidebar_class_name:"command-name",slug:"/usage/man/daemon",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"config set",permalink:"/docs/usage/man/config/set"},next:{title:"monitor",permalink:"/docs/usage/man/monitor"}},c={},d=[{value:"cunicu daemon",id:"cunicu-daemon",level:2},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],u={toc:d};function l(e){let{components:n,...a}=e;return(0,o.kt)("wrapper",(0,t.Z)({},u,a,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-daemon"},"cunicu daemon"),(0,o.kt)("p",null,"Start the daemon"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"cunicu daemon [interface-names...] [flags]\n")),(0,o.kt)("h3",{id:"examples"},"Examples"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"$ cunicu daemon -u -x mysecretpass wg0\n")),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -A, --auto-config Enable setup of link-local addresses and missing interface options (default true)\n -b, --backend URL One or more URLs to signaling backends\n -x, --community passphrase A passphrase shared with other peers in the same community\n -c, --config filename One or more filenames of configuration files\n -w, --config-path directory The directory of WireGuard wg/wg-quick configuration files\n -S, --config-sync Enable synchronization of WireGuard configuration files (default true)\n -W, --config-watch Watch and synchronize changes to the WireGuard configuration files\n -D, --domain domain A DNS domain name used for DNS auto-configuration\n -I, --endpoint-disc Enable ICE endpoint discovery (default true)\n -H, --host-sync Enable synchronization of /etc/hosts file (default true)\n --ice-candidate-type candidate-type Usable candidate-types (one of host, srflx, prflx, relay)\n --ice-network-type network-type Usable network-types (one of udp4, udp6, tcp4, tcp6)\n -P, --password password The password for STUN/TURN credentials\n -R, --route-sync Enable synchronization of AllowedIPs and Kernel routing table (default true)\n -T, --route-table string Kernel routing table to use (default "main")\n -s, --rpc-socket path The path of the unix socket used by other cunicu commands\n --rpc-wait Wait until first client connected to control socket before continuing start\n -a, --url URL One or more URLs of STUN and/or TURN servers\n -U, --username username The username for STUN/TURN credentials\n -i, --watch-interval duration An interval at which we are periodically polling the kernel for updates on WireGuard interfaces\n -f, --wg-interface-filter regex A regex for filtering WireGuard interfaces (e.g. "wg-.*") (default ".*")\n -u, --wg-userspace Create new interfaces with userspace WireGuard implementation\n -h, --help help for daemon\n')),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}l.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4dda60b2.5f7ebca5.js b/assets/js/4dda60b2.5f7ebca5.js deleted file mode 100644 index 9d3b9da1..00000000 --- a/assets/js/4dda60b2.5f7ebca5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1634],{4767:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>u});var r=s(7462),i=(s(7294),s(3905));s(1839);const a={title:"Pre-shared Key Establishment"},n="Pre-shared Key Establishment",o={unversionedId:"features/pske",id:"features/pske",title:"Pre-shared Key Establishment",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/pske.md",sourceDirName:"features",slug:"/features/pske",permalink:"/docs/features/pske",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/pske.md",tags:[],version:"current",frontMatter:{title:"Pre-shared Key Establishment"},sidebar:"tutorialSidebar",previous:{title:"Peer Discovery",permalink:"/docs/features/pdisc"},next:{title:"Route Synchronization",permalink:"/docs/features/rtsync"}},c={},u=[],d={toc:u};function p(e){let{components:t,...s}=e;return(0,i.kt)("wrapper",(0,r.Z)({},d,s,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"pre-shared-key-establishment"},"Pre-shared Key Establishment"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4dda60b2.c6e4795f.js b/assets/js/4dda60b2.c6e4795f.js new file mode 100644 index 00000000..268a50de --- /dev/null +++ b/assets/js/4dda60b2.c6e4795f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1634],{1669:(e,n,t)=>{t.d(n,{Z:()=>a});var i=t(7294),s=t(814);function a(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],s=[],a=!1;for(let t of e){let e=!1,r=!1,o=t.startsWith("#"),c=""===t.trim(),l=t.match(/^([a-zA-z]+):/);null!==l&&(e=l[1]==n.section,r=l[1]!=n.section),o&&(a=!1,i.push(t)),e&&(a=!0,s.push(...i),i=[]),r&&(a=!1),c&&(i=[]),a&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(s.Z,n,t)}},4767:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var i=t(7462),s=(t(7294),t(3905)),a=(t(1839),t(1669));const r={title:"Pre-shared Key Establishment"},o="Pre-shared Key Establishment",c={unversionedId:"features/pske",id:"features/pske",title:"Pre-shared Key Establishment",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/pske.md",sourceDirName:"features",slug:"/features/pske",permalink:"/docs/features/pske",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/pske.md",tags:[],version:"current",frontMatter:{title:"Pre-shared Key Establishment"},sidebar:"tutorialSidebar",previous:{title:"Peer Discovery",permalink:"/docs/features/pdisc"},next:{title:"Route Synchronization",permalink:"/docs/features/rtsync"}},l={},d=[{value:"Configuration",id:"configuration",level:2}],h={toc:d};function p(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"pre-shared-key-establishment"},"Pre-shared Key Establishment"),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")),(0,s.kt)("h2",{id:"configuration"},"Configuration"),(0,s.kt)(a.Z,{section:"pske",mdxType:"ExampleConfig"}))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4e235874.24ccf0ab.js b/assets/js/4e235874.24ccf0ab.js deleted file mode 100644 index e59099eb..00000000 --- a/assets/js/4e235874.24ccf0ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5586],{2682:(e,o,l)=>{l.r(o),l.d(o,{assets:()=>r,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>p,toc:()=>a});var t=l(7462),n=(l(7294),l(3905));l(1839);const i={title:"cunicu completion powershell",sidebar_label:"completion powershell",sidebar_class_name:"command-name",slug:"/usage/man/completion/powershell",hide_title:!0,keywords:["manpage"]},s=void 0,p={unversionedId:"usage/md/cunicu_completion_powershell",id:"usage/md/cunicu_completion_powershell",title:"cunicu completion powershell",description:"cunicu completion powershell",source:"@site/docs/usage/md/cunicu_completion_powershell.md",sourceDirName:"usage/md",slug:"/usage/man/completion/powershell",permalink:"/docs/usage/man/completion/powershell",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_completion_powershell.md",tags:[],version:"current",frontMatter:{title:"cunicu completion powershell",sidebar_label:"completion powershell",sidebar_class_name:"command-name",slug:"/usage/man/completion/powershell",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion fish",permalink:"/docs/usage/man/completion/fish"},next:{title:"completion zsh",permalink:"/docs/usage/man/completion/zsh"}},r={},a=[{value:"cunicu completion powershell",id:"cunicu-completion-powershell",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:a};function u(e){let{components:o,...l}=e;return(0,n.kt)("wrapper",(0,t.Z)({},c,l,{components:o,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"cunicu-completion-powershell"},"cunicu completion powershell"),(0,n.kt)("p",null,"Generate the autocompletion script for powershell"),(0,n.kt)("h3",{id:"synopsis"},"Synopsis"),(0,n.kt)("p",null,"Generate the autocompletion script for powershell."),(0,n.kt)("p",null,"To load completions in your current shell session:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion powershell | Out-String | Invoke-Expression\n")),(0,n.kt)("p",null,"To load completions for every new session, add the output of the above command\nto your powershell profile."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion powershell [flags]\n")),(0,n.kt)("h3",{id:"options"},"Options"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"}," -h, --help help for powershell\n --no-descriptions disable completion descriptions\n")),(0,n.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,n.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4e235874.879d5987.js b/assets/js/4e235874.879d5987.js new file mode 100644 index 00000000..48a7dac3 --- /dev/null +++ b/assets/js/4e235874.879d5987.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5586],{2682:(e,o,l)=>{l.r(o),l.d(o,{assets:()=>r,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>p,toc:()=>a});var t=l(7462),n=(l(7294),l(3905));l(1839);const i={title:"cunicu completion powershell",sidebar_label:"completion powershell",sidebar_class_name:"command-name",slug:"/usage/man/completion/powershell",hide_title:!0,keywords:["manpage"]},s=void 0,p={unversionedId:"usage/md/cunicu_completion_powershell",id:"usage/md/cunicu_completion_powershell",title:"cunicu completion powershell",description:"cunicu completion powershell",source:"@site/docs/usage/md/cunicu_completion_powershell.md",sourceDirName:"usage/md",slug:"/usage/man/completion/powershell",permalink:"/docs/usage/man/completion/powershell",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_completion_powershell.md",tags:[],version:"current",frontMatter:{title:"cunicu completion powershell",sidebar_label:"completion powershell",sidebar_class_name:"command-name",slug:"/usage/man/completion/powershell",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion fish",permalink:"/docs/usage/man/completion/fish"},next:{title:"completion zsh",permalink:"/docs/usage/man/completion/zsh"}},r={},a=[{value:"cunicu completion powershell",id:"cunicu-completion-powershell",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:a};function u(e){let{components:o,...l}=e;return(0,n.kt)("wrapper",(0,t.Z)({},c,l,{components:o,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"cunicu-completion-powershell"},"cunicu completion powershell"),(0,n.kt)("p",null,"Generate the autocompletion script for powershell"),(0,n.kt)("h3",{id:"synopsis"},"Synopsis"),(0,n.kt)("p",null,"Generate the autocompletion script for powershell."),(0,n.kt)("p",null,"To load completions in your current shell session:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion powershell | Out-String | Invoke-Expression\n")),(0,n.kt)("p",null,"To load completions for every new session, add the output of the above command\nto your powershell profile."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion powershell [flags]\n")),(0,n.kt)("h3",{id:"options"},"Options"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"}," -h, --help help for powershell\n --no-descriptions disable completion descriptions\n")),(0,n.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,n.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d967f90.462485ca.js b/assets/js/52456dd7.fec68280.js similarity index 62% rename from assets/js/6d967f90.462485ca.js rename to assets/js/52456dd7.fec68280.js index d11604e0..9d70fa30 100644 --- a/assets/js/6d967f90.462485ca.js +++ b/assets/js/52456dd7.fec68280.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6757],{4469:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3872],{4469:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/57323276.1541aa51.js b/assets/js/57323276.1541aa51.js new file mode 100644 index 00000000..ecfceb44 --- /dev/null +++ b/assets/js/57323276.1541aa51.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3408],{535:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>l});var r=a(7462),n=(a(7294),a(3905));a(1839);const s={title:"cunicu restart",sidebar_label:"restart",sidebar_class_name:"command-name",slug:"/usage/man/restart",hide_title:!0,keywords:["manpage"]},i=void 0,o={unversionedId:"usage/md/cunicu_restart",id:"usage/md/cunicu_restart",title:"cunicu restart",description:"cunicu restart",source:"@site/docs/usage/md/cunicu_restart.md",sourceDirName:"usage/md",slug:"/usage/man/restart",permalink:"/docs/usage/man/restart",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_restart.md",tags:[],version:"current",frontMatter:{title:"cunicu restart",sidebar_label:"restart",sidebar_class_name:"command-name",slug:"/usage/man/restart",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"reload",permalink:"/docs/usage/man/reload"},next:{title:"self-update",permalink:"/docs/usage/man/self-update"}},u={},l=[{value:"cunicu restart",id:"cunicu-restart",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:l};function d(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"cunicu-restart"},"cunicu restart"),(0,n.kt)("p",null,"Restart the cun\u012bcu daemon"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu restart [flags]\n")),(0,n.kt)("h3",{id:"options"},"Options"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -h, --help help for restart\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,n.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,n.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/57323276.36a23214.js b/assets/js/57323276.36a23214.js deleted file mode 100644 index 3d38349c..00000000 --- a/assets/js/57323276.36a23214.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3408],{535:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var n=a(7462),r=(a(7294),a(3905));a(1839);const s={title:"cunicu restart",sidebar_label:"restart",sidebar_class_name:"command-name",slug:"/usage/man/restart",hide_title:!0,keywords:["manpage"]},i=void 0,o={unversionedId:"usage/md/cunicu_restart",id:"usage/md/cunicu_restart",title:"cunicu restart",description:"cunicu restart",source:"@site/docs/usage/md/cunicu_restart.md",sourceDirName:"usage/md",slug:"/usage/man/restart",permalink:"/docs/usage/man/restart",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_restart.md",tags:[],version:"current",frontMatter:{title:"cunicu restart",sidebar_label:"restart",sidebar_class_name:"command-name",slug:"/usage/man/restart",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"monitor",permalink:"/docs/usage/man/monitor"},next:{title:"self-update",permalink:"/docs/usage/man/self-update"}},u={},c=[{value:"cunicu restart",id:"cunicu-restart",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:t,...a}=e;return(0,r.kt)("wrapper",(0,n.Z)({},l,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"cunicu-restart"},"cunicu restart"),(0,r.kt)("p",null,"Restart the cun\u012bcu daemon"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"cunicu restart [flags]\n")),(0,r.kt)("h3",{id:"options"},"Options"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},' -h, --help help for restart\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,r.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,r.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5795ae79.61589280.js b/assets/js/5795ae79.61589280.js new file mode 100644 index 00000000..3202b2b6 --- /dev/null +++ b/assets/js/5795ae79.61589280.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3986],{5014:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>g,frontMatter:()=>a,metadata:()=>u,toc:()=>s});var i=t(7462),o=(t(7294),t(3905));t(1839);const a={title:"cunicu config get",sidebar_label:"config get",sidebar_class_name:"command-name",slug:"/usage/man/config/get",hide_title:!0,keywords:["manpage"]},c=void 0,u={unversionedId:"usage/md/cunicu_config_get",id:"usage/md/cunicu_config_get",title:"cunicu config get",description:"cunicu config get",source:"@site/docs/usage/md/cunicu_config_get.md",sourceDirName:"usage/md",slug:"/usage/man/config/get",permalink:"/docs/usage/man/config/get",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_config_get.md",tags:[],version:"current",frontMatter:{title:"cunicu config get",sidebar_label:"config get",sidebar_class_name:"command-name",slug:"/usage/man/config/get",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"config",permalink:"/docs/usage/man/config"},next:{title:"config reload",permalink:"/docs/usage/man/config/reload"}},r={},s=[{value:"cunicu config get",id:"cunicu-config-get",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:s};function g(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,i.Z)({},l,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-config-get"},"cunicu config get"),(0,o.kt)("p",null,"Get current value of a configuration setting"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"cunicu config get [key] [flags]\n")),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"}," -h, --help help for get\n")),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config"},"cunicu config"),"\t - Manage configuration of a running cun\u012bcu daemon.")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5795ae79.c04b0383.js b/assets/js/5795ae79.c04b0383.js deleted file mode 100644 index 8c79c276..00000000 --- a/assets/js/5795ae79.c04b0383.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3986],{5014:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>c,default:()=>l,frontMatter:()=>a,metadata:()=>u,toc:()=>r});var i=t(7462),o=(t(7294),t(3905));t(1839);const a={title:"cunicu config get",sidebar_label:"config get",sidebar_class_name:"command-name",slug:"/usage/man/config/get",hide_title:!0,keywords:["manpage"]},c=void 0,u={unversionedId:"usage/md/cunicu_config_get",id:"usage/md/cunicu_config_get",title:"cunicu config get",description:"cunicu config get",source:"@site/docs/usage/md/cunicu_config_get.md",sourceDirName:"usage/md",slug:"/usage/man/config/get",permalink:"/docs/usage/man/config/get",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_config_get.md",tags:[],version:"current",frontMatter:{title:"cunicu config get",sidebar_label:"config get",sidebar_class_name:"command-name",slug:"/usage/man/config/get",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"config",permalink:"/docs/usage/man/config"},next:{title:"config set",permalink:"/docs/usage/man/config/set"}},s={},r=[{value:"cunicu config get",id:"cunicu-config-get",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],g={toc:r};function l(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,i.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-config-get"},"cunicu config get"),(0,o.kt)("p",null,"Get current value of a configuration setting"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"cunicu config get [key] [flags]\n")),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"}," -h, --help help for get\n")),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config"},"cunicu config"),"\t - Manage configuration of a running cun\u012bcu daemon.")))}l.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/59efbc3d.657b63fd.js b/assets/js/59efbc3d.657b63fd.js deleted file mode 100644 index ce3adcec..00000000 --- a/assets/js/59efbc3d.657b63fd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3829],{165:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>n,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>r});var l=o(7462),s=(o(7294),o(3905));const a={slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]},n=void 0,c={permalink:"/blog/welcome",editUrl:"https://github.com/stv0g/cunicu/master/website/blog/2022-09-08-welcome/index.md",source:"@site/blog/2022-09-08-welcome/index.md",title:"Welcome",description:"Hello, welcome to the cun\u012bcu blog. We will start posting some updates here soon.",date:"2022-09-08T00:00:00.000Z",formattedDate:"September 8, 2022",tags:[{label:"hello",permalink:"/blog/tags/hello"}],readingTime:.07,hasTruncateMarker:!1,authors:[{name:"Steffen Vogel",title:"Maintainer of cun\u012bcu",url:"https://github.com/stv0g",imageURL:"https://github.com/stv0g.png",key:"stv0g"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]}},i={authorsImageUrls:[void 0]},r=[],m={toc:r};function u(e){let{components:t,...o}=e;return(0,s.kt)("wrapper",(0,l.Z)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"Hello, welcome to the cun\u012bcu blog. We will start posting some updates here soon."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5ad9cedd.0faaffc9.js b/assets/js/5ad9cedd.0faaffc9.js new file mode 100644 index 00000000..e313c5a5 --- /dev/null +++ b/assets/js/5ad9cedd.0faaffc9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5439],{1669:(e,n,t)=>{t.d(n,{Z:()=>a});var i=t(7294),s=t(814);function a(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],s=[],a=!1;for(let t of e){let e=!1,o=!1,r=t.startsWith("#"),c=""===t.trim(),d=t.match(/^([a-zA-z]+):/);null!==d&&(e=d[1]==n.section,o=d[1]!=n.section),r&&(a=!1,i.push(t)),e&&(a=!0,s.push(...i),i=[]),o&&(a=!1),c&&(i=[]),a&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(s.Z,n,t)}},4721:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var i=t(7462),s=(t(7294),t(3905)),a=(t(1839),t(1669));const o={title:"Endpoint Discovery"},r="Endpoint Discovery",c={unversionedId:"features/epdisc",id:"features/epdisc",title:"Endpoint Discovery",description:"The endpoint discovery finds usable WireGuard endpoint addresses for remote peers using Interactive Connectivity Establishment (ICE).",source:"@site/docs/features/epdisc.md",sourceDirName:"features",slug:"/features/epdisc",permalink:"/docs/features/epdisc",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/epdisc.md",tags:[],version:"current",frontMatter:{title:"Endpoint Discovery"},sidebar:"tutorialSidebar",previous:{title:"Config-file Synchronization",permalink:"/docs/features/cfgsync"},next:{title:"Hooks",permalink:"/docs/features/hooks"}},d={},l=[{value:"Configuration",id:"configuration",level:2}],h={toc:l};function p(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"endpoint-discovery"},"Endpoint Discovery"),(0,s.kt)("p",null,"The endpoint discovery finds usable WireGuard endpoint addresses for remote peers using ",(0,s.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment"},"Interactive Connectivity Establishment (ICE)"),"."),(0,s.kt)("h2",{id:"configuration"},"Configuration"),(0,s.kt)(a.Z,{section:"epdisc",mdxType:"ExampleConfig"}))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5ad9cedd.cafcfe1e.js b/assets/js/5ad9cedd.cafcfe1e.js deleted file mode 100644 index 4cacaebf..00000000 --- a/assets/js/5ad9cedd.cafcfe1e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5439],{4721:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var s=i(7462),n=(i(7294),i(3905));i(1839);const o={title:"Endpoint Discovery"},r="Endpoint Discovery",c={unversionedId:"features/epdisc",id:"features/epdisc",title:"Endpoint Discovery",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/epdisc.md",sourceDirName:"features",slug:"/features/epdisc",permalink:"/docs/features/epdisc",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/epdisc.md",tags:[],version:"current",frontMatter:{title:"Endpoint Discovery"},sidebar:"tutorialSidebar",previous:{title:"Config-file Synchronization",permalink:"/docs/features/cfgsync"},next:{title:"Hooks",permalink:"/docs/features/hooks"}},a={},d=[],p={toc:d};function u(e){let{components:t,...i}=e;return(0,n.kt)("wrapper",(0,s.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"endpoint-discovery"},"Endpoint Discovery"),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5b0ec1e8.85b8135b.js b/assets/js/5b0ec1e8.85b8135b.js deleted file mode 100644 index 5f4f4634..00000000 --- a/assets/js/5b0ec1e8.85b8135b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1356],{5820:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>f});var i=n(7462),o=(n(7294),n(3905));n(1839);const s={title:"Config-file Synchronization"},r="Config-file Synchronization",c={unversionedId:"features/cfgsync",id:"features/cfgsync",title:"Config-file Synchronization",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/cfgsync.md",sourceDirName:"features",slug:"/features/cfgsync",permalink:"/docs/features/cfgsync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/cfgsync.md",tags:[],version:"current",frontMatter:{title:"Config-file Synchronization"},sidebar:"tutorialSidebar",previous:{title:"Auto-configuration",permalink:"/docs/features/autocfg"},next:{title:"Endpoint Discovery",permalink:"/docs/features/epdisc"}},a={},f=[],u={toc:f};function d(t){let{components:e,...n}=t;return(0,o.kt)("wrapper",(0,i.Z)({},u,n,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"config-file-synchronization"},"Config-file Synchronization"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5b0ec1e8.9e1944df.js b/assets/js/5b0ec1e8.9e1944df.js new file mode 100644 index 00000000..be0450e7 --- /dev/null +++ b/assets/js/5b0ec1e8.9e1944df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1356],{1669:(e,n,t)=>{t.d(n,{Z:()=>s});var i=t(7294),a=t(814);function s(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],a=[],s=!1;for(let t of e){let e=!1,o=!1,r=t.startsWith("#"),c=""===t.trim(),l=t.match(/^([a-zA-z]+):/);null!==l&&(e=l[1]==n.section,o=l[1]!=n.section),r&&(s=!1,i.push(t)),e&&(s=!0,a.push(...i),i=[]),o&&(s=!1),c&&(i=[]),s&&a.push(t)}""==a[a.length-1]&&(a=a.slice(0,-1)),t=a.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(a.Z,n,t)}},5820:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>f,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=t(7462),a=(t(7294),t(3905)),s=(t(1839),t(1669));const o={title:"Config-file Synchronization"},r="Config Synchronization",c={unversionedId:"features/cfgsync",id:"features/cfgsync",title:"Config-file Synchronization",description:"The config synchronization feature keeps interface configuration provided via configuration files in sync with the kernel.",source:"@site/docs/features/cfgsync.md",sourceDirName:"features",slug:"/features/cfgsync",permalink:"/docs/features/cfgsync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/cfgsync.md",tags:[],version:"current",frontMatter:{title:"Config-file Synchronization"},sidebar:"tutorialSidebar",previous:{title:"Auto-configuration",permalink:"/docs/features/autocfg"},next:{title:"Endpoint Discovery",permalink:"/docs/features/epdisc"}},l={},d=[{value:"Configuration",id:"configuration",level:2}],h={toc:d};function f(e){let{components:n,...t}=e;return(0,a.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"config-synchronization"},"Config Synchronization"),(0,a.kt)("p",null,"The config synchronization feature keeps interface configuration provided via configuration files in sync with the kernel."),(0,a.kt)("h2",{id:"configuration"},"Configuration"),(0,a.kt)(s.Z,{section:"cfgsync",mdxType:"ExampleConfig"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5c8c1c6c.07c8650f.js b/assets/js/5c8c1c6c.07c8650f.js deleted file mode 100644 index dbcb779e..00000000 --- a/assets/js/5c8c1c6c.07c8650f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2029],{6151:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>r,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var t=o(7462),i=(o(7294),o(3905));o(1839);const l={title:"cunicu completion zsh",sidebar_label:"completion zsh",sidebar_class_name:"command-name",slug:"/usage/man/completion/zsh",hide_title:!0,keywords:["manpage"]},s=void 0,c={unversionedId:"usage/md/cunicu_completion_zsh",id:"usage/md/cunicu_completion_zsh",title:"cunicu completion zsh",description:"cunicu completion zsh",source:"@site/docs/usage/md/cunicu_completion_zsh.md",sourceDirName:"usage/md",slug:"/usage/man/completion/zsh",permalink:"/docs/usage/man/completion/zsh",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_completion_zsh.md",tags:[],version:"current",frontMatter:{title:"cunicu completion zsh",sidebar_label:"completion zsh",sidebar_class_name:"command-name",slug:"/usage/man/completion/zsh",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion powershell",permalink:"/docs/usage/man/completion/powershell"},next:{title:"config",permalink:"/docs/usage/man/config"}},a={},u=[{value:"cunicu completion zsh",id:"cunicu-completion-zsh",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Linux:",id:"linux",level:4},{value:"macOS:",id:"macos",level:4},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],p={toc:u};function r(e){let{components:n,...o}=e;return(0,i.kt)("wrapper",(0,t.Z)({},p,o,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-completion-zsh"},"cunicu completion zsh"),(0,i.kt)("p",null,"Generate the autocompletion script for zsh"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Generate the autocompletion script for the zsh shell."),(0,i.kt)("p",null,"If shell completion is not already enabled in your environment you will need\nto enable it. You can execute the following once:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'echo "autoload -U compinit; compinit" >> ~/.zshrc\n')),(0,i.kt)("p",null,"To load completions in your current shell session:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"source <(cunicu completion zsh); compdef _cunicu cunicu\n")),(0,i.kt)("p",null,"To load completions for every new session, execute once:"),(0,i.kt)("h4",{id:"linux"},"Linux:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'cunicu completion zsh > "${fpath[1]}/_cunicu"\n')),(0,i.kt)("h4",{id:"macos"},"macOS:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion zsh > $(brew --prefix)/share/zsh/site-functions/_cunicu\n")),(0,i.kt)("p",null,"You will need to start a new shell for this setup to take effect."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion zsh [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for zsh\n --no-descriptions disable completion descriptions\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}r.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5c8c1c6c.b03a0591.js b/assets/js/5c8c1c6c.b03a0591.js new file mode 100644 index 00000000..97162b56 --- /dev/null +++ b/assets/js/5c8c1c6c.b03a0591.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2029],{6151:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>r,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var t=o(7462),i=(o(7294),o(3905));o(1839);const l={title:"cunicu completion zsh",sidebar_label:"completion zsh",sidebar_class_name:"command-name",slug:"/usage/man/completion/zsh",hide_title:!0,keywords:["manpage"]},s=void 0,c={unversionedId:"usage/md/cunicu_completion_zsh",id:"usage/md/cunicu_completion_zsh",title:"cunicu completion zsh",description:"cunicu completion zsh",source:"@site/docs/usage/md/cunicu_completion_zsh.md",sourceDirName:"usage/md",slug:"/usage/man/completion/zsh",permalink:"/docs/usage/man/completion/zsh",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_completion_zsh.md",tags:[],version:"current",frontMatter:{title:"cunicu completion zsh",sidebar_label:"completion zsh",sidebar_class_name:"command-name",slug:"/usage/man/completion/zsh",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion powershell",permalink:"/docs/usage/man/completion/powershell"},next:{title:"config",permalink:"/docs/usage/man/config"}},a={},u=[{value:"cunicu completion zsh",id:"cunicu-completion-zsh",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Linux:",id:"linux",level:4},{value:"macOS:",id:"macos",level:4},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],p={toc:u};function r(e){let{components:n,...o}=e;return(0,i.kt)("wrapper",(0,t.Z)({},p,o,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-completion-zsh"},"cunicu completion zsh"),(0,i.kt)("p",null,"Generate the autocompletion script for zsh"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Generate the autocompletion script for the zsh shell."),(0,i.kt)("p",null,"If shell completion is not already enabled in your environment you will need\nto enable it. You can execute the following once:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'echo "autoload -U compinit; compinit" >> ~/.zshrc\n')),(0,i.kt)("p",null,"To load completions in your current shell session:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"source <(cunicu completion zsh); compdef _cunicu cunicu\n")),(0,i.kt)("p",null,"To load completions for every new session, execute once:"),(0,i.kt)("h4",{id:"linux"},"Linux:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'cunicu completion zsh > "${fpath[1]}/_cunicu"\n')),(0,i.kt)("h4",{id:"macos"},"macOS:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion zsh > $(brew --prefix)/share/zsh/site-functions/_cunicu\n")),(0,i.kt)("p",null,"You will need to start a new shell for this setup to take effect."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion zsh [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for zsh\n --no-descriptions disable completion descriptions\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}r.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6048.13d61d17.js b/assets/js/6048.13d61d17.js new file mode 100644 index 00000000..87de45b6 --- /dev/null +++ b/assets/js/6048.13d61d17.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6048],{9058:(e,t,a)=>{a.d(t,{Z:()=>N});var l=a(7294),n=a(6010),r=a(4931),o=a(7524),s=a(9960),c=a(5999);const m="sidebar_re4s",i="sidebarItemTitle_pO2u",u="sidebarItemList_Yudw",d="sidebarItem__DBe",g="sidebarItemLink_mo7H",p="sidebarItemLinkActive_I1ZP";function h(e){let{sidebar:t}=e;return l.createElement("aside",{className:"col col--3"},l.createElement("nav",{className:(0,n.Z)(m,"thin-scrollbar"),"aria-label":(0,c.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,n.Z)(i,"margin-bottom--md")},t.title),l.createElement("ul",{className:(0,n.Z)(u,"clean-list")},t.items.map((e=>l.createElement("li",{key:e.permalink,className:d},l.createElement(s.Z,{isNavLink:!0,to:e.permalink,className:g,activeClassName:p},e.title)))))))}var E=a(3102);function f(e){let{sidebar:t}=e;return l.createElement("ul",{className:"menu__list"},t.items.map((e=>l.createElement("li",{key:e.permalink,className:"menu__list-item"},l.createElement(s.Z,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active"},e.title)))))}function b(e){return l.createElement(E.Zo,{component:f,props:e})}function v(e){let{sidebar:t}=e;const a=(0,o.i)();return null!=t&&t.items.length?"mobile"===a?l.createElement(b,{sidebar:t}):l.createElement(h,{sidebar:t}):null}function N(e){const{sidebar:t,toc:a,children:o,...s}=e,c=t&&t.items.length>0;return l.createElement(r.Z,s,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},l.createElement(v,{sidebar:t}),l.createElement("main",{className:(0,n.Z)("col",{"col--7":c,"col--9 col--offset-1":!c}),itemScope:!0,itemType:"http://schema.org/Blog"},o),a&&l.createElement("div",{className:"col col--2"},a))))}},390:(e,t,a)=>{a.d(t,{Z:()=>x});var l=a(7294),n=a(6010),r=a(9460),o=a(4996);function s(e){let{children:t,className:a}=e;const{frontMatter:n,assets:s}=(0,r.C)(),{withBaseUrl:c}=(0,o.C)(),m=s.image??n.image;return l.createElement("article",{className:a,itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},m&&l.createElement("meta",{itemProp:"image",content:c(m,{absolute:!0})}),t)}var c=a(9960);const m="title_f1Hy";function i(e){let{className:t}=e;const{metadata:a,isBlogPostPage:o}=(0,r.C)(),{permalink:s,title:i}=a,u=o?"h1":"h2";return l.createElement(u,{className:(0,n.Z)(m,t),itemProp:"headline"},o?i:l.createElement(c.Z,{itemProp:"url",to:s},i))}var u=a(5999),d=a(8824);const g="container_mt6G";function p(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,d.c)();return t=>{const a=Math.ceil(t);return e(a,(0,u.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return l.createElement(l.Fragment,null,a(t))}function h(e){let{date:t,formattedDate:a}=e;return l.createElement("time",{dateTime:t,itemProp:"datePublished"},a)}function E(){return l.createElement(l.Fragment,null," \xb7 ")}function f(e){let{className:t}=e;const{metadata:a}=(0,r.C)(),{date:o,formattedDate:s,readingTime:c}=a;return l.createElement("div",{className:(0,n.Z)(g,"margin-vert--md",t)},l.createElement(h,{date:o,formattedDate:s}),void 0!==c&&l.createElement(l.Fragment,null,l.createElement(E,null),l.createElement(p,{readingTime:c})))}function b(e){return e.href?l.createElement(c.Z,e):l.createElement(l.Fragment,null,e.children)}function v(e){let{author:t,className:a}=e;const{name:r,title:o,url:s,imageURL:c,email:m}=t,i=s||m&&`mailto:${m}`||void 0;return l.createElement("div",{className:(0,n.Z)("avatar margin-bottom--sm",a)},c&&l.createElement(b,{href:i,className:"avatar__photo-link"},l.createElement("img",{className:"avatar__photo",src:c,alt:r})),r&&l.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},l.createElement("div",{className:"avatar__name"},l.createElement(b,{href:i,itemProp:"url"},l.createElement("span",{itemProp:"name"},r))),o&&l.createElement("small",{className:"avatar__subtitle",itemProp:"description"},o)))}const N="authorCol_Hf19",P="imageOnlyAuthorRow_pa_O",_="imageOnlyAuthorCol_G86a";function Z(e){let{className:t}=e;const{metadata:{authors:a},assets:o}=(0,r.C)();if(0===a.length)return null;const s=a.every((e=>{let{name:t}=e;return!t}));return l.createElement("div",{className:(0,n.Z)("margin-top--md margin-bottom--sm",s?P:"row",t)},a.map(((e,t)=>l.createElement("div",{className:(0,n.Z)(!s&&"col col--6",s?_:N),key:t},l.createElement(v,{author:{...e,imageURL:o.authorsImageUrls[t]??e.imageURL}})))))}function k(){return l.createElement("header",null,l.createElement(i,null),l.createElement(f,null),l.createElement(Z,null))}var w=a(8780),C=a(5203);function T(e){let{children:t,className:a}=e;const{isBlogPostPage:o}=(0,r.C)();return l.createElement("div",{id:o?w.blogPostContainerID:void 0,className:(0,n.Z)("markdown",a),itemProp:"articleBody"},l.createElement(C.Z,null,t))}var y=a(4881),B=a(1526),I=a(7462);function F(){return l.createElement("b",null,l.createElement(u.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))}function M(e){const{blogPostTitle:t,...a}=e;return l.createElement(c.Z,(0,I.Z)({"aria-label":(0,u.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t})},a),l.createElement(F,null))}const L="blogPostFooterDetailsFull_mRVl";function R(){const{metadata:e,isBlogPostPage:t}=(0,r.C)(),{tags:a,title:o,editUrl:s,hasTruncateMarker:c}=e,m=!t&&c,i=a.length>0;return i||m||s?l.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",t&&L)},i&&l.createElement("div",{className:(0,n.Z)("col",{"col--9":m})},l.createElement(B.Z,{tags:a})),t&&s&&l.createElement("div",{className:"col margin-top--sm"},l.createElement(y.Z,{editUrl:s})),m&&l.createElement("div",{className:(0,n.Z)("col text--right",{"col--3":i})},l.createElement(M,{blogPostTitle:o,to:e.permalink}))):null}function x(e){let{children:t,className:a}=e;const o=function(){const{isBlogPostPage:e}=(0,r.C)();return e?void 0:"margin-bottom--xl"}();return l.createElement(s,{className:(0,n.Z)(o,a)},l.createElement(k,null),l.createElement(T,null,t),l.createElement(R,null))}},9460:(e,t,a)=>{a.d(t,{C:()=>s,n:()=>o});var l=a(7294),n=a(902);const r=l.createContext(null);function o(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const o=function(e){let{content:t,isBlogPostPage:a}=e;return(0,l.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return l.createElement(r.Provider,{value:o},t)}function s(){const e=(0,l.useContext)(r);if(null===e)throw new n.i6("BlogPostProvider");return e}},8824:(e,t,a)=>{a.d(t,{c:()=>m});var l=a(7294),n=a(2263);const r=["zero","one","two","few","many","other"];function o(e){return r.filter((t=>e.includes(t)))}const s={locale:"en",pluralForms:o(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,n.Z)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:o(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),s}}),[e])}function m(){const e=c();return{selectMessage:(t,a)=>function(e,t,a){const l=e.split("|");if(1===l.length)return l[0];l.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${l.length}: ${e}`);const n=a.select(t),r=a.pluralForms.indexOf(n);return l[Math.min(r,l.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/61cce660.a648f796.js b/assets/js/61cce660.a648f796.js deleted file mode 100644 index 269ee64a..00000000 --- a/assets/js/61cce660.a648f796.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[155],{1506:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>p});var i=t(7462),n=(t(7294),t(3905));t(1839);const s={title:"cunicu completion fish",sidebar_label:"completion fish",sidebar_class_name:"command-name",slug:"/usage/man/completion/fish",hide_title:!0,keywords:["manpage"]},l=void 0,c={unversionedId:"usage/md/cunicu_completion_fish",id:"usage/md/cunicu_completion_fish",title:"cunicu completion fish",description:"cunicu completion fish",source:"@site/docs/usage/md/cunicu_completion_fish.md",sourceDirName:"usage/md",slug:"/usage/man/completion/fish",permalink:"/docs/usage/man/completion/fish",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_completion_fish.md",tags:[],version:"current",frontMatter:{title:"cunicu completion fish",sidebar_label:"completion fish",sidebar_class_name:"command-name",slug:"/usage/man/completion/fish",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion bash",permalink:"/docs/usage/man/completion/bash"},next:{title:"completion powershell",permalink:"/docs/usage/man/completion/powershell"}},a={},p=[{value:"cunicu completion fish",id:"cunicu-completion-fish",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:p};function u(e){let{components:o,...t}=e;return(0,n.kt)("wrapper",(0,i.Z)({},r,t,{components:o,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"cunicu-completion-fish"},"cunicu completion fish"),(0,n.kt)("p",null,"Generate the autocompletion script for fish"),(0,n.kt)("h3",{id:"synopsis"},"Synopsis"),(0,n.kt)("p",null,"Generate the autocompletion script for the fish shell."),(0,n.kt)("p",null,"To load completions in your current shell session:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion fish | source\n")),(0,n.kt)("p",null,"To load completions for every new session, execute once:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion fish > ~/.config/fish/completions/cunicu.fish\n")),(0,n.kt)("p",null,"You will need to start a new shell for this setup to take effect."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion fish [flags]\n")),(0,n.kt)("h3",{id:"options"},"Options"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"}," -h, --help help for fish\n --no-descriptions disable completion descriptions\n")),(0,n.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,n.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/61cce660.e3b8516c.js b/assets/js/61cce660.e3b8516c.js new file mode 100644 index 00000000..5e7419f0 --- /dev/null +++ b/assets/js/61cce660.e3b8516c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[155],{1506:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>p});var i=t(7462),n=(t(7294),t(3905));t(1839);const s={title:"cunicu completion fish",sidebar_label:"completion fish",sidebar_class_name:"command-name",slug:"/usage/man/completion/fish",hide_title:!0,keywords:["manpage"]},l=void 0,c={unversionedId:"usage/md/cunicu_completion_fish",id:"usage/md/cunicu_completion_fish",title:"cunicu completion fish",description:"cunicu completion fish",source:"@site/docs/usage/md/cunicu_completion_fish.md",sourceDirName:"usage/md",slug:"/usage/man/completion/fish",permalink:"/docs/usage/man/completion/fish",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_completion_fish.md",tags:[],version:"current",frontMatter:{title:"cunicu completion fish",sidebar_label:"completion fish",sidebar_class_name:"command-name",slug:"/usage/man/completion/fish",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion bash",permalink:"/docs/usage/man/completion/bash"},next:{title:"completion powershell",permalink:"/docs/usage/man/completion/powershell"}},a={},p=[{value:"cunicu completion fish",id:"cunicu-completion-fish",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:p};function u(e){let{components:o,...t}=e;return(0,n.kt)("wrapper",(0,i.Z)({},r,t,{components:o,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"cunicu-completion-fish"},"cunicu completion fish"),(0,n.kt)("p",null,"Generate the autocompletion script for fish"),(0,n.kt)("h3",{id:"synopsis"},"Synopsis"),(0,n.kt)("p",null,"Generate the autocompletion script for the fish shell."),(0,n.kt)("p",null,"To load completions in your current shell session:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion fish | source\n")),(0,n.kt)("p",null,"To load completions for every new session, execute once:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion fish > ~/.config/fish/completions/cunicu.fish\n")),(0,n.kt)("p",null,"You will need to start a new shell for this setup to take effect."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu completion fish [flags]\n")),(0,n.kt)("h3",{id:"options"},"Options"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"}," -h, --help help for fish\n --no-descriptions disable completion descriptions\n")),(0,n.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,n.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/646b41db.afcd9c36.js b/assets/js/646b41db.afcd9c36.js new file mode 100644 index 00000000..9997990a --- /dev/null +++ b/assets/js/646b41db.afcd9c36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[209],{2148:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>s,default:()=>p,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var r=a(7462),n=(a(7294),a(3905));a(1839);const l={title:"cunicu relay",sidebar_label:"relay",sidebar_class_name:"command-name",slug:"/usage/man/relay",hide_title:!0,keywords:["manpage"]},s=void 0,i={unversionedId:"usage/md/cunicu_relay",id:"usage/md/cunicu_relay",title:"cunicu relay",description:"cunicu relay",source:"@site/docs/usage/md/cunicu_relay.md",sourceDirName:"usage/md",slug:"/usage/man/relay",permalink:"/docs/usage/man/relay",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_relay.md",tags:[],version:"current",frontMatter:{title:"cunicu relay",sidebar_label:"relay",sidebar_class_name:"command-name",slug:"/usage/man/relay",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"monitor",permalink:"/docs/usage/man/monitor"},next:{title:"reload",permalink:"/docs/usage/man/reload"}},o={},u=[{value:"cunicu relay",id:"cunicu-relay",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:u};function p(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"cunicu-relay"},"cunicu relay"),(0,n.kt)("p",null,"Start relay API server"),(0,n.kt)("h3",{id:"synopsis"},"Synopsis"),(0,n.kt)("p",null,"This command starts a gRPC server providing cunicu agents with a list of available STUN and TURN servers."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," Currently this command does not run a TURN server itself. But relies on an external server like Coturn."),(0,n.kt)("p",null,"With this feature you can distribute a list of available STUN/TURN servers easily to a fleet of agents.\nIt also allows to issue short-lived HMAC-SHA1 credentials based the proposed TURN REST API and thereby static long term credentials."),(0,n.kt)("p",null,"The command expects a list of STUN or TURN URLs according to RFC7065/RFC7064 with a few extensions:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"A secret for the TURN REST API can be provided by the 'secret' query parameter"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Example: turn:server.com?secret=rest-api-secret"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"A time-to-live to the TURN REST API secrets can be provided by the 'ttl' query parameter"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Example: turn:server.com?ttl=1h"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Static TURN credentials can be provided by the URIs user info"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Example: turn:user1:",(0,n.kt)("a",{parentName:"li",href:"mailto:pass1@server.com"},"pass1@server.com"))))),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"cunicu relay URL... [flags]\n")),(0,n.kt)("h3",{id:"examples"},"Examples"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"relay turn:server.com?secret=rest-api-secret&ttl=1h\n")),(0,n.kt)("h3",{id:"options"},"Options"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -h, --help help for relay\n -L, --listen string listen address (default ":8080")\n -S, --secure listen with TLS\n')),(0,n.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,n.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/68b1f9b5.7a1a5968.js b/assets/js/68b1f9b5.7a1a5968.js new file mode 100644 index 00000000..fc763755 --- /dev/null +++ b/assets/js/68b1f9b5.7a1a5968.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1503],{8473:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>u});var i=t(7462),a=(t(7294),t(3905));t(1839);const s={title:"cunicu wg show",sidebar_label:"wg show",sidebar_class_name:"command-name",slug:"/usage/man/wg/show",hide_title:!0,keywords:["manpage"]},o=void 0,r={unversionedId:"usage/md/cunicu_wg_show",id:"usage/md/cunicu_wg_show",title:"cunicu wg show",description:"cunicu wg show",source:"@site/docs/usage/md/cunicu_wg_show.md",sourceDirName:"usage/md",slug:"/usage/man/wg/show",permalink:"/docs/usage/man/wg/show",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_wg_show.md",tags:[],version:"current",frontMatter:{title:"cunicu wg show",sidebar_label:"wg show",sidebar_class_name:"command-name",slug:"/usage/man/wg/show",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg pubkey",permalink:"/docs/usage/man/wg/pubkey"},next:{title:"wg showconf",permalink:"/docs/usage/man/wg/showconf"}},l={},u=[{value:"cunicu wg show",id:"cunicu-wg-show",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:u};function d(e){let{components:n,...t}=e;return(0,a.kt)("wrapper",(0,i.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"cunicu-wg-show"},"cunicu wg show"),(0,a.kt)("p",null,"Shows current WireGuard configuration and runtime information of specified ","[interface]","."),(0,a.kt)("h3",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"Shows current WireGuard configuration and runtime information of specified ","[interface]","."),(0,a.kt)("p",null,"If no ","[interface]"," is specified, ","[interface]"," defaults to 'all'."),(0,a.kt)("p",null,"If 'interfaces' is specified, prints a list of all WireGuard interfaces, one per line, and quits."),(0,a.kt)("p",null,"If no options are given after the interface specification, then prints a list of all attributes in a visually pleasing way meant for the terminal.\nOtherwise, prints specified information grouped by newlines and tabs, meant to be used in scripts."),(0,a.kt)("p",null,"For this script-friendly display, if 'all' is specified, then the first field for all categories of information is the interface name."),(0,a.kt)("p",null,"If 'dump' is specified, then several lines are printed; the first contains in order separated by tab: private-key, public-key, listen-port, fwmark.\nSubsequent lines are printed for each peer and contain in order separated by tab: public-key, preshared-key, endpoint, allowed-ips, latest-handshake, transfer-rx, transfer-tx, persistent-keepalive."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cunicu wg show { interface-name | all | interfaces } [{ public-key | private-key | listen-port | fwmark | peers | preshared-keys | endpoints | allowed-ips | latest-handshakes | transfer | persistent-keepalive | dump }] [flags]\n")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -h, --help help for show\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,a.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,a.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/68b1f9b5.dc5f99b0.js b/assets/js/68b1f9b5.dc5f99b0.js deleted file mode 100644 index b78fbeda..00000000 --- a/assets/js/68b1f9b5.dc5f99b0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1503],{8473:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>u});var i=t(7462),a=(t(7294),t(3905));t(1839);const s={title:"cunicu wg show",sidebar_label:"wg show",sidebar_class_name:"command-name",slug:"/usage/man/wg/show",hide_title:!0,keywords:["manpage"]},o=void 0,r={unversionedId:"usage/md/cunicu_wg_show",id:"usage/md/cunicu_wg_show",title:"cunicu wg show",description:"cunicu wg show",source:"@site/docs/usage/md/cunicu_wg_show.md",sourceDirName:"usage/md",slug:"/usage/man/wg/show",permalink:"/docs/usage/man/wg/show",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_wg_show.md",tags:[],version:"current",frontMatter:{title:"cunicu wg show",sidebar_label:"wg show",sidebar_class_name:"command-name",slug:"/usage/man/wg/show",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg pubkey",permalink:"/docs/usage/man/wg/pubkey"},next:{title:"wg showconf",permalink:"/docs/usage/man/wg/showconf"}},l={},u=[{value:"cunicu wg show",id:"cunicu-wg-show",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:u};function d(e){let{components:n,...t}=e;return(0,a.kt)("wrapper",(0,i.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"cunicu-wg-show"},"cunicu wg show"),(0,a.kt)("p",null,"Shows current WireGuard configuration and runtime information of specified ","[interface]","."),(0,a.kt)("h3",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"Shows current WireGuard configuration and runtime information of specified ","[interface]","."),(0,a.kt)("p",null,"If no ","[interface]"," is specified, ","[interface]"," defaults to 'all'."),(0,a.kt)("p",null,"If 'interfaces' is specified, prints a list of all WireGuard interfaces, one per line, and quits."),(0,a.kt)("p",null,"If no options are given after the interface specification, then prints a list of all attributes in a visually pleasing way meant for the terminal.\nOtherwise, prints specified information grouped by newlines and tabs, meant to be used in scripts."),(0,a.kt)("p",null,"For this script-friendly display, if 'all' is specified, then the first field for all categories of information is the interface name."),(0,a.kt)("p",null,"If 'dump' is specified, then several lines are printed; the first contains in order separated by tab: private-key, public-key, listen-port, fwmark.\nSubsequent lines are printed for each peer and contain in order separated by tab: public-key, preshared-key, endpoint, allowed-ips, latest-handshake, transfer-rx, transfer-tx, persistent-keepalive."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cunicu wg show { interface-name | all | interfaces } [{ public-key | private-key | listen-port | fwmark | peers | preshared-keys | endpoints | allowed-ips | latest-handshakes | transfer | persistent-keepalive | dump }] [flags]\n")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -h, --help help for show\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,a.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,a.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6dcaddc4.64e816db.js b/assets/js/6dcaddc4.64e816db.js new file mode 100644 index 00000000..f0193bf2 --- /dev/null +++ b/assets/js/6dcaddc4.64e816db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7577],{6141:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var o=n(7462),i=(n(7294),n(3905));n(1839);const a={sidebar_position:199},s="Development",l={unversionedId:"development/index",id:"development/index",title:"Development",description:"cun\u012bcu is written almost completely in Go and heavily relies on awesome tooling and packages for Golang:",source:"@site/docs/development/index.md",sourceDirName:"development",slug:"/development/",permalink:"/docs/development/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/development/index.md",tags:[],version:"current",sidebarPosition:199,frontMatter:{sidebar_position:199},sidebar:"tutorialSidebar",previous:{title:"Comparison",permalink:"/docs/comparison"},next:{title:"Proxying",permalink:"/docs/development/proxying"}},r={},p=[{value:"Testing",id:"testing",level:2}],c={toc:p};function u(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"development"},"Development"),(0,i.kt)("p",null,"cun\u012bcu is written almost completely in Go and heavily relies on awesome tooling and packages for Golang:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://goreleaser.com/"},"GoReleaser")," for release automation"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://onsi.github.io/ginkgo"},"Ginkgo")," and ",(0,i.kt)("a",{parentName:"li",href:"https://onsi.github.io/gomega"},"Gomega")," for testing"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/pion"},"Pion")," for its ICE, STUN, TURN implementation"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/stv0g/gont"},"Gont")," for end-to-end testing in various network topologies")),(0,i.kt)("p",null,"Furthermore use the following services to manage our development:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/stv0g/cunicu"},"GitHub")," for source code management and CI pipelines"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://app.codacy.com/gh/stv0g/cunicu/dashboard"},"Codacy")," for code quality checks"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://app.codecov.io/gh/stv0g/cunicu"},"Codecov")," for code coverage analysis")),(0,i.kt)("h2",{id:"testing"},"Testing"),(0,i.kt)("p",null,"We aim to maintain a test coverage above 80% of the lines of code.\nPlease make sure that your merge requests include tests which do not lower the coverage percentage."),(0,i.kt)("p",null,"cun\u012bcu's code-base is tested using the Ginkgo/Gomega testing framework.\nUnit tests can be found alongside the code in files with a ",(0,i.kt)("inlineCode",{parentName:"p"},"_test.go")," suffix.\nEnd-to-end (e2e) integration tests can be found in the ",(0,i.kt)("inlineCode",{parentName:"p"},"test/e2e")," directory."),(0,i.kt)("p",null,"The e2e tests use Gont to construct virtual network environment using Linux's ",(0,i.kt)("inlineCode",{parentName:"p"},"net")," namespaces and ",(0,i.kt)("inlineCode",{parentName:"p"},"veth")," point-to-point links.\nThis allows us to test cun\u012bcu in both simple and complex network topologies including, L2 switches, L3 routers, firewalls and NAT boxes."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6dcaddc4.7b20b9c9.js b/assets/js/6dcaddc4.7b20b9c9.js deleted file mode 100644 index 05d63ce1..00000000 --- a/assets/js/6dcaddc4.7b20b9c9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7577],{6141:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=o(7462),a=(o(7294),o(3905));o(1839);const i={sidebar_position:199},r="Development",s={unversionedId:"development/index",id:"development/index",title:"Development",description:"cun\u012bcu is written in 100% Go and as such we heavily rely on the awesome tooling and packages for Golang:",source:"@site/docs/development/index.md",sourceDirName:"development",slug:"/development/",permalink:"/docs/development/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/development/index.md",tags:[],version:"current",sidebarPosition:199,frontMatter:{sidebar_position:199},sidebar:"tutorialSidebar",previous:{title:"Comparison",permalink:"/docs/comparison"},next:{title:"Proxying",permalink:"/docs/development/proxying"}},l={},p=[],m={toc:p};function c(e){let{components:t,...o}=e;return(0,a.kt)("wrapper",(0,n.Z)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"development"},"Development"),(0,a.kt)("p",null,"cun\u012bcu is written in 100% Go and as such we heavily rely on the awesome tooling and packages for Golang:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://goreleaser.com/"},"GoReleaser")," for release automation"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://onsi.github.io/ginkgo"},"Ginkgo")," and ",(0,a.kt)("a",{parentName:"li",href:"https://onsi.github.io/gomega"},"Gomega")," for testing"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/pion"},"Pion")," for its ICE, STUN, TURN implementation"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/stv0g/gont"},"Gont")," for end-to-end testing in various network topologies")),(0,a.kt)("p",null,"Furthermore use the following services to manage our development:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/stv0g/cunicu"},"GitHub")," for source code management and CI pipelines"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://app.codacy.com/gh/stv0g/cunicu/dashboard"},"Codacy")," for code quality checks"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://app.codecov.io/gh/stv0g/cunicu"},"Codecov")," for code coverage analysis")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/761a043d.922860eb.js b/assets/js/761a043d.922860eb.js new file mode 100644 index 00000000..df7ce86a --- /dev/null +++ b/assets/js/761a043d.922860eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6909],{4279:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>u,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var n=a(7462),s=(a(7294),a(3905));a(1839);const i={title:"cunicu self-update",sidebar_label:"self-update",sidebar_class_name:"command-name",slug:"/usage/man/self-update",hide_title:!0,keywords:["manpage"]},u=void 0,l={unversionedId:"usage/md/cunicu_self-update",id:"usage/md/cunicu_self-update",title:"cunicu self-update",description:"cunicu self-update",source:"@site/docs/usage/md/cunicu_self-update.md",sourceDirName:"usage/md",slug:"/usage/man/self-update",permalink:"/docs/usage/man/self-update",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_self-update.md",tags:[],version:"current",frontMatter:{title:"cunicu self-update",sidebar_label:"self-update",sidebar_class_name:"command-name",slug:"/usage/man/self-update",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"restart",permalink:"/docs/usage/man/restart"},next:{title:"selfupdate",permalink:"/docs/usage/man/selfupdate"}},o={},d=[{value:"cunicu self-update",id:"cunicu-self-update",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:d};function c(e){let{components:t,...a}=e;return(0,s.kt)("wrapper",(0,n.Z)({},r,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-self-update"},"cunicu self-update"),(0,s.kt)("p",null,"Update the cun\u012bcu binary"),(0,s.kt)("h3",{id:"synopsis"},"Synopsis"),(0,s.kt)("p",null,'The command "self-update" downloads the latest stable release of cunicu from\nGitHub and replaces the currently running binary. After download, the\nauthenticity of the binary is verified using the GPG signature on the release\nfiles.'),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu self-update [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -h, --help help for self-update\n -o, --output filename Save the downloaded file as filename (default "cunicu")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/761a043d.adc4d10f.js b/assets/js/761a043d.adc4d10f.js deleted file mode 100644 index e41aa564..00000000 --- a/assets/js/761a043d.adc4d10f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6909],{4279:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>u,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var n=a(7462),s=(a(7294),a(3905));a(1839);const i={title:"cunicu self-update",sidebar_label:"self-update",sidebar_class_name:"command-name",slug:"/usage/man/self-update",hide_title:!0,keywords:["manpage"]},u=void 0,l={unversionedId:"usage/md/cunicu_self-update",id:"usage/md/cunicu_self-update",title:"cunicu self-update",description:"cunicu self-update",source:"@site/docs/usage/md/cunicu_self-update.md",sourceDirName:"usage/md",slug:"/usage/man/self-update",permalink:"/docs/usage/man/self-update",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_self-update.md",tags:[],version:"current",frontMatter:{title:"cunicu self-update",sidebar_label:"self-update",sidebar_class_name:"command-name",slug:"/usage/man/self-update",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"restart",permalink:"/docs/usage/man/restart"},next:{title:"selfupdate",permalink:"/docs/usage/man/selfupdate"}},o={},d=[{value:"cunicu self-update",id:"cunicu-self-update",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],r={toc:d};function c(e){let{components:t,...a}=e;return(0,s.kt)("wrapper",(0,n.Z)({},r,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-self-update"},"cunicu self-update"),(0,s.kt)("p",null,"Update the cun\u012bcu binary"),(0,s.kt)("h3",{id:"synopsis"},"Synopsis"),(0,s.kt)("p",null,'The command "self-update" downloads the latest stable release of cunicu from\nGitHub and replaces the currently running binary. After download, the\nauthenticity of the binary is verified using the GPG signature on the release\nfiles.'),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu self-update [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -h, --help help for self-update\n -o, --output filename Save the downloaded file as filename (default "cunicu")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/76b3d27b.27ebd29c.js b/assets/js/76b3d27b.27ebd29c.js new file mode 100644 index 00000000..26b1bb5a --- /dev/null +++ b/assets/js/76b3d27b.27ebd29c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2944],{4140:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>u,toc:()=>l});var a=t(7462),i=(t(7294),t(3905));t(1839);const o={title:"cunicu wg genkey",sidebar_label:"wg genkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/genkey",hide_title:!0,keywords:["manpage"]},s=void 0,u={unversionedId:"usage/md/cunicu_wg_genkey",id:"usage/md/cunicu_wg_genkey",title:"cunicu wg genkey",description:"cunicu wg genkey",source:"@site/docs/usage/md/cunicu_wg_genkey.md",sourceDirName:"usage/md",slug:"/usage/man/wg/genkey",permalink:"/docs/usage/man/wg/genkey",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_wg_genkey.md",tags:[],version:"current",frontMatter:{title:"cunicu wg genkey",sidebar_label:"wg genkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/genkey",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg",permalink:"/docs/usage/man/wg"},next:{title:"wg genpsk",permalink:"/docs/usage/man/wg/genpsk"}},r={},l=[{value:"cunicu wg genkey",id:"cunicu-wg-genkey",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],g={toc:l};function c(e){let{components:n,...t}=e;return(0,i.kt)("wrapper",(0,a.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-wg-genkey"},"cunicu wg genkey"),(0,i.kt)("p",null,"Generates a random private key in base64 and prints it to standard output."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu wg genkey [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for genkey\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/76b3d27b.5c78b1d1.js b/assets/js/76b3d27b.5c78b1d1.js deleted file mode 100644 index 086a35af..00000000 --- a/assets/js/76b3d27b.5c78b1d1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2944],{4140:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>r,toc:()=>l});var a=t(7462),i=(t(7294),t(3905));t(1839);const o={title:"cunicu wg genkey",sidebar_label:"wg genkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/genkey",hide_title:!0,keywords:["manpage"]},s=void 0,r={unversionedId:"usage/md/cunicu_wg_genkey",id:"usage/md/cunicu_wg_genkey",title:"cunicu wg genkey",description:"cunicu wg genkey",source:"@site/docs/usage/md/cunicu_wg_genkey.md",sourceDirName:"usage/md",slug:"/usage/man/wg/genkey",permalink:"/docs/usage/man/wg/genkey",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_wg_genkey.md",tags:[],version:"current",frontMatter:{title:"cunicu wg genkey",sidebar_label:"wg genkey",sidebar_class_name:"command-name",slug:"/usage/man/wg/genkey",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg",permalink:"/docs/usage/man/wg"},next:{title:"wg genpsk",permalink:"/docs/usage/man/wg/genpsk"}},u={},l=[{value:"cunicu wg genkey",id:"cunicu-wg-genkey",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],g={toc:l};function c(e){let{components:n,...t}=e;return(0,i.kt)("wrapper",(0,a.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-wg-genkey"},"cunicu wg genkey"),(0,i.kt)("p",null,"Generates a random private key in base64 and prints it to standard output."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu wg genkey [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for genkey\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7746b56b.0417243a.js b/assets/js/7746b56b.0417243a.js deleted file mode 100644 index e7bf3160..00000000 --- a/assets/js/7746b56b.0417243a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5015],{2154:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>r,toc:()=>u});var t=a(7462),i=(a(7294),a(3905));a(1839);const o={title:"cunicu version",sidebar_label:"version",sidebar_class_name:"command-name",slug:"/usage/man/version",hide_title:!0,keywords:["manpage"]},s=void 0,r={unversionedId:"usage/md/cunicu_version",id:"usage/md/cunicu_version",title:"cunicu version",description:"cunicu version",source:"@site/docs/usage/md/cunicu_version.md",sourceDirName:"usage/md",slug:"/usage/man/version",permalink:"/docs/usage/man/version",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_version.md",tags:[],version:"current",frontMatter:{title:"cunicu version",sidebar_label:"version",sidebar_class_name:"command-name",slug:"/usage/man/version",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"sync",permalink:"/docs/usage/man/sync"},next:{title:"wg",permalink:"/docs/usage/man/wg"}},l={},u=[{value:"cunicu version",id:"cunicu-version",level:2},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:u};function m(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},c,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-version"},"cunicu version"),(0,i.kt)("p",null,"Show version of the cun\u012bcu binary and optionally also a running daemon"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu version [flags]\n")),(0,i.kt)("h3",{id:"examples"},"Examples"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"$ sudo cunicu version\nclient: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)\ndaemon: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -f, --format format Output format (one of: human, json) (default "human")\n -h, --help help for version\n -s, --short Only show version and nothing else\n')),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7746b56b.a7ac979b.js b/assets/js/7746b56b.a7ac979b.js new file mode 100644 index 00000000..460d252d --- /dev/null +++ b/assets/js/7746b56b.a7ac979b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5015],{2154:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>r,toc:()=>u});var t=a(7462),i=(a(7294),a(3905));a(1839);const o={title:"cunicu version",sidebar_label:"version",sidebar_class_name:"command-name",slug:"/usage/man/version",hide_title:!0,keywords:["manpage"]},s=void 0,r={unversionedId:"usage/md/cunicu_version",id:"usage/md/cunicu_version",title:"cunicu version",description:"cunicu version",source:"@site/docs/usage/md/cunicu_version.md",sourceDirName:"usage/md",slug:"/usage/man/version",permalink:"/docs/usage/man/version",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_version.md",tags:[],version:"current",frontMatter:{title:"cunicu version",sidebar_label:"version",sidebar_class_name:"command-name",slug:"/usage/man/version",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"sync",permalink:"/docs/usage/man/sync"},next:{title:"wg",permalink:"/docs/usage/man/wg"}},l={},u=[{value:"cunicu version",id:"cunicu-version",level:2},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:u};function m(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},c,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-version"},"cunicu version"),(0,i.kt)("p",null,"Show version of the cun\u012bcu binary and optionally also a running daemon"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu version [flags]\n")),(0,i.kt)("h3",{id:"examples"},"Examples"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"$ sudo cunicu version\nclient: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)\ndaemon: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -f, --format format Output format (one of: human, json) (default "human")\n -h, --help help for version\n -s, --short Only show version and nothing else\n')),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7e492805.91393bf5.js b/assets/js/7e492805.91393bf5.js new file mode 100644 index 00000000..d4c32dab --- /dev/null +++ b/assets/js/7e492805.91393bf5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9768],{4562:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var t=s(7462),a=(s(7294),s(3905));s(1839);const i={title:"cunicu sync",sidebar_label:"sync",sidebar_class_name:"command-name",slug:"/usage/man/sync",hide_title:!0,keywords:["manpage"]},o=void 0,c={unversionedId:"usage/md/cunicu_sync",id:"usage/md/cunicu_sync",title:"cunicu sync",description:"cunicu sync",source:"@site/docs/usage/md/cunicu_sync.md",sourceDirName:"usage/md",slug:"/usage/man/sync",permalink:"/docs/usage/man/sync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_sync.md",tags:[],version:"current",frontMatter:{title:"cunicu sync",sidebar_label:"sync",sidebar_class_name:"command-name",slug:"/usage/man/sync",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"stop",permalink:"/docs/usage/man/stop"},next:{title:"version",permalink:"/docs/usage/man/version"}},r={},u=[{value:"cunicu sync",id:"cunicu-sync",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:u};function d(e){let{components:n,...s}=e;return(0,a.kt)("wrapper",(0,t.Z)({},l,s,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"cunicu-sync"},"cunicu sync"),(0,a.kt)("p",null,"Synchronize cun\u012bcu daemon state"),(0,a.kt)("h3",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"Synchronizes the internal daemon state with kernel routes, interfaces and addresses"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cunicu sync [flags]\n")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -h, --help help for sync\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,a.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,a.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7e492805.a361ff99.js b/assets/js/7e492805.a361ff99.js deleted file mode 100644 index d4260366..00000000 --- a/assets/js/7e492805.a361ff99.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9768],{4562:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var t=s(7462),a=(s(7294),s(3905));s(1839);const i={title:"cunicu sync",sidebar_label:"sync",sidebar_class_name:"command-name",slug:"/usage/man/sync",hide_title:!0,keywords:["manpage"]},o=void 0,c={unversionedId:"usage/md/cunicu_sync",id:"usage/md/cunicu_sync",title:"cunicu sync",description:"cunicu sync",source:"@site/docs/usage/md/cunicu_sync.md",sourceDirName:"usage/md",slug:"/usage/man/sync",permalink:"/docs/usage/man/sync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_sync.md",tags:[],version:"current",frontMatter:{title:"cunicu sync",sidebar_label:"sync",sidebar_class_name:"command-name",slug:"/usage/man/sync",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"stop",permalink:"/docs/usage/man/stop"},next:{title:"version",permalink:"/docs/usage/man/version"}},r={},u=[{value:"cunicu sync",id:"cunicu-sync",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:u};function d(e){let{components:n,...s}=e;return(0,a.kt)("wrapper",(0,t.Z)({},l,s,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"cunicu-sync"},"cunicu sync"),(0,a.kt)("p",null,"Synchronize cun\u012bcu daemon state"),(0,a.kt)("h3",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"Synchronizes the internal daemon state with kernel routes, interfaces and addresses"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cunicu sync [flags]\n")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -h, --help help for sync\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,a.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,a.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/814.7577b675.js b/assets/js/814.7577b675.js new file mode 100644 index 00000000..63da9b5d --- /dev/null +++ b/assets/js/814.7577b675.js @@ -0,0 +1 @@ +(self.webpackChunkwice=self.webpackChunkwice||[]).push([[814],{814:(e,t,n)=>{"use strict";n.d(t,{Z:()=>q});var o=n(7462),s=n(7294),r=n(2389),c=n(6010),a=n(2949),l=n(6668);function i(){const{prism:e}=(0,l.L)(),{colorMode:t}=(0,a.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}var u=n(5281),p=n(7594),d=n.n(p);const m=/title=(?<quote>["'])(?<title>.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,h={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function y(e,t){const n=e.map((e=>{const{start:n,end:o}=h[e];return`(?:${n}\\s*(${t.flatMap((e=>{var t,n;return[e.line,null==(t=e.block)?void 0:t.start,null==(n=e.block)?void 0:n.end].filter(Boolean)})).join("|")})\\s*${o})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function f(e,t){let n=e.replace(/\n$/,"");const{language:o,magicComments:s,metastring:r}=t;if(r&&g.test(r)){const e=r.match(g).groups.range;if(0===s.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${r}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=s[0].className,o=d()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(o),code:n}}if(void 0===o)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return y(["js","jsBlock"],t);case"jsx":case"tsx":return y(["js","jsBlock","jsx"],t);case"html":return y(["js","jsBlock","html"],t);case"python":case"py":case"bash":return y(["bash"],t);case"markdown":case"md":return y(["html","jsx","bash"],t);default:return y(Object.keys(h),t)}}(o,s),a=n.split("\n"),l=Object.fromEntries(s.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(s.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(s.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),p=Object.fromEntries(s.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let d=0;d<a.length;){const e=a[d].match(c);if(!e){d+=1;continue}const t=e.slice(1).find((e=>void 0!==e));i[t]?l[i[t]].range+=`${d},`:u[t]?l[u[t]].start=d:p[t]&&(l[p[t]].range+=`${l[p[t]].start}-${d-1},`),a.splice(d,1)}n=a.join("\n");const m={};return Object.entries(l).forEach((e=>{let[t,{range:n}]=e;d()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const b="codeBlockContainer_Ckt0";function k(e){let{as:t,...n}=e;const r=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[o,s]=e;const r=t[o];r&&"string"==typeof s&&(n[r]=s)})),n}(i());return s.createElement(t,(0,o.Z)({},n,{style:r,className:(0,c.Z)(n.className,b,u.k.common.codeBlock)}))}const v={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function E(e){let{children:t,className:n}=e;return s.createElement(k,{as:"pre",tabIndex:0,className:(0,c.Z)(v.codeBlockStandalone,"thin-scrollbar",n)},s.createElement("code",{className:v.codeBlockLines},t))}var N=n(902);const B={attributes:!0,characterData:!0,childList:!0,subtree:!0};function C(e,t){const[n,o]=(0,s.useState)(),r=(0,s.useCallback)((()=>{var t;o(null==(t=e.current)?void 0:t.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,s.useEffect)((()=>{r()}),[r]),function(e,t,n){void 0===n&&(n=B);const o=(0,N.zX)(t),r=(0,N.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,r),()=>t.disconnect()}),[e,o,r])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),r())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const w={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var L={Prism:n(7410).Z,theme:w};function j(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(){return T=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},T.apply(this,arguments)}var S=/\r\n|\r|\n/,x=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},_=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},I=function(e,t){var n=e.plain,o=Object.create(null),s=e.styles.reduce((function(e,n){var o=n.languages,s=n.style;return o&&!o.includes(t)||n.types.forEach((function(t){var n=T({},e[t],s);e[t]=n})),e}),o);return s.root=n,s.plain=T({},n,{backgroundColor:null}),s};function O(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(n[o]=e[o]);return n}const P=function(e){function t(){for(var t=this,n=[],o=arguments.length;o--;)n[o]=arguments[o];e.apply(this,n),j(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?I(e.theme,e.language):void 0;return t.themeDict=n})),j(this,"getLineProps",(function(e){var n=e.key,o=e.className,s=e.style,r=T({},O(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(r.style=c.plain),void 0!==s&&(r.style=void 0!==r.style?T({},r.style,s):s),void 0!==n&&(r.key=n),o&&(r.className+=" "+o),r})),j(this,"getStyleForToken",(function(e){var n=e.types,o=e.empty,s=n.length,r=t.getThemeDict(t.props);if(void 0!==r){if(1===s&&"plain"===n[0])return o?{display:"inline-block"}:void 0;if(1===s&&!o)return r[n[0]];var c=o?{display:"inline-block"}:{},a=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[c].concat(a))}})),j(this,"getTokenProps",(function(e){var n=e.key,o=e.className,s=e.style,r=e.token,c=T({},O(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:t.getStyleForToken(r),key:void 0});return void 0!==s&&(c.style=void 0!==c.style?T({},c.style,s):s),void 0!==n&&(c.key=n),o&&(c.className+=" "+o),c})),j(this,"tokenize",(function(e,t,n,o){var s={code:t,grammar:n,language:o,tokens:[]};e.hooks.run("before-tokenize",s);var r=s.tokens=e.tokenize(s.code,s.grammar,s.language);return e.hooks.run("after-tokenize",s),r}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,o=e.code,s=e.children,r=this.getThemeDict(this.props),c=t.languages[n];return s({tokens:function(e){for(var t=[[]],n=[e],o=[0],s=[e.length],r=0,c=0,a=[],l=[a];c>-1;){for(;(r=o[c]++)<s[c];){var i=void 0,u=t[c],p=n[c][r];if("string"==typeof p?(u=c>0?u:["plain"],i=p):(u=_(u,p.type),p.alias&&(u=_(u,p.alias)),i=p.content),"string"==typeof i){var d=i.split(S),m=d.length;a.push({types:u,content:d[0]});for(var g=1;g<m;g++)x(a),l.push(a=[]),a.push({types:u,content:d[g]})}else c++,t.push(u),n.push(i),o.push(0),s.push(i.length)}c--,t.pop(),n.pop(),o.pop(),s.pop()}return x(a),l}(void 0!==c?this.tokenize(t,o,c,n):[o]),className:"prism-code language-"+n,style:void 0!==r?r.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(s.Component),A="codeLine_lJS_",Z="codeLineNumber_Tfdd",$="codeLineContent_feaV";function z(e){let{line:t,classNames:n,showLineNumbers:r,getLineProps:a,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const i=a({line:t,className:(0,c.Z)(n,r&&A)}),u=t.map(((e,t)=>s.createElement("span",(0,o.Z)({key:t},l({token:e,key:t})))));return s.createElement("span",i,r?s.createElement(s.Fragment,null,s.createElement("span",{className:Z}),s.createElement("span",{className:$},u)):s.createElement(s.Fragment,null,u,s.createElement("br",null)))}var D=n(5999);const H={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function M(e){let{code:t,className:n}=e;const[o,r]=(0,s.useState)(!1),a=(0,s.useRef)(void 0),l=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;const o=document.createElement("textarea"),s=document.activeElement;o.value=e,o.setAttribute("readonly",""),o.style.contain="strict",o.style.position="absolute",o.style.left="-9999px",o.style.fontSize="12pt";const r=document.getSelection();let c=!1;r.rangeCount>0&&(c=r.getRangeAt(0)),n.append(o),o.select(),o.selectionStart=0,o.selectionEnd=e.length;let a=!1;try{a=document.execCommand("copy")}catch{}o.remove(),c&&(r.removeAllRanges(),r.addRange(c)),s&&s.focus()}(t),r(!0),a.current=window.setTimeout((()=>{r(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(a.current)),[]),s.createElement("button",{type:"button","aria-label":o?(0,D.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,D.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,D.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,c.Z)("clean-btn",n,H.copyButton,o&&H.copyButtonCopied),onClick:l},s.createElement("span",{className:H.copyButtonIcons,"aria-hidden":"true"},s.createElement("svg",{className:H.copyButtonIcon,viewBox:"0 0 24 24"},s.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})),s.createElement("svg",{className:H.copyButtonSuccessIcon,viewBox:"0 0 24 24"},s.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const V="wordWrapButtonIcon_Bwma",W="wordWrapButtonEnabled_EoeP";function R(e){let{className:t,onClick:n,isEnabled:o}=e;const r=(0,D.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return s.createElement("button",{type:"button",onClick:n,className:(0,c.Z)("clean-btn",t,o&&W),"aria-label":r,title:r},s.createElement("svg",{className:V,viewBox:"0 0 24 24","aria-hidden":"true"},s.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})))}function F(e){let{children:t,className:n="",metastring:r,title:a,showLineNumbers:u,language:p}=e;const{prism:{defaultLanguage:d,magicComments:g}}=(0,l.L)(),h=p??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return null==t?void 0:t.replace(/language-/,"")}(n)??d,y=i(),b=function(){const[e,t]=(0,s.useState)(!1),[n,o]=(0,s.useState)(!1),r=(0,s.useRef)(null),c=(0,s.useCallback)((()=>{const n=r.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[r,e]),a=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");o(n)}),[r]);return C(r,a),(0,s.useEffect)((()=>{a()}),[e,a]),(0,s.useEffect)((()=>(window.addEventListener("resize",a,{passive:!0}),()=>{window.removeEventListener("resize",a)})),[a]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:c}}(),E=function(e){var t;return(null==e||null==(t=e.match(m))?void 0:t.groups.title)??""}(r)||a,{lineClassNames:N,code:B}=f(t,{metastring:r,language:h,magicComments:g}),w=u??function(e){return Boolean(null==e?void 0:e.includes("showLineNumbers"))}(r);return s.createElement(k,{as:"div",className:(0,c.Z)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`)},E&&s.createElement("div",{className:v.codeBlockTitle},E),s.createElement("div",{className:v.codeBlockContent},s.createElement(P,(0,o.Z)({},L,{theme:y,code:B,language:h??"text"}),(e=>{let{className:t,tokens:n,getLineProps:o,getTokenProps:r}=e;return s.createElement("pre",{tabIndex:0,ref:b.codeBlockRef,className:(0,c.Z)(t,v.codeBlock,"thin-scrollbar")},s.createElement("code",{className:(0,c.Z)(v.codeBlockLines,w&&v.codeBlockLinesWithNumbering)},n.map(((e,t)=>s.createElement(z,{key:t,line:e,getLineProps:o,getTokenProps:r,classNames:N[t],showLineNumbers:w})))))})),s.createElement("div",{className:v.buttonGroup},(b.isEnabled||b.isCodeScrollable)&&s.createElement(R,{className:v.codeButton,onClick:()=>b.toggle(),isEnabled:b.isEnabled}),s.createElement(M,{className:v.codeButton,code:B}))))}function q(e){let{children:t,...n}=e;const c=(0,r.Z)(),a=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof a?F:E;return s.createElement(l,(0,o.Z)({key:String(c)},n),a)}},7594:(e,t)=>{function n(e){let t,n=[];for(let o of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(o))n.push(parseInt(o,10));else if(t=o.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,o,s,r]=t;if(o&&r){o=parseInt(o),r=parseInt(r);const e=o<r?1:-1;"-"!==s&&".."!==s&&"\u2025"!==s||(r+=e);for(let t=o;t!==r;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/83dca9e6.3eb98048.js b/assets/js/83dca9e6.3eb98048.js deleted file mode 100644 index 4d631e54..00000000 --- a/assets/js/83dca9e6.3eb98048.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[822],{656:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>r,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var n=o(7462),i=(o(7294),o(3905));o(1839);const a={title:"cunicu completion bash",sidebar_label:"completion bash",sidebar_class_name:"command-name",slug:"/usage/man/completion/bash",hide_title:!0,keywords:["manpage"]},l=void 0,s={unversionedId:"usage/md/cunicu_completion_bash",id:"usage/md/cunicu_completion_bash",title:"cunicu completion bash",description:"cunicu completion bash",source:"@site/docs/usage/md/cunicu_completion_bash.md",sourceDirName:"usage/md",slug:"/usage/man/completion/bash",permalink:"/docs/usage/man/completion/bash",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_completion_bash.md",tags:[],version:"current",frontMatter:{title:"cunicu completion bash",sidebar_label:"completion bash",sidebar_class_name:"command-name",slug:"/usage/man/completion/bash",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion",permalink:"/docs/usage/man/completion"},next:{title:"completion fish",permalink:"/docs/usage/man/completion/fish"}},c={},p=[{value:"cunicu completion bash",id:"cunicu-completion-bash",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Linux:",id:"linux",level:4},{value:"macOS:",id:"macos",level:4},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],u={toc:p};function r(e){let{components:t,...o}=e;return(0,i.kt)("wrapper",(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-completion-bash"},"cunicu completion bash"),(0,i.kt)("p",null,"Generate the autocompletion script for bash"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Generate the autocompletion script for the bash shell."),(0,i.kt)("p",null,"This script depends on the 'bash-completion' package.\nIf it is not installed already, you can install it via your OS's package manager."),(0,i.kt)("p",null,"To load completions in your current shell session:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"source <(cunicu completion bash)\n")),(0,i.kt)("p",null,"To load completions for every new session, execute once:"),(0,i.kt)("h4",{id:"linux"},"Linux:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion bash > /etc/bash_completion.d/cunicu\n")),(0,i.kt)("h4",{id:"macos"},"macOS:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion bash > $(brew --prefix)/etc/bash_completion.d/cunicu\n")),(0,i.kt)("p",null,"You will need to start a new shell for this setup to take effect."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion bash\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for bash\n --no-descriptions disable completion descriptions\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}r.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/83dca9e6.6ee40630.js b/assets/js/83dca9e6.6ee40630.js new file mode 100644 index 00000000..a98e1104 --- /dev/null +++ b/assets/js/83dca9e6.6ee40630.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[822],{656:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>r,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var n=o(7462),i=(o(7294),o(3905));o(1839);const a={title:"cunicu completion bash",sidebar_label:"completion bash",sidebar_class_name:"command-name",slug:"/usage/man/completion/bash",hide_title:!0,keywords:["manpage"]},l=void 0,s={unversionedId:"usage/md/cunicu_completion_bash",id:"usage/md/cunicu_completion_bash",title:"cunicu completion bash",description:"cunicu completion bash",source:"@site/docs/usage/md/cunicu_completion_bash.md",sourceDirName:"usage/md",slug:"/usage/man/completion/bash",permalink:"/docs/usage/man/completion/bash",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_completion_bash.md",tags:[],version:"current",frontMatter:{title:"cunicu completion bash",sidebar_label:"completion bash",sidebar_class_name:"command-name",slug:"/usage/man/completion/bash",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion",permalink:"/docs/usage/man/completion"},next:{title:"completion fish",permalink:"/docs/usage/man/completion/fish"}},c={},p=[{value:"cunicu completion bash",id:"cunicu-completion-bash",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Linux:",id:"linux",level:4},{value:"macOS:",id:"macos",level:4},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],u={toc:p};function r(e){let{components:t,...o}=e;return(0,i.kt)("wrapper",(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-completion-bash"},"cunicu completion bash"),(0,i.kt)("p",null,"Generate the autocompletion script for bash"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Generate the autocompletion script for the bash shell."),(0,i.kt)("p",null,"This script depends on the 'bash-completion' package.\nIf it is not installed already, you can install it via your OS's package manager."),(0,i.kt)("p",null,"To load completions in your current shell session:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"source <(cunicu completion bash)\n")),(0,i.kt)("p",null,"To load completions for every new session, execute once:"),(0,i.kt)("h4",{id:"linux"},"Linux:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion bash > /etc/bash_completion.d/cunicu\n")),(0,i.kt)("h4",{id:"macos"},"macOS:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion bash > $(brew --prefix)/etc/bash_completion.d/cunicu\n")),(0,i.kt)("p",null,"You will need to start a new shell for this setup to take effect."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu completion bash\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for bash\n --no-descriptions disable completion descriptions\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell")))}r.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8490.a7b3978b.js b/assets/js/8490.a7b3978b.js new file mode 100644 index 00000000..e8b07428 --- /dev/null +++ b/assets/js/8490.a7b3978b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8490],{4881:(e,n,t)=>{t.d(n,{Z:()=>m});var a=t(7294),l=t(5999),i=t(5281),r=t(7462),o=t(6010);const c="iconEdit_Z9Sw";function s(e){let{className:n,...t}=e;return a.createElement("svg",(0,r.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(c,n),"aria-hidden":"true"},t),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function m(e){let{editUrl:n}=e;return a.createElement("a",{href:n,target:"_blank",rel:"noreferrer noopener",className:i.k.common.editThisPage},a.createElement(s,null),a.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},2503:(e,n,t)=>{t.d(n,{Z:()=>m});var a=t(7462),l=t(7294),i=t(6010),r=t(5999),o=t(6668);const c="anchorWithStickyNavbar_LWe7",s="anchorWithHideOnScrollNavbar_WYt5";function m(e){let{as:n,id:t,...m}=e;const{navbar:{hideOnScroll:d}}=(0,o.L)();return"h1"!==n&&t?l.createElement(n,(0,a.Z)({},m,{className:(0,i.Z)("anchor",d?s:c),id:t}),m.children,l.createElement("a",{className:"hash-link",href:`#${t}`,title:(0,r.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):l.createElement(n,(0,a.Z)({},m,{id:void 0}))}},5203:(e,n,t)=>{t.d(n,{Z:()=>V});var a=t(7294),l=t(3905),i=t(7462),r=t(5742);var o=t(814);var c=t(9960);var s=t(6010),m=t(2389),d=t(6043);const u="details_lb9f",p="isBrowser_bmU9",h="collapsibleContent_i85q";function f(e){return!!e&&("SUMMARY"===e.tagName||f(e.parentElement))}function E(e,n){return!!e&&(e===n||E(e.parentElement,n))}function v(e){let{summary:n,children:t,...l}=e;const r=(0,m.Z)(),o=(0,a.useRef)(null),{collapsed:c,setCollapsed:v}=(0,d.u)({initialState:!l.open}),[g,Z]=(0,a.useState)(l.open);return a.createElement("details",(0,i.Z)({},l,{ref:o,open:g,"data-collapsed":c,className:(0,s.Z)(u,r&&p,l.className),onMouseDown:e=>{f(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const n=e.target;f(n)&&E(n,o.current)&&(e.preventDefault(),c?(v(!1),Z(!0)):v(!0))}}),n??a.createElement("summary",null,"Details"),a.createElement(d.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{v(e),Z(!e)}},a.createElement("div",{className:h},t)))}const g="details_b_Ee";function Z(e){let{...n}=e;return a.createElement(v,(0,i.Z)({},n,{className:(0,s.Z)("alert alert--info",g,n.className)}))}var b=t(2503);function N(e){return a.createElement(b.Z,e)}const C="containsTaskList_mC6p";const y="img_ev3q";var _=t(5281),T=t(5999);const k="admonition_LlT9",z="admonitionHeading_tbUL",w="admonitionIcon_kALy",x="admonitionContent_S0QG";const L={note:{infimaClassName:"secondary",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:a.createElement(T.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:a.createElement(T.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:a.createElement(T.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:a.createElement(T.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 16 16"},a.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:a.createElement(T.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},M={secondary:"note",important:"info",success:"tip",warning:"danger"};function S(e){const{mdxAdmonitionTitle:n,rest:t}=function(e){const n=a.Children.toArray(e),t=n.find((e=>{var n;return a.isValidElement(e)&&"mdxAdmonitionTitle"===(null==(n=e.props)?void 0:n.mdxType)})),l=a.createElement(a.Fragment,null,n.filter((e=>e!==t)));return{mdxAdmonitionTitle:t,rest:l}}(e.children);return{...e,title:e.title??n,children:t}}const H={head:function(e){const n=a.Children.map(e.children,(e=>a.isValidElement(e)?function(e){var n;if(null!=(n=e.props)&&n.mdxType&&e.props.originalType){const{mdxType:n,originalType:t,...l}=e.props;return a.createElement(e.props.originalType,l)}return e}(e):e));return a.createElement(r.Z,e,n)},code:function(e){const n=["a","b","big","i","span","em","strong","sup","sub","small"];return a.Children.toArray(e.children).every((e=>{var t;return"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&n.includes(null==(t=e.props)?void 0:t.mdxType)}))?a.createElement("code",e):a.createElement(o.Z,e)},a:function(e){return a.createElement(c.Z,e)},pre:function(e){var n;return a.createElement(o.Z,(0,a.isValidElement)(e.children)&&"code"===(null==(n=e.children.props)?void 0:n.originalType)?e.children.props:{...e})},details:function(e){const n=a.Children.toArray(e.children),t=n.find((e=>{var n;return a.isValidElement(e)&&"summary"===(null==(n=e.props)?void 0:n.mdxType)})),l=a.createElement(a.Fragment,null,n.filter((e=>e!==t)));return a.createElement(Z,(0,i.Z)({},e,{summary:t}),l)},ul:function(e){return a.createElement("ul",(0,i.Z)({},e,{className:(n=e.className,(0,s.Z)(n,(null==n?void 0:n.includes("contains-task-list"))&&C))}));var n},img:function(e){return a.createElement("img",(0,i.Z)({loading:"lazy"},e,{className:(n=e.className,(0,s.Z)(n,y))}));var n},h1:e=>a.createElement(N,(0,i.Z)({as:"h1"},e)),h2:e=>a.createElement(N,(0,i.Z)({as:"h2"},e)),h3:e=>a.createElement(N,(0,i.Z)({as:"h3"},e)),h4:e=>a.createElement(N,(0,i.Z)({as:"h4"},e)),h5:e=>a.createElement(N,(0,i.Z)({as:"h5"},e)),h6:e=>a.createElement(N,(0,i.Z)({as:"h6"},e)),admonition:function(e){const{children:n,type:t,title:l,icon:i}=S(e),r=function(e){const n=M[e]??e;return L[n]||(console.warn(`No admonition config found for admonition type "${n}". Using Info as fallback.`),L.info)}(t),o=l??r.label,{iconComponent:c}=r,m=i??a.createElement(c,null);return a.createElement("div",{className:(0,s.Z)(_.k.common.admonition,_.k.common.admonitionType(e.type),"alert",`alert--${r.infimaClassName}`,k)},a.createElement("div",{className:z},a.createElement("span",{className:w},m),o),a.createElement("div",{className:x},n))}};function V(e){let{children:n}=e;return a.createElement(l.Zo,{components:H},n)}},2244:(e,n,t)=>{t.d(n,{Z:()=>r});var a=t(7294),l=t(6010),i=t(9960);function r(e){const{permalink:n,title:t,subLabel:r,isNext:o}=e;return a.createElement(i.Z,{className:(0,l.Z)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:n},r&&a.createElement("div",{className:"pagination-nav__sublabel"},r),a.createElement("div",{className:"pagination-nav__label"},t))}},3008:(e,n,t)=>{t.d(n,{Z:()=>s});var a=t(7294),l=t(6010),i=t(9960);const r="tag_zVej",o="tagRegular_sFm0",c="tagWithCount_h2kH";function s(e){let{permalink:n,label:t,count:s}=e;return a.createElement(i.Z,{href:n,className:(0,l.Z)(r,s?c:o)},t,s&&a.createElement("span",null,s))}},1526:(e,n,t)=>{t.d(n,{Z:()=>s});var a=t(7294),l=t(6010),i=t(5999),r=t(3008);const o="tags_jXut",c="tag_QGVx";function s(e){let{tags:n}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(i.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,l.Z)(o,"padding--none","margin-left--sm")},n.map((e=>{let{label:n,permalink:t}=e;return a.createElement("li",{key:t,className:c},a.createElement(r.Z,{label:n,permalink:t}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/88554f04.638d1d1a.js b/assets/js/88554f04.638d1d1a.js deleted file mode 100644 index 4cd64d7f..00000000 --- a/assets/js/88554f04.638d1d1a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9211],{3139:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>f,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var n=s(7462),i=(s(7294),s(3905));s(1839);const o={title:"Hosts-file Synchronization"},r="Hosts-file Synchronization",a={unversionedId:"features/hsync",id:"features/hsync",title:"Hosts-file Synchronization",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/hsync.md",sourceDirName:"features",slug:"/features/hsync",permalink:"/docs/features/hsync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/hsync.md",tags:[],version:"current",frontMatter:{title:"Hosts-file Synchronization"},sidebar:"tutorialSidebar",previous:{title:"Hooks",permalink:"/docs/features/hooks"},next:{title:"Peer Discovery",permalink:"/docs/features/pdisc"}},c={},u=[],d={toc:u};function f(t){let{components:e,...s}=t;return(0,i.kt)("wrapper",(0,n.Z)({},d,s,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"hosts-file-synchronization"},"Hosts-file Synchronization"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/88554f04.ae29a129.js b/assets/js/88554f04.ae29a129.js new file mode 100644 index 00000000..0b766fdc --- /dev/null +++ b/assets/js/88554f04.ae29a129.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9211],{1669:(e,n,t)=>{t.d(n,{Z:()=>a});var i=t(7294),s=t(814);function a(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],s=[],a=!1;for(let t of e){let e=!1,o=!1,r=t.startsWith("#"),c=""===t.trim(),l=t.match(/^([a-zA-z]+):/);null!==l&&(e=l[1]==n.section,o=l[1]!=n.section),r&&(a=!1,i.push(t)),e&&(a=!0,s.push(...i),i=[]),o&&(a=!1),c&&(i=[]),a&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(s.Z,n,t)}},3139:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=t(7462),s=(t(7294),t(3905)),a=(t(1839),t(1669));const o={title:"Hosts-file Synchronization"},r="Hosts-file Synchronization",c={unversionedId:"features/hsync",id:"features/hsync",title:"Hosts-file Synchronization",description:"The hosts-file synchronization updates your local hosts(5) file (/etc/hosts) with entries for each peer.",source:"@site/docs/features/hsync.md",sourceDirName:"features",slug:"/features/hsync",permalink:"/docs/features/hsync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/hsync.md",tags:[],version:"current",frontMatter:{title:"Hosts-file Synchronization"},sidebar:"tutorialSidebar",previous:{title:"Hooks",permalink:"/docs/features/hooks"},next:{title:"Peer Discovery",permalink:"/docs/features/pdisc"}},l={},d=[{value:"Example",id:"example",level:2},{value:"Configuration",id:"configuration",level:2}],h={toc:d};function p(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"hosts-file-synchronization"},"Hosts-file Synchronization"),(0,s.kt)("p",null,"The hosts-file synchronization updates your local ",(0,s.kt)("a",{parentName:"p",href:"https://man7.org/linux/man-pages/man5/hosts.5.html"},"hosts(5)")," file (",(0,s.kt)("inlineCode",{parentName:"p"},"/etc/hosts"),") with entries for each peer."),(0,s.kt)("p",null,"As hostname, cunicu uses the first 8 characters of the Base64-encoded public key as well as an optional hostname.\nThis optional hostname can either be configured by the user in the configuration file or is discovered via the ",(0,s.kt)("a",{parentName:"p",href:"/docs/features/pdisc"},"peer-discovery feature"),"."),(0,s.kt)("h2",{id:"example"},"Example"),(0,s.kt)("p",null,"The following snippet shows the local hosts file of an Ubuntu 20.04 system with two entries added by cunicu.\nAs shown here, all entries managed by cunicu are marked with a comment prefixed with ",(0,s.kt)("inlineCode",{parentName:"p"},"# cunicu:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="/etc/hosts"',title:'"/etc/hosts"'},"127.0.0.1 localhost\n127.0.1.1 ubuntu\n\n# The following lines are desirable for IPv6 capable hosts\n::1 ip6-localhost ip6-loopback\nfe00::0 ip6-localnet\nff00::0 ip6-mcastprefix\nff02::1 ip6-allnodes\nff02::2 ip6-allrouters\n\nfe80::13a9:c799:cead:4f28 buxfBfaN.wg-local fra-1.wg-local # cunicu: ifname=wg0, ifindex=9, pk=buxfBfaNZI8UFT0cB1aj9YanhbLfxlTfd/hH3DrGaFA=\nfe80::1fed:fabb:a9f6:d78 ZEki/XKE.wg-local # cunicu: ifname=wg1, ifindex=10, pk=ZEki/XKEsqdjFyURo5Sm+g3vXSKJKpV5WmwWKAQqo2c=\n")),(0,s.kt)("h2",{id:"configuration"},"Configuration"),(0,s.kt)(a.Z,{section:"hsync",mdxType:"ExampleConfig"}))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8b35e876.2a095181.js b/assets/js/8b35e876.2a095181.js deleted file mode 100644 index 8398197a..00000000 --- a/assets/js/8b35e876.2a095181.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1495],{8647:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>s,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>u,toc:()=>c});var i=o(7462),n=(o(7294),o(3905));o(1839);const a={title:"Auto-configuration"},r="Auto-configuration",u={unversionedId:"features/autocfg",id:"features/autocfg",title:"Auto-configuration",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/autocfg.md",sourceDirName:"features",slug:"/features/autocfg",permalink:"/docs/features/autocfg",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/autocfg.md",tags:[],version:"current",frontMatter:{title:"Auto-configuration"},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/docs/configuration"},next:{title:"Config-file Synchronization",permalink:"/docs/features/cfgsync"}},s={},c=[],f={toc:c};function d(t){let{components:e,...o}=t;return(0,n.kt)("wrapper",(0,i.Z)({},f,o,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"auto-configuration"},"Auto-configuration"),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8b35e876.fa685a4d.js b/assets/js/8b35e876.fa685a4d.js new file mode 100644 index 00000000..8da90abb --- /dev/null +++ b/assets/js/8b35e876.fa685a4d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1495],{1669:(a,e,t)=>{t.d(e,{Z:()=>m});var n=t(7294),s=t(814);function m(a){let e={...a};e.language||(e.language="yaml"),e.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(e.section){const a=t.split("\n");let n=[],s=[],m=!1;for(let t of a){let a=!1,r=!1,p=t.startsWith("#"),i=""===t.trim(),o=t.match(/^([a-zA-z]+):/);null!==o&&(a=o[1]==e.section,r=o[1]!=e.section),p&&(m=!1,n.push(t)),a&&(m=!0,s.push(...n),n=[]),r&&(m=!1),i&&(n=[]),m&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),e.title=`Section "${e.section}" of ${e.title}`}return n.createElement(s.Z,e,t)}},8647:(a,e,t)=>{t.r(e),t.d(e,{assets:()=>o,contentTitle:()=>p,default:()=>N,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var n=t(7462),s=(t(7294),t(3905)),m=(t(1839),t(1669));const r={title:"Auto-configuration"},p="Auto-configuration",i={unversionedId:"features/autocfg",id:"features/autocfg",title:"Auto-configuration",description:"The auto-configuration feature assigns link-local IP addresses to WireGuard interfaces as well as configures several other common settings such as MTU, IP addresses or DNS settings.",source:"@site/docs/features/autocfg.md",sourceDirName:"features",slug:"/features/autocfg",permalink:"/docs/features/autocfg",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/autocfg.md",tags:[],version:"current",frontMatter:{title:"Auto-configuration"},sidebar:"tutorialSidebar",previous:{title:"Features",permalink:"/docs/features/"},next:{title:"Config-file Synchronization",permalink:"/docs/features/cfgsync"}},o={},l=[{value:"Link local IP-addresses",id:"link-local-ip-addresses",level:2},{value:"Address calculation",id:"address-calculation",level:3},{value:"Missing settings",id:"missing-settings",level:2},{value:"Configuration",id:"configuration",level:2}],c={toc:l};function N(a){let{components:e,...t}=a;return(0,s.kt)("wrapper",(0,n.Z)({},c,t,{components:e,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"auto-configuration"},"Auto-configuration"),(0,s.kt)("p",null,"The auto-configuration feature assigns link-local IP addresses to WireGuard interfaces as well as configures several other common settings such as MTU, IP addresses or DNS settings."),(0,s.kt)("h2",{id:"link-local-ip-addresses"},"Link local IP-addresses"),(0,s.kt)("p",null,"This feature automatically assigns each interface link-local IPv4 and IPv6 addresses derived from the interface's public key."),(0,s.kt)("p",null,"This enables peer-to-peer communication when no site-local or global addresses are assigned yet."),(0,s.kt)("h3",{id:"address-calculation"},"Address calculation"),(0,s.kt)("p",null,"Addresses are generated by concatenating a well-known network prefix (",(0,s.kt)("inlineCode",{parentName:"p"},"fe80::/64"),", ",(0,s.kt)("inlineCode",{parentName:"p"},"169.254.0.0/16"),") with an host part derived from the public key ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"P"),(0,s.kt)("mi",{parentName:"mrow"},"K")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"PK")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6833em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.07153em"}},"K")))))," of the peer/interface using the 64-bit ",(0,s.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/SipHash"},(0,s.kt)("span",{parentName:"a",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"S"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"i"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"p"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"H"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"a"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"s"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"h")),(0,s.kt)("mn",{parentName:"msub"},"64"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathrm{SipHash}_{64}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.9386em",verticalAlign:"-0.2441em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathrm"},"SipHash")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"64"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))))))))," hashing function:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mtable",{parentName:"semantics",rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mi",{parentName:"mrow"},"H"),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow"},"=")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"S"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"i"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"p"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"H"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"a"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"s"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"h")),(0,s.kt)("mn",{parentName:"msub"},"64")),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"P"),(0,s.kt)("mi",{parentName:"mrow"},"K"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")))),(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr",className:"mml-eqn-num"})),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"H"),(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"f"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"l"),(0,s.kt)("mi",{parentName:"mrow"},"d"))),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow"},"=")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"H"),(0,s.kt)("mo",{parentName:"mrow"},"\u2227"),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mn",{parentName:"mrow"},"0"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"x"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"F"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"F"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"F"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"F")),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mo",{parentName:"mrow"},"\u22bc"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"H"),(0,s.kt)("mo",{parentName:"mrow"},"\u226b"),(0,s.kt)("mn",{parentName:"mrow"},"16"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")))),(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr",className:"mml-eqn-num"})),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"I"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"P"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"v"),(0,s.kt)("mn",{parentName:"mrow"},"6")),(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"l"),(0,s.kt)("mi",{parentName:"mrow"},"i"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mi",{parentName:"mrow"},"k"),(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mi",{parentName:"mrow"},"l"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"c"),(0,s.kt)("mi",{parentName:"mrow"},"a"),(0,s.kt)("mi",{parentName:"mrow"},"l"))),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow"},"=")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"{"),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"f"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"e"),(0,s.kt)("mn",{parentName:"mrow"},"80"),(0,s.kt)("mo",{parentName:"mrow"},":")),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"\u2223"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"\u2223"),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mi",{parentName:"mrow"},"H"),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"}"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"/"),(0,s.kt)("mn",{parentName:"mrow"},"64")))),(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr",className:"mml-eqn-num"})),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"I"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"P"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"v"),(0,s.kt)("mn",{parentName:"mrow"},"4")),(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"l"),(0,s.kt)("mi",{parentName:"mrow"},"i"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mi",{parentName:"mrow"},"k"),(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mi",{parentName:"mrow"},"l"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"c"),(0,s.kt)("mi",{parentName:"mrow"},"a"),(0,s.kt)("mi",{parentName:"mrow"},"l"))),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow"},"=")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"{"),(0,s.kt)("mn",{parentName:"mrow"},"169.254."),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"\u2223"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"\u2223"),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"H"),(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"f"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"l"),(0,s.kt)("mi",{parentName:"mrow"},"d"))),(0,s.kt)("mtext",{parentName:"mrow"},"\xa0"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"}"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"normal"},"/"),(0,s.kt)("mn",{parentName:"mrow"},"16")))),(0,s.kt)("mtd",{parentName:"mtr",className:"mtr-glue"}),(0,s.kt)("mtd",{parentName:"mtr",className:"mml-eqn-num"}))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{align} H~=&~\\mathrm{SipHash}_{64}(PK) \\\\ H_{fold}~=&~(H \\land \\mathrm{0xFFFF}) \\barwedge (H \\gg 16) \\\\ \\mathrm{IPv6}_{link-local}~=&~\\{ \\mathrm{fe80:}~||~H~\\} /64 \\\\ \\mathrm{IPv4}_{link-local}~=&~\\{ \\mathrm{169.254.}~||~H_{fold}~\\}/16 \\\\ \\end{align}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"6em",verticalAlign:"-2.75em"}}),(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-r"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"3.25em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-5.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.08125em"}},"H"),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="))),(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.08125em"}},"H"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.0813em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.10764em"}},"f"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"o"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"d"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2861em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathrm"},"IPv6")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.03148em"}},"ink"),(0,s.kt)("span",{parentName:"span",className:"mbin mtight"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"oc"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"a"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2083em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="))),(0,s.kt)("span",{parentName:"span",style:{top:"-0.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathrm"},"IPv4")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.03148em"}},"ink"),(0,s.kt)("span",{parentName:"span",className:"mbin mtight"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"oc"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"a"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2083em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"=")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"2.75em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"3.25em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-5.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathrm"},"SipHash")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"64"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.07153em"}},"K"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))),(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.08125em"}},"H"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u2227"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathrm"},"0xFFFF")),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin amsrm"},"\u22bc"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.08125em"}},"H"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"\u226b"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"16"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"{"),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathrm"},"fe80"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},":")),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mord"},"\u2223\u2223"),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.08125em"}},"H"),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mclose"},"}"),(0,s.kt)("span",{parentName:"span",className:"mord"},"/64"))),(0,s.kt)("span",{parentName:"span",style:{top:"-0.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"{"),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathrm"},"169.254.")),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mord"},"\u2223\u2223"),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.08125em"}},"H"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.0813em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.10764em"}},"f"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"o"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.01968em"}},"l"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"d"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2861em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace nobreak"},"\xa0"),(0,s.kt)("span",{parentName:"span",className:"mclose"},"}"),(0,s.kt)("span",{parentName:"span",className:"mord"},"/16")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"2.75em"}},(0,s.kt)("span",{parentName:"span"}))))))),(0,s.kt)("span",{parentName:"span",className:"tag"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"3.25em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-5.25em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.84em"}}),(0,s.kt)("span",{parentName:"span",className:"eqn-num"})),(0,s.kt)("span",{parentName:"span",style:{top:"-3.75em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.84em"}}),(0,s.kt)("span",{parentName:"span",className:"eqn-num"})),(0,s.kt)("span",{parentName:"span",style:{top:"-2.25em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.84em"}}),(0,s.kt)("span",{parentName:"span",className:"eqn-num"})),(0,s.kt)("span",{parentName:"span",style:{top:"-0.75em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.84em"}}),(0,s.kt)("span",{parentName:"span",className:"eqn-num"}))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"2.75em"}},(0,s.kt)("span",{parentName:"span"}))))))))),(0,s.kt)("p",null,"This addresses calculation can be performed with the ",(0,s.kt)("a",{parentName:"p",href:"/docs/usage/man/addresses"},(0,s.kt)("inlineCode",{parentName:"a"},"cunicu addresses"))," sub-command."),(0,s.kt)("h2",{id:"missing-settings"},"Missing settings"),(0,s.kt)("p",null,"The following settings are automatically assigned if they have not been set before:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Private Key:")," a new random private key will be generated."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Listen port:")," the next free port in the configured listen port range is used (see ",(0,s.kt)("inlineCode",{parentName:"li"},"wireguard.listen_port_range")," setting)."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"MTU:")," is automatically determined from the endpoint addresses or the system default route.")),(0,s.kt)("h2",{id:"configuration"},"Configuration"),(0,s.kt)(m.Z,{section:"autocfg",mdxType:"ExampleConfig"}))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d306639.6d499a4e.js b/assets/js/8d306639.6d499a4e.js deleted file mode 100644 index 6b747bde..00000000 --- a/assets/js/8d306639.6d499a4e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7833],{1677:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>k,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var s=o(7462),i=(o(7294),o(3905));o(1839);const r={title:"Hooks"},n="Hooks",a={unversionedId:"features/hooks",id:"features/hooks",title:"Hooks",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/hooks.md",sourceDirName:"features",slug:"/features/hooks",permalink:"/docs/features/hooks",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/hooks.md",tags:[],version:"current",frontMatter:{title:"Hooks"},sidebar:"tutorialSidebar",previous:{title:"Endpoint Discovery",permalink:"/docs/features/epdisc"},next:{title:"Hosts-file Synchronization",permalink:"/docs/features/hsync"}},c={},u=[],d={toc:u};function k(e){let{components:t,...o}=e;return(0,i.kt)("wrapper",(0,s.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"hooks"},"Hooks"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d306639.b3312136.js b/assets/js/8d306639.b3312136.js new file mode 100644 index 00000000..8dbf7b24 --- /dev/null +++ b/assets/js/8d306639.b3312136.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7833],{1669:(e,n,t)=>{t.d(n,{Z:()=>a});var i=t(7294),s=t(814);function a(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],s=[],a=!1;for(let t of e){let e=!1,o=!1,r=t.startsWith("#"),c=""===t.trim(),l=t.match(/^([a-zA-z]+):/);null!==l&&(e=l[1]==n.section,o=l[1]!=n.section),r&&(a=!1,i.push(t)),e&&(a=!0,s.push(...i),i=[]),o&&(a=!1),c&&(i=[]),a&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(s.Z,n,t)}},1677:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=t(7462),s=(t(7294),t(3905)),a=(t(1839),t(1669));const o={title:"Hooks"},r="Hooks",c={unversionedId:"features/hooks",id:"features/hooks",title:"Hooks",description:"The hooks feature allows the user to configure a list of hook functions which are triggered by certain events within the daemon.",source:"@site/docs/features/hooks.md",sourceDirName:"features",slug:"/features/hooks",permalink:"/docs/features/hooks",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/hooks.md",tags:[],version:"current",frontMatter:{title:"Hooks"},sidebar:"tutorialSidebar",previous:{title:"Endpoint Discovery",permalink:"/docs/features/epdisc"},next:{title:"Hosts-file Synchronization",permalink:"/docs/features/hsync"}},l={},d=[{value:"Configuration",id:"configuration",level:2}],h={toc:d};function u(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"hooks"},"Hooks"),(0,s.kt)("p",null,"The hooks feature allows the user to configure a list of hook functions which are triggered by certain events within the daemon."),(0,s.kt)("h2",{id:"configuration"},"Configuration"),(0,s.kt)(a.Z,{section:"hooks",mdxType:"ExampleConfig"}))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d4ecb14.46fd7c21.js b/assets/js/8d4ecb14.46fd7c21.js new file mode 100644 index 00000000..da4e5aac --- /dev/null +++ b/assets/js/8d4ecb14.46fd7c21.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7335],{3583:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>s,frontMatter:()=>t,metadata:()=>r,toc:()=>u});var a=o(7462),i=(o(7294),o(3905));o(1839);const t={title:"cunicu config reload",sidebar_label:"config reload",sidebar_class_name:"command-name",slug:"/usage/man/config/reload",hide_title:!0,keywords:["manpage"]},c=void 0,r={unversionedId:"usage/md/cunicu_config_reload",id:"usage/md/cunicu_config_reload",title:"cunicu config reload",description:"cunicu config reload",source:"@site/docs/usage/md/cunicu_config_reload.md",sourceDirName:"usage/md",slug:"/usage/man/config/reload",permalink:"/docs/usage/man/config/reload",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_config_reload.md",tags:[],version:"current",frontMatter:{title:"cunicu config reload",sidebar_label:"config reload",sidebar_class_name:"command-name",slug:"/usage/man/config/reload",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"config get",permalink:"/docs/usage/man/config/get"},next:{title:"config set",permalink:"/docs/usage/man/config/set"}},l={},u=[{value:"cunicu config reload",id:"cunicu-config-reload",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],d={toc:u};function s(e){let{components:n,...o}=e;return(0,i.kt)("wrapper",(0,a.Z)({},d,o,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-config-reload"},"cunicu config reload"),(0,i.kt)("p",null,"Reload the configuration of the cun\u012bcu daemon"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu config reload [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for reload\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/config"},"cunicu config"),"\t - Manage configuration of a running cun\u012bcu daemon.")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d5366bf.8c18c40e.js b/assets/js/8d5366bf.8c18c40e.js deleted file mode 100644 index 252ec6b5..00000000 --- a/assets/js/8d5366bf.8c18c40e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7467],{161:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>r});var n=o(7462),i=(o(7294),o(3905));o(1839);const a={title:"cunicu completion",sidebar_label:"completion",sidebar_class_name:"command-name",slug:"/usage/man/completion",hide_title:!0,keywords:["manpage"]},s=void 0,l={unversionedId:"usage/md/cunicu_completion",id:"usage/md/cunicu_completion",title:"cunicu completion",description:"cunicu completion",source:"@site/docs/usage/md/cunicu_completion.md",sourceDirName:"usage/md",slug:"/usage/man/completion",permalink:"/docs/usage/man/completion",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_completion.md",tags:[],version:"current",frontMatter:{title:"cunicu completion",sidebar_label:"completion",sidebar_class_name:"command-name",slug:"/usage/man/completion",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"addresses",permalink:"/docs/usage/man/addresses"},next:{title:"completion bash",permalink:"/docs/usage/man/completion/bash"}},c={},r=[{value:"cunicu completion",id:"cunicu-completion",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],p={toc:r};function u(e){let{components:t,...o}=e;return(0,i.kt)("wrapper",(0,n.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-completion"},"cunicu completion"),(0,i.kt)("p",null,"Generate the autocompletion script for the specified shell"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Generate the autocompletion script for cunicu for the specified shell.\nSee each sub-command's help for details on how to use the generated script."),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for completion\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/bash"},"cunicu completion bash"),"\t - Generate the autocompletion script for bash"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/fish"},"cunicu completion fish"),"\t - Generate the autocompletion script for fish"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/powershell"},"cunicu completion powershell"),"\t - Generate the autocompletion script for powershell"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/zsh"},"cunicu completion zsh"),"\t - Generate the autocompletion script for zsh")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d5366bf.a42b53e7.js b/assets/js/8d5366bf.a42b53e7.js new file mode 100644 index 00000000..7959c1d9 --- /dev/null +++ b/assets/js/8d5366bf.a42b53e7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7467],{161:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>r});var n=o(7462),i=(o(7294),o(3905));o(1839);const a={title:"cunicu completion",sidebar_label:"completion",sidebar_class_name:"command-name",slug:"/usage/man/completion",hide_title:!0,keywords:["manpage"]},s=void 0,l={unversionedId:"usage/md/cunicu_completion",id:"usage/md/cunicu_completion",title:"cunicu completion",description:"cunicu completion",source:"@site/docs/usage/md/cunicu_completion.md",sourceDirName:"usage/md",slug:"/usage/man/completion",permalink:"/docs/usage/man/completion",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_completion.md",tags:[],version:"current",frontMatter:{title:"cunicu completion",sidebar_label:"completion",sidebar_class_name:"command-name",slug:"/usage/man/completion",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"addresses",permalink:"/docs/usage/man/addresses"},next:{title:"completion bash",permalink:"/docs/usage/man/completion/bash"}},c={},r=[{value:"cunicu completion",id:"cunicu-completion",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],p={toc:r};function u(e){let{components:t,...o}=e;return(0,i.kt)("wrapper",(0,n.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-completion"},"cunicu completion"),(0,i.kt)("p",null,"Generate the autocompletion script for the specified shell"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"Generate the autocompletion script for cunicu for the specified shell.\nSee each sub-command's help for details on how to use the generated script."),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for completion\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/bash"},"cunicu completion bash"),"\t - Generate the autocompletion script for bash"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/fish"},"cunicu completion fish"),"\t - Generate the autocompletion script for fish"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/powershell"},"cunicu completion powershell"),"\t - Generate the autocompletion script for powershell"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion/zsh"},"cunicu completion zsh"),"\t - Generate the autocompletion script for zsh")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8f24e72b.59b51eef.js b/assets/js/8f24e72b.59b51eef.js deleted file mode 100644 index fa9ab0e8..00000000 --- a/assets/js/8f24e72b.59b51eef.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5734],{5558:(e,s,a)=>{a.r(s),a.d(s,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>d,metadata:()=>r,toc:()=>l});var n=a(7462),t=(a(7294),a(3905));a(1839);const d={title:"cunicu addresses",sidebar_label:"addresses",sidebar_class_name:"command-name",slug:"/usage/man/addresses",hide_title:!0,keywords:["manpage"]},i=void 0,r={unversionedId:"usage/md/cunicu_addresses",id:"usage/md/cunicu_addresses",title:"cunicu addresses",description:"cunicu addresses",source:"@site/docs/usage/md/cunicu_addresses.md",sourceDirName:"usage/md",slug:"/usage/man/addresses",permalink:"/docs/usage/man/addresses",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_addresses.md",tags:[],version:"current",frontMatter:{title:"cunicu addresses",sidebar_label:"addresses",sidebar_class_name:"command-name",slug:"/usage/man/addresses",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"cunicu",permalink:"/docs/usage/man/"},next:{title:"completion",permalink:"/docs/usage/man/completion"}},o={},l=[{value:"cunicu addresses",id:"cunicu-addresses",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],u={toc:l};function c(e){let{components:s,...a}=e;return(0,t.kt)("wrapper",(0,n.Z)({},u,a,{components:s,mdxType:"MDXLayout"}),(0,t.kt)("h2",{id:"cunicu-addresses"},"cunicu addresses"),(0,t.kt)("p",null,"Calculate link-local IPv4 and IPv6 addresses from a WireGuard X25519 public key"),(0,t.kt)("h3",{id:"synopsis"},"Synopsis"),(0,t.kt)("p",null,"cun\u012bcu auto-configuration feature derives and assigns link-local IPv4 and IPv6 addresses based on the public key of the WireGuard interface.\nThis sub-command accepts a WireGuard public key on the standard input and prints out the calculated IP addresses on the standard output."),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"},"cunicu addresses [flags]\n")),(0,t.kt)("h3",{id:"examples"},"Examples"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"},"$ wg genkey | wg pubkey | cunicu addresses\nfe80::e3be:9673:5a98:9348/64\n169.254.29.188/16\n")),(0,t.kt)("h3",{id:"options"},"Options"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"}," -h, --help help for addresses\n -4, --ipv4 Print IPv4 address only\n -6, --ipv6 Print IPv6 address only\n")),(0,t.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,t.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,t.kt)("ul",null,(0,t.kt)("li",{parentName:"ul"},(0,t.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8f24e72b.6bfb6363.js b/assets/js/8f24e72b.6bfb6363.js new file mode 100644 index 00000000..60d4bd88 --- /dev/null +++ b/assets/js/8f24e72b.6bfb6363.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5734],{5558:(e,s,a)=>{a.r(s),a.d(s,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>d,metadata:()=>r,toc:()=>u});var n=a(7462),t=(a(7294),a(3905));a(1839);const d={title:"cunicu addresses",sidebar_label:"addresses",sidebar_class_name:"command-name",slug:"/usage/man/addresses",hide_title:!0,keywords:["manpage"]},i=void 0,r={unversionedId:"usage/md/cunicu_addresses",id:"usage/md/cunicu_addresses",title:"cunicu addresses",description:"cunicu addresses",source:"@site/docs/usage/md/cunicu_addresses.md",sourceDirName:"usage/md",slug:"/usage/man/addresses",permalink:"/docs/usage/man/addresses",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_addresses.md",tags:[],version:"current",frontMatter:{title:"cunicu addresses",sidebar_label:"addresses",sidebar_class_name:"command-name",slug:"/usage/man/addresses",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"cunicu",permalink:"/docs/usage/man/"},next:{title:"completion",permalink:"/docs/usage/man/completion"}},o={},u=[{value:"cunicu addresses",id:"cunicu-addresses",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Examples",id:"examples",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:u};function c(e){let{components:s,...a}=e;return(0,t.kt)("wrapper",(0,n.Z)({},l,a,{components:s,mdxType:"MDXLayout"}),(0,t.kt)("h2",{id:"cunicu-addresses"},"cunicu addresses"),(0,t.kt)("p",null,"Calculate link-local IPv4 and IPv6 addresses from a WireGuard X25519 public key"),(0,t.kt)("h3",{id:"synopsis"},"Synopsis"),(0,t.kt)("p",null,"cun\u012bcu auto-configuration feature derives and assigns link-local IPv4 and IPv6 addresses based on the public key of the WireGuard interface.\nThis sub-command accepts a WireGuard public key on the standard input and prints out the calculated IP addresses on the standard output."),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"},"cunicu addresses [flags]\n")),(0,t.kt)("h3",{id:"examples"},"Examples"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"},"$ wg genkey | wg pubkey | cunicu addresses\nfc2f:9a4d:777f:7a97:8197:4a5d:1d1b:ed79\n10.237.119.127\n")),(0,t.kt)("h3",{id:"options"},"Options"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"}," -h, --help help for addresses\n -m, --mask Print CIDR mask\n")),(0,t.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,t.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,t.kt)("ul",null,(0,t.kt)("li",{parentName:"ul"},(0,t.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9225b3a9.472b2c5b.js b/assets/js/9225b3a9.472b2c5b.js new file mode 100644 index 00000000..bc83ef60 --- /dev/null +++ b/assets/js/9225b3a9.472b2c5b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4446],{5142:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var a=t(7462),i=(t(7294),t(3905));t(1839);const o={sidebar_position:7},r="Configuration",l={unversionedId:"config",id:"config",title:"Configuration",description:"This page describes the ways of configuring the cun\u012bcu daemon (cunicu daemon).",source:"@site/docs/config.md",sourceDirName:".",slug:"/config",permalink:"/docs/config",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/config.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/docs/install"},next:{title:"Configuration Reference",permalink:"/docs/config-reference"}},c={},u=[{value:"Command Line Flags",id:"command-line-flags",level:2},{value:"Configuration File",id:"configuration-file",level:2},{value:"Environment Variables",id:"environment-variables",level:2},{value:"At Runtime",id:"at-runtime",level:2},{value:"DNS Auto-configuration",id:"dns-auto-configuration",level:2},{value:"Remote Configuration Files",id:"remote-configuration-files",level:2},{value:"Auto-reload",id:"auto-reload",level:2}],s={toc:u};function m(e){let{components:n,...t}=e;return(0,i.kt)("wrapper",(0,a.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"configuration"},"Configuration"),(0,i.kt)("p",null,"This page describes the ways of configuring the cun\u012bcu daemon (",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu daemon"),")."),(0,i.kt)("h2",{id:"command-line-flags"},"Command Line Flags"),(0,i.kt)("p",null,"Basic options of ",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu daemon")," can be configured by passing command line arguments.\nA full overview is available in its ",(0,i.kt)("a",{parentName:"p",href:"/docs/usage/man/daemon"},"manpage"),"."),(0,i.kt)("h2",{id:"configuration-file"},"Configuration File"),(0,i.kt)("p",null,"For more advanced setups, a configuration file can be used for a persistent configuration:"),(0,i.kt)("p",null,"Please have a look at the ",(0,i.kt)("a",{parentName:"p",href:"/docs/config-reference"},"example configuration file")," for a full reference of all available settings."),(0,i.kt)("h2",{id:"environment-variables"},"Environment Variables"),(0,i.kt)("p",null,"All the settings from the configuration file can also be passed via environment variables by following the following rules:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Convert the setting name to uppercase"),(0,i.kt)("li",{parentName:"ul"},"Prefixing the setting name with ",(0,i.kt)("inlineCode",{parentName:"li"},"CUNICU_")),(0,i.kt)("li",{parentName:"ul"},"Nested settings are separated by underscores")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Example:")," The setting ",(0,i.kt)("inlineCode",{parentName:"p"},"epdisc.ice.max_binding_requests")," can be set by the environment variable ",(0,i.kt)("inlineCode",{parentName:"p"},"CUNICU_ENDPOINT_DISC_ICE_MAX_BINDING_REQUESTS")),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Setting lists such as ",(0,i.kt)("inlineCode",{parentName:"p"},"epdisc.ice.urls")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"backends")," can currently not be set via environment variables.")),(0,i.kt)("h2",{id:"at-runtime"},"At Runtime"),(0,i.kt)("p",null,"cun\u012bcu's configuration can also be updated at runtime, elevating the need to restart the daemon to avoid interruption of connectivity."),(0,i.kt)("p",null,"Please have a look at the ",(0,i.kt)("a",{parentName:"p",href:"/docs/usage/man/config"},(0,i.kt)("inlineCode",{parentName:"a"},"cunicu config"))," commands."),(0,i.kt)("h2",{id:"dns-auto-configuration"},"DNS Auto-configuration"),(0,i.kt)("p",null,"cun\u012bcu als supports retrieving parts of the configuration via DNS lookups.\nThis is useful for corporate environments in which a fleet of cun\u012bcu daemon need to be configured centrally."),(0,i.kt)("p",null,"In this case ",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu daemon")," is started one or more ",(0,i.kt)("inlineCode",{parentName:"p"},"--domain example.com")," parameters to look for the following DNS records to obtain its configuration."),(0,i.kt)("p",null,"STUN and TURN servers used for ICE are retrieved by SVR lookups and other cun\u012bcu settings are retrieved via ",(0,i.kt)("inlineCode",{parentName:"p"},"SRV")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"TXT")," lookups: "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-text"},'_stun._udp.example.com. 3600 IN SRV 10 0 3478 stun.example.com.\n_stuns._tcp.example.com. 3600 IN SRV 10 0 3478 stun.example.com.\n_turn._udp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.\n_turn._tcp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.\n_turns._tcp.example.com. 3600 IN SRV 10 0 5349 turn.example.com.\n\nexample.com. 3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"\nexample.com. 3600 IN TXT "cunicu-backend=grpc://signal.example.com:443"\nexample.com. 3600 IN TXT "cunicu-community=my-community-password"\nexample.com. 3600 IN TXT "cunicu-ice-username=user1"\nexample.com. 3600 IN TXT "cunicu-ice-password=pass1"\n')),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"The ",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu-backend")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu-config")," TXT records can be provided multiple times. Others not.")),(0,i.kt)("h2",{id:"remote-configuration-files"},"Remote Configuration Files"),(0,i.kt)("p",null,"When ",(0,i.kt)("inlineCode",{parentName:"p"},"cunicu daemon")," can be started with ",(0,i.kt)("inlineCode",{parentName:"p"},"--config")," options pointing to HTTPS URIs:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"cunicu daemon --config http://example.com/cunicu.yaml\n")),(0,i.kt)("p",null,"cun\u012bcu will download all configuration files in the order they are specified on the command line and merge them subsequently."),(0,i.kt)("p",null,"This feature can be combined with the DNS auto-configuration method by providing a TXT record pointing to the configuration file:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-text"},'example.com. 3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"\n')),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Remote configuration files must be fetched via HTTPS if they are not hosted locally and required a trusted server certificate.")),(0,i.kt)("h2",{id:"auto-reload"},"Auto-reload"),(0,i.kt)("p",null,"cun\u012bcu watches local and remote files as well as the DNS configuration for changes and automatically reloads its configuration from them whenever a change has been detected."),(0,i.kt)("p",null,"For local files the change is detected by ",(0,i.kt)("a",{parentName:"p",href:"https://man7.org/linux/man-pages/man7/inotify.7.html"},"inotify(7)"),".\nFor remote sources, cun\u012bcu periodically checks the ",(0,i.kt)("inlineCode",{parentName:"p"},"Last-Modified")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"Etag")," headers in case of HTTP files or the DNS zone's ",(0,i.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/SOA_record#Structure"},"SOA serial number")," to detect changes without request the full remote source."),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Configuration file distributed via ",(0,i.kt)("inlineCode",{parentName:"p"},"conicu-config")," DNS TXT record are not yet monitored for changes.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.a318fc26.js b/assets/js/935f2afb.a318fc26.js new file mode 100644 index 00000000..8117e2fb --- /dev/null +++ b/assets/js/935f2afb.a318fc26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Welcome","href":"/docs/","docId":"index"},{"type":"link","label":"Installation","href":"/docs/install","docId":"install"},{"type":"link","label":"Configuration","href":"/docs/config","docId":"config"},{"type":"link","label":"Configuration Reference","href":"/docs/config-reference","docId":"config-reference"},{"type":"category","label":"Features","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Auto-configuration","href":"/docs/features/autocfg","docId":"features/autocfg"},{"type":"link","label":"Config-file Synchronization","href":"/docs/features/cfgsync","docId":"features/cfgsync"},{"type":"link","label":"Endpoint Discovery","href":"/docs/features/epdisc","docId":"features/epdisc"},{"type":"link","label":"Hooks","href":"/docs/features/hooks","docId":"features/hooks"},{"type":"link","label":"Hosts-file Synchronization","href":"/docs/features/hsync","docId":"features/hsync"},{"type":"link","label":"Peer Discovery","href":"/docs/features/pdisc","docId":"features/pdisc"},{"type":"link","label":"Pre-shared Key Establishment","href":"/docs/features/pske","docId":"features/pske"},{"type":"link","label":"Route Synchronization","href":"/docs/features/rtsync","docId":"features/rtsync"}],"href":"/docs/features/"},{"type":"category","label":"Usage","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Man Pages","collapsible":true,"collapsed":true,"className":"command-name","items":[{"type":"link","label":"addresses","href":"/docs/usage/man/addresses","className":"command-name","docId":"usage/md/cunicu_addresses"},{"type":"link","label":"completion","href":"/docs/usage/man/completion","className":"command-name","docId":"usage/md/cunicu_completion"},{"type":"link","label":"completion bash","href":"/docs/usage/man/completion/bash","className":"command-name","docId":"usage/md/cunicu_completion_bash"},{"type":"link","label":"completion fish","href":"/docs/usage/man/completion/fish","className":"command-name","docId":"usage/md/cunicu_completion_fish"},{"type":"link","label":"completion powershell","href":"/docs/usage/man/completion/powershell","className":"command-name","docId":"usage/md/cunicu_completion_powershell"},{"type":"link","label":"completion zsh","href":"/docs/usage/man/completion/zsh","className":"command-name","docId":"usage/md/cunicu_completion_zsh"},{"type":"link","label":"config","href":"/docs/usage/man/config","className":"command-name","docId":"usage/md/cunicu_config"},{"type":"link","label":"config get","href":"/docs/usage/man/config/get","className":"command-name","docId":"usage/md/cunicu_config_get"},{"type":"link","label":"config reload","href":"/docs/usage/man/config/reload","className":"command-name","docId":"usage/md/cunicu_config_reload"},{"type":"link","label":"config set","href":"/docs/usage/man/config/set","className":"command-name","docId":"usage/md/cunicu_config_set"},{"type":"link","label":"daemon","href":"/docs/usage/man/daemon","className":"command-name","docId":"usage/md/cunicu_daemon"},{"type":"link","label":"invite","href":"/docs/usage/man/invite","className":"command-name","docId":"usage/md/cunicu_invite"},{"type":"link","label":"monitor","href":"/docs/usage/man/monitor","className":"command-name","docId":"usage/md/cunicu_monitor"},{"type":"link","label":"relay","href":"/docs/usage/man/relay","className":"command-name","docId":"usage/md/cunicu_relay"},{"type":"link","label":"reload","href":"/docs/usage/man/reload","className":"command-name","docId":"usage/md/cunicu_reload"},{"type":"link","label":"restart","href":"/docs/usage/man/restart","className":"command-name","docId":"usage/md/cunicu_restart"},{"type":"link","label":"self-update","href":"/docs/usage/man/self-update","className":"command-name","docId":"usage/md/cunicu_self-update"},{"type":"link","label":"selfupdate","href":"/docs/usage/man/selfupdate","className":"command-name","docId":"usage/md/cunicu_selfupdate"},{"type":"link","label":"signal","href":"/docs/usage/man/signal","className":"command-name","docId":"usage/md/cunicu_signal"},{"type":"link","label":"status","href":"/docs/usage/man/status","className":"command-name","docId":"usage/md/cunicu_status"},{"type":"link","label":"stop","href":"/docs/usage/man/stop","className":"command-name","docId":"usage/md/cunicu_stop"},{"type":"link","label":"sync","href":"/docs/usage/man/sync","className":"command-name","docId":"usage/md/cunicu_sync"},{"type":"link","label":"version","href":"/docs/usage/man/version","className":"command-name","docId":"usage/md/cunicu_version"},{"type":"link","label":"wg","href":"/docs/usage/man/wg","className":"command-name","docId":"usage/md/cunicu_wg"},{"type":"link","label":"wg genkey","href":"/docs/usage/man/wg/genkey","className":"command-name","docId":"usage/md/cunicu_wg_genkey"},{"type":"link","label":"wg genpsk","href":"/docs/usage/man/wg/genpsk","className":"command-name","docId":"usage/md/cunicu_wg_genpsk"},{"type":"link","label":"wg pubkey","href":"/docs/usage/man/wg/pubkey","className":"command-name","docId":"usage/md/cunicu_wg_pubkey"},{"type":"link","label":"wg show","href":"/docs/usage/man/wg/show","className":"command-name","docId":"usage/md/cunicu_wg_show"},{"type":"link","label":"wg showconf","href":"/docs/usage/man/wg/showconf","className":"command-name","docId":"usage/md/cunicu_wg_showconf"}],"href":"/docs/usage/man/"},{"type":"link","label":"Self-update","href":"/docs/usage/upgrade","docId":"usage/upgrade"},{"type":"link","label":"Use-cases","href":"/docs/usage/usecases","docId":"usage/usecases"}],"href":"/docs/usage/"},{"type":"link","label":"Design","href":"/docs/design","docId":"design"},{"type":"link","label":"Comparison","href":"/docs/comparison","docId":"comparison"},{"type":"category","label":"Development","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Proxying","href":"/docs/development/proxying","docId":"development/proxying"},{"type":"link","label":"Session Signaling","href":"/docs/development/signaling","docId":"development/signaling"},{"type":"link","label":"TODOs","href":"/docs/development/todo","docId":"development/todo"}],"href":"/docs/development/"}]},"docs":{"comparison":{"id":"comparison","title":"Comparison","description":"There exist a suite of other peer-to-peer VPN solutions comparable to cun\u012bcu:","sidebar":"tutorialSidebar"},"config":{"id":"config","title":"Configuration","description":"This page describes the ways of configuring the cun\u012bcu daemon (cunicu daemon).","sidebar":"tutorialSidebar"},"config-reference":{"id":"config-reference","title":"Configuration Reference","description":"","sidebar":"tutorialSidebar"},"design":{"id":"design","title":"Design","description":"Architecture","sidebar":"tutorialSidebar"},"development/index":{"id":"development/index","title":"Development","description":"cun\u012bcu is written almost completely in Go and heavily relies on awesome tooling and packages for Golang:","sidebar":"tutorialSidebar"},"development/proxying":{"id":"development/proxying","title":"Proxying","description":"cun\u012bcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports.","sidebar":"tutorialSidebar"},"development/signaling":{"id":"development/signaling","title":"Session Signaling","description":"Lets assume two peers $Pa$ & $Pb$ are seeking to establish a ICE session.","sidebar":"tutorialSidebar"},"development/todo":{"id":"development/todo","title":"TODOs","description":"Please also have a look at the current GitHub issues of the project.","sidebar":"tutorialSidebar"},"features/autocfg":{"id":"features/autocfg","title":"Auto-configuration","description":"The auto-configuration feature assigns link-local IP addresses to WireGuard interfaces as well as configures several other common settings such as MTU, IP addresses or DNS settings.","sidebar":"tutorialSidebar"},"features/cfgsync":{"id":"features/cfgsync","title":"Config-file Synchronization","description":"The config synchronization feature keeps interface configuration provided via configuration files in sync with the kernel.","sidebar":"tutorialSidebar"},"features/epdisc":{"id":"features/epdisc","title":"Endpoint Discovery","description":"The endpoint discovery finds usable WireGuard endpoint addresses for remote peers using Interactive Connectivity Establishment (ICE).","sidebar":"tutorialSidebar"},"features/hooks":{"id":"features/hooks","title":"Hooks","description":"The hooks feature allows the user to configure a list of hook functions which are triggered by certain events within the daemon.","sidebar":"tutorialSidebar"},"features/hsync":{"id":"features/hsync","title":"Hosts-file Synchronization","description":"The hosts-file synchronization updates your local hosts(5) file (/etc/hosts) with entries for each peer.","sidebar":"tutorialSidebar"},"features/index":{"id":"features/index","title":"Features","description":"The cun\u012bcu daemon supports many features which are implemented by separate software modules/packages.","sidebar":"tutorialSidebar"},"features/pdisc":{"id":"features/pdisc","title":"Peer Discovery","description":"The peer discovery feature can be used to find other peers.","sidebar":"tutorialSidebar"},"features/pske":{"id":"features/pske","title":"Pre-shared Key Establishment","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/rtsync":{"id":"features/rtsync","title":"Route Synchronization","description":"The route synchronization feature keeps the kernel routing table in sync with WireGuard\'s AllowedIPs setting.","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Welcome","description":"GitHub Workflow Status","sidebar":"tutorialSidebar"},"install":{"id":"install","title":"Installation","description":"This guide shows how to install cun\u012bcu.","sidebar":"tutorialSidebar"},"usage/index":{"id":"usage/index","title":"Usage","description":"Command Line","sidebar":"tutorialSidebar"},"usage/md/cunicu":{"id":"usage/md/cunicu","title":"cunicu","description":"cunicu","sidebar":"tutorialSidebar"},"usage/md/cunicu_addresses":{"id":"usage/md/cunicu_addresses","title":"cunicu addresses","description":"cunicu addresses","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion":{"id":"usage/md/cunicu_completion","title":"cunicu completion","description":"cunicu completion","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_bash":{"id":"usage/md/cunicu_completion_bash","title":"cunicu completion bash","description":"cunicu completion bash","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_fish":{"id":"usage/md/cunicu_completion_fish","title":"cunicu completion fish","description":"cunicu completion fish","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_powershell":{"id":"usage/md/cunicu_completion_powershell","title":"cunicu completion powershell","description":"cunicu completion powershell","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_zsh":{"id":"usage/md/cunicu_completion_zsh","title":"cunicu completion zsh","description":"cunicu completion zsh","sidebar":"tutorialSidebar"},"usage/md/cunicu_config":{"id":"usage/md/cunicu_config","title":"cunicu config","description":"cunicu config","sidebar":"tutorialSidebar"},"usage/md/cunicu_config_get":{"id":"usage/md/cunicu_config_get","title":"cunicu config get","description":"cunicu config get","sidebar":"tutorialSidebar"},"usage/md/cunicu_config_reload":{"id":"usage/md/cunicu_config_reload","title":"cunicu config reload","description":"cunicu config reload","sidebar":"tutorialSidebar"},"usage/md/cunicu_config_set":{"id":"usage/md/cunicu_config_set","title":"cunicu config set","description":"cunicu config set","sidebar":"tutorialSidebar"},"usage/md/cunicu_daemon":{"id":"usage/md/cunicu_daemon","title":"cunicu daemon","description":"cunicu daemon","sidebar":"tutorialSidebar"},"usage/md/cunicu_invite":{"id":"usage/md/cunicu_invite","title":"cunicu invite","description":"cunicu invite","sidebar":"tutorialSidebar"},"usage/md/cunicu_monitor":{"id":"usage/md/cunicu_monitor","title":"cunicu monitor","description":"cunicu monitor","sidebar":"tutorialSidebar"},"usage/md/cunicu_relay":{"id":"usage/md/cunicu_relay","title":"cunicu relay","description":"cunicu relay","sidebar":"tutorialSidebar"},"usage/md/cunicu_reload":{"id":"usage/md/cunicu_reload","title":"cunicu reload","description":"cunicu reload","sidebar":"tutorialSidebar"},"usage/md/cunicu_restart":{"id":"usage/md/cunicu_restart","title":"cunicu restart","description":"cunicu restart","sidebar":"tutorialSidebar"},"usage/md/cunicu_self-update":{"id":"usage/md/cunicu_self-update","title":"cunicu self-update","description":"cunicu self-update","sidebar":"tutorialSidebar"},"usage/md/cunicu_selfupdate":{"id":"usage/md/cunicu_selfupdate","title":"cunicu selfupdate","description":"cunicu selfupdate","sidebar":"tutorialSidebar"},"usage/md/cunicu_signal":{"id":"usage/md/cunicu_signal","title":"cunicu signal","description":"cunicu signal","sidebar":"tutorialSidebar"},"usage/md/cunicu_status":{"id":"usage/md/cunicu_status","title":"cunicu status","description":"cunicu status","sidebar":"tutorialSidebar"},"usage/md/cunicu_stop":{"id":"usage/md/cunicu_stop","title":"cunicu stop","description":"cunicu stop","sidebar":"tutorialSidebar"},"usage/md/cunicu_sync":{"id":"usage/md/cunicu_sync","title":"cunicu sync","description":"cunicu sync","sidebar":"tutorialSidebar"},"usage/md/cunicu_version":{"id":"usage/md/cunicu_version","title":"cunicu version","description":"cunicu version","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg":{"id":"usage/md/cunicu_wg","title":"cunicu wg","description":"cunicu wg","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_genkey":{"id":"usage/md/cunicu_wg_genkey","title":"cunicu wg genkey","description":"cunicu wg genkey","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_genpsk":{"id":"usage/md/cunicu_wg_genpsk","title":"cunicu wg genpsk","description":"cunicu wg genpsk","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_pubkey":{"id":"usage/md/cunicu_wg_pubkey","title":"cunicu wg pubkey","description":"cunicu wg pubkey","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_show":{"id":"usage/md/cunicu_wg_show","title":"cunicu wg show","description":"cunicu wg show","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_showconf":{"id":"usage/md/cunicu_wg_showconf","title":"cunicu wg showconf","description":"cunicu wg showconf","sidebar":"tutorialSidebar"},"usage/upgrade":{"id":"usage/upgrade","title":"Self-update","description":"cun\u012bcu has a built-in self update functionality.","sidebar":"tutorialSidebar"},"usage/usecases":{"id":"usage/usecases","title":"Use-cases","description":"Zero-configuration","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.fddd848f.js b/assets/js/935f2afb.fddd848f.js deleted file mode 100644 index 958872f2..00000000 --- a/assets/js/935f2afb.fddd848f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Welcome","href":"/docs/","docId":"index"},{"type":"link","label":"Installation","href":"/docs/installation","docId":"installation"},{"type":"link","label":"Configuration","href":"/docs/configuration","docId":"configuration"},{"type":"category","label":"Features","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Auto-configuration","href":"/docs/features/autocfg","docId":"features/autocfg"},{"type":"link","label":"Config-file Synchronization","href":"/docs/features/cfgsync","docId":"features/cfgsync"},{"type":"link","label":"Endpoint Discovery","href":"/docs/features/epdisc","docId":"features/epdisc"},{"type":"link","label":"Hooks","href":"/docs/features/hooks","docId":"features/hooks"},{"type":"link","label":"Hosts-file Synchronization","href":"/docs/features/hsync","docId":"features/hsync"},{"type":"link","label":"Peer Discovery","href":"/docs/features/pdisc","docId":"features/pdisc"},{"type":"link","label":"Pre-shared Key Establishment","href":"/docs/features/pske","docId":"features/pske"},{"type":"link","label":"Route Synchronization","href":"/docs/features/rtsync","docId":"features/rtsync"}]},{"type":"category","label":"Usage","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Man Pages","collapsible":true,"collapsed":true,"className":"command-name","items":[{"type":"link","label":"addresses","href":"/docs/usage/man/addresses","className":"command-name","docId":"usage/md/cunicu_addresses"},{"type":"link","label":"completion","href":"/docs/usage/man/completion","className":"command-name","docId":"usage/md/cunicu_completion"},{"type":"link","label":"completion bash","href":"/docs/usage/man/completion/bash","className":"command-name","docId":"usage/md/cunicu_completion_bash"},{"type":"link","label":"completion fish","href":"/docs/usage/man/completion/fish","className":"command-name","docId":"usage/md/cunicu_completion_fish"},{"type":"link","label":"completion powershell","href":"/docs/usage/man/completion/powershell","className":"command-name","docId":"usage/md/cunicu_completion_powershell"},{"type":"link","label":"completion zsh","href":"/docs/usage/man/completion/zsh","className":"command-name","docId":"usage/md/cunicu_completion_zsh"},{"type":"link","label":"config","href":"/docs/usage/man/config","className":"command-name","docId":"usage/md/cunicu_config"},{"type":"link","label":"config get","href":"/docs/usage/man/config/get","className":"command-name","docId":"usage/md/cunicu_config_get"},{"type":"link","label":"config set","href":"/docs/usage/man/config/set","className":"command-name","docId":"usage/md/cunicu_config_set"},{"type":"link","label":"daemon","href":"/docs/usage/man/daemon","className":"command-name","docId":"usage/md/cunicu_daemon"},{"type":"link","label":"monitor","href":"/docs/usage/man/monitor","className":"command-name","docId":"usage/md/cunicu_monitor"},{"type":"link","label":"restart","href":"/docs/usage/man/restart","className":"command-name","docId":"usage/md/cunicu_restart"},{"type":"link","label":"self-update","href":"/docs/usage/man/self-update","className":"command-name","docId":"usage/md/cunicu_self-update"},{"type":"link","label":"selfupdate","href":"/docs/usage/man/selfupdate","className":"command-name","docId":"usage/md/cunicu_selfupdate"},{"type":"link","label":"signal","href":"/docs/usage/man/signal","className":"command-name","docId":"usage/md/cunicu_signal"},{"type":"link","label":"status","href":"/docs/usage/man/status","className":"command-name","docId":"usage/md/cunicu_status"},{"type":"link","label":"stop","href":"/docs/usage/man/stop","className":"command-name","docId":"usage/md/cunicu_stop"},{"type":"link","label":"sync","href":"/docs/usage/man/sync","className":"command-name","docId":"usage/md/cunicu_sync"},{"type":"link","label":"version","href":"/docs/usage/man/version","className":"command-name","docId":"usage/md/cunicu_version"},{"type":"link","label":"wg","href":"/docs/usage/man/wg","className":"command-name","docId":"usage/md/cunicu_wg"},{"type":"link","label":"wg genkey","href":"/docs/usage/man/wg/genkey","className":"command-name","docId":"usage/md/cunicu_wg_genkey"},{"type":"link","label":"wg genpsk","href":"/docs/usage/man/wg/genpsk","className":"command-name","docId":"usage/md/cunicu_wg_genpsk"},{"type":"link","label":"wg pubkey","href":"/docs/usage/man/wg/pubkey","className":"command-name","docId":"usage/md/cunicu_wg_pubkey"},{"type":"link","label":"wg show","href":"/docs/usage/man/wg/show","className":"command-name","docId":"usage/md/cunicu_wg_show"},{"type":"link","label":"wg showconf","href":"/docs/usage/man/wg/showconf","className":"command-name","docId":"usage/md/cunicu_wg_showconf"}],"href":"/docs/usage/man/"},{"type":"link","label":"Self-update","href":"/docs/usage/upgrade","docId":"usage/upgrade"},{"type":"link","label":"Use-cases","href":"/docs/usage/usecases","docId":"usage/usecases"}],"href":"/docs/usage/"},{"type":"link","label":"Design","href":"/docs/design","docId":"design"},{"type":"link","label":"Comparison","href":"/docs/comparison","docId":"comparison"},{"type":"category","label":"Development","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Proxying","href":"/docs/development/proxying","docId":"development/proxying"},{"type":"link","label":"Session Signaling","href":"/docs/development/signaling","docId":"development/signaling"},{"type":"link","label":"TODOs","href":"/docs/development/todo","docId":"development/todo"}],"href":"/docs/development/"}]},"docs":{"comparison":{"id":"comparison","title":"Comparison","description":"There exist a suite of other peer-to-peer VPN solutions comparable to cun\u012bcu:","sidebar":"tutorialSidebar"},"configuration":{"id":"configuration","title":"Configuration","description":"This page describes the ways of configuring the cunicu daemon (cunicu daemon).","sidebar":"tutorialSidebar"},"design":{"id":"design","title":"Design","description":"Objectives","sidebar":"tutorialSidebar"},"development/index":{"id":"development/index","title":"Development","description":"cun\u012bcu is written in 100% Go and as such we heavily rely on the awesome tooling and packages for Golang:","sidebar":"tutorialSidebar"},"development/proxying":{"id":"development/proxying","title":"Proxying","description":"cun\u012bcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports.","sidebar":"tutorialSidebar"},"development/signaling":{"id":"development/signaling","title":"Session Signaling","description":"Lets assume two peers $Pa$ & $Pb$ are seeking to establish a ICE session.","sidebar":"tutorialSidebar"},"development/todo":{"id":"development/todo","title":"TODOs","description":"Please also have a look at the current GitHub issues of the project.","sidebar":"tutorialSidebar"},"features/autocfg":{"id":"features/autocfg","title":"Auto-configuration","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/cfgsync":{"id":"features/cfgsync","title":"Config-file Synchronization","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/epdisc":{"id":"features/epdisc","title":"Endpoint Discovery","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/hooks":{"id":"features/hooks","title":"Hooks","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/hsync":{"id":"features/hsync","title":"Hosts-file Synchronization","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/pdisc":{"id":"features/pdisc","title":"Peer Discovery","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/pske":{"id":"features/pske","title":"Pre-shared Key Establishment","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"features/rtsync":{"id":"features/rtsync","title":"Route Synchronization","description":"\ud83d\udea7 This page is under construction","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Welcome","description":"GitHub Workflow Status","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"This guide shows how to install cun\u012bcu.","sidebar":"tutorialSidebar"},"usage/index":{"id":"usage/index","title":"Usage","description":"Command Line","sidebar":"tutorialSidebar"},"usage/md/cunicu":{"id":"usage/md/cunicu","title":"cunicu","description":"cunicu","sidebar":"tutorialSidebar"},"usage/md/cunicu_addresses":{"id":"usage/md/cunicu_addresses","title":"cunicu addresses","description":"cunicu addresses","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion":{"id":"usage/md/cunicu_completion","title":"cunicu completion","description":"cunicu completion","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_bash":{"id":"usage/md/cunicu_completion_bash","title":"cunicu completion bash","description":"cunicu completion bash","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_fish":{"id":"usage/md/cunicu_completion_fish","title":"cunicu completion fish","description":"cunicu completion fish","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_powershell":{"id":"usage/md/cunicu_completion_powershell","title":"cunicu completion powershell","description":"cunicu completion powershell","sidebar":"tutorialSidebar"},"usage/md/cunicu_completion_zsh":{"id":"usage/md/cunicu_completion_zsh","title":"cunicu completion zsh","description":"cunicu completion zsh","sidebar":"tutorialSidebar"},"usage/md/cunicu_config":{"id":"usage/md/cunicu_config","title":"cunicu config","description":"cunicu config","sidebar":"tutorialSidebar"},"usage/md/cunicu_config_get":{"id":"usage/md/cunicu_config_get","title":"cunicu config get","description":"cunicu config get","sidebar":"tutorialSidebar"},"usage/md/cunicu_config_set":{"id":"usage/md/cunicu_config_set","title":"cunicu config set","description":"cunicu config set","sidebar":"tutorialSidebar"},"usage/md/cunicu_daemon":{"id":"usage/md/cunicu_daemon","title":"cunicu daemon","description":"cunicu daemon","sidebar":"tutorialSidebar"},"usage/md/cunicu_monitor":{"id":"usage/md/cunicu_monitor","title":"cunicu monitor","description":"cunicu monitor","sidebar":"tutorialSidebar"},"usage/md/cunicu_restart":{"id":"usage/md/cunicu_restart","title":"cunicu restart","description":"cunicu restart","sidebar":"tutorialSidebar"},"usage/md/cunicu_self-update":{"id":"usage/md/cunicu_self-update","title":"cunicu self-update","description":"cunicu self-update","sidebar":"tutorialSidebar"},"usage/md/cunicu_selfupdate":{"id":"usage/md/cunicu_selfupdate","title":"cunicu selfupdate","description":"cunicu selfupdate","sidebar":"tutorialSidebar"},"usage/md/cunicu_signal":{"id":"usage/md/cunicu_signal","title":"cunicu signal","description":"cunicu signal","sidebar":"tutorialSidebar"},"usage/md/cunicu_status":{"id":"usage/md/cunicu_status","title":"cunicu status","description":"cunicu status","sidebar":"tutorialSidebar"},"usage/md/cunicu_stop":{"id":"usage/md/cunicu_stop","title":"cunicu stop","description":"cunicu stop","sidebar":"tutorialSidebar"},"usage/md/cunicu_sync":{"id":"usage/md/cunicu_sync","title":"cunicu sync","description":"cunicu sync","sidebar":"tutorialSidebar"},"usage/md/cunicu_version":{"id":"usage/md/cunicu_version","title":"cunicu version","description":"cunicu version","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg":{"id":"usage/md/cunicu_wg","title":"cunicu wg","description":"cunicu wg","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_genkey":{"id":"usage/md/cunicu_wg_genkey","title":"cunicu wg genkey","description":"cunicu wg genkey","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_genpsk":{"id":"usage/md/cunicu_wg_genpsk","title":"cunicu wg genpsk","description":"cunicu wg genpsk","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_pubkey":{"id":"usage/md/cunicu_wg_pubkey","title":"cunicu wg pubkey","description":"cunicu wg pubkey","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_show":{"id":"usage/md/cunicu_wg_show","title":"cunicu wg show","description":"cunicu wg show","sidebar":"tutorialSidebar"},"usage/md/cunicu_wg_showconf":{"id":"usage/md/cunicu_wg_showconf","title":"cunicu wg showconf","description":"cunicu wg showconf","sidebar":"tutorialSidebar"},"usage/upgrade":{"id":"usage/upgrade","title":"Self-update","description":"cun\u012bcu has a built-in self update functionality.","sidebar":"tutorialSidebar"},"usage/usecases":{"id":"usage/usecases","title":"Use-cases","description":"Zero-configuration","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/93c4fd1c.76d8bf6a.js b/assets/js/93c4fd1c.76d8bf6a.js deleted file mode 100644 index 6f8cffa8..00000000 --- a/assets/js/93c4fd1c.76d8bf6a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3289],{8249:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>u,toc:()=>c});var o=n(7462),s=(n(7294),n(3905));n(1839);const a={title:"cunicu stop",sidebar_label:"stop",sidebar_class_name:"command-name",slug:"/usage/man/stop",hide_title:!0,keywords:["manpage"]},i=void 0,u={unversionedId:"usage/md/cunicu_stop",id:"usage/md/cunicu_stop",title:"cunicu stop",description:"cunicu stop",source:"@site/docs/usage/md/cunicu_stop.md",sourceDirName:"usage/md",slug:"/usage/man/stop",permalink:"/docs/usage/man/stop",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_stop.md",tags:[],version:"current",frontMatter:{title:"cunicu stop",sidebar_label:"stop",sidebar_class_name:"command-name",slug:"/usage/man/stop",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"status",permalink:"/docs/usage/man/status"},next:{title:"sync",permalink:"/docs/usage/man/sync"}},r={},c=[{value:"cunicu stop",id:"cunicu-stop",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function p(e){let{components:t,...n}=e;return(0,s.kt)("wrapper",(0,o.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-stop"},"cunicu stop"),(0,s.kt)("p",null,"Shutdown the cun\u012bcu daemon"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu stop [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -h, --help help for stop\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/93c4fd1c.f5b2468f.js b/assets/js/93c4fd1c.f5b2468f.js new file mode 100644 index 00000000..4a8becb9 --- /dev/null +++ b/assets/js/93c4fd1c.f5b2468f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3289],{8249:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>u,toc:()=>c});var o=n(7462),s=(n(7294),n(3905));n(1839);const a={title:"cunicu stop",sidebar_label:"stop",sidebar_class_name:"command-name",slug:"/usage/man/stop",hide_title:!0,keywords:["manpage"]},i=void 0,u={unversionedId:"usage/md/cunicu_stop",id:"usage/md/cunicu_stop",title:"cunicu stop",description:"cunicu stop",source:"@site/docs/usage/md/cunicu_stop.md",sourceDirName:"usage/md",slug:"/usage/man/stop",permalink:"/docs/usage/man/stop",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_stop.md",tags:[],version:"current",frontMatter:{title:"cunicu stop",sidebar_label:"stop",sidebar_class_name:"command-name",slug:"/usage/man/stop",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"status",permalink:"/docs/usage/man/status"},next:{title:"sync",permalink:"/docs/usage/man/sync"}},r={},c=[{value:"cunicu stop",id:"cunicu-stop",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function p(e){let{components:t,...n}=e;return(0,s.kt)("wrapper",(0,o.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-stop"},"cunicu stop"),(0,s.kt)("p",null,"Shutdown the cun\u012bcu daemon"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu stop [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -h, --help help for stop\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9ed00105.8feedae3.js b/assets/js/9ed00105.8feedae3.js deleted file mode 100644 index 19020e97..00000000 --- a/assets/js/9ed00105.8feedae3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9004],{9733:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(7462),a=(t(7294),t(3905));t(1839);const o={sidebar_position:7},r="Configuration",s={unversionedId:"configuration",id:"configuration",title:"Configuration",description:"This page describes the ways of configuring the cunicu daemon (cunicu daemon).",source:"@site/docs/configuration.md",sourceDirName:".",slug:"/configuration",permalink:"/docs/configuration",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/configuration.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/docs/installation"},next:{title:"Auto-configuration",permalink:"/docs/features/autocfg"}},l={},c=[{value:"Command Line Flags",id:"command-line-flags",level:2},{value:"Configuration File",id:"configuration-file",level:2},{value:"Environment Variables",id:"environment-variables",level:2},{value:"DNS Auto-configuration",id:"dns-auto-configuration",level:2},{value:"Remote Configuration File",id:"remote-configuration-file",level:2}],u={toc:c};function d(e){let{components:n,...t}=e;return(0,a.kt)("wrapper",(0,i.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"This page describes the ways of configuring the cunicu daemon (",(0,a.kt)("inlineCode",{parentName:"p"},"cunicu daemon"),")."),(0,a.kt)("h2",{id:"command-line-flags"},"Command Line Flags"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"cunicu daemon")," can almost fully be configured by passing command line arguments.\nA full overview is available in its ",(0,a.kt)("a",{parentName:"p",href:"/docs/usage/man/daemon"},"manpage"),"."),(0,a.kt)("h2",{id:"configuration-file"},"Configuration File"),(0,a.kt)("p",null,"Alternatively a configuration file can be used for a persistent configuration:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="cunicu.yaml"',title:'"cunicu.yaml"'},'watch_interval: 1s\n\nbackends:\n- grpc://localhost:8080?insecure=true&skip_verify=true\n- k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n# WireGuard settings\nwireguard: \n # Create WireGuard interfaces using bundled wireguard-go Userspace implementation\n # This will be the default if there is no WireGuard kernel module present.\n userspace: false\n\n # Ignore WireGuard interface which do not match this regular expression\n interface_filter: .*\n\n # A list of WireGuard interfaces which should be configured\n interfaces:\n - wg-vpn\n\n # Port range for ListenPort setting of newly created WireGuard interfaces\n # cun\u012bcu will select the first available port in this range.\n port:\n min: 52820\n max: 65535\n\n# Control socket settings\nsocket:\n path: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until its unblocked via the control socket\n # Mostly useful for testing automation\n wait: false\n\n# Synchronize WireGuard interface configurations with wg(8) config-files.\nconfig_sync:\n enabled: false\n \n # Directory where Wireguard configuration files are located.\n # We expect the same format as used by wg(8) and wg-quick(8).\n # Filenames must match the interface name with a \'.conf\' suffix.\n path: /etc/wireguard\n\n # Watch the configuration files for changes and apply them accordingly.\n watch: false\n \n# Synchronize WireGuard AllowedIPs with Kernel routing table\nroute_sync:\n enabled: true\n\n table: main\n\n# Discovery of other WireGuard peers\npeer_disc:\n enabled: true\n\n # A list of WireGuard public keys which are accepted peers\n whitelist:\n - coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n - AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n # A passphrase shared among all peers of the same community\n community: "some-common-password"\n\n# Discovery of WireGuard endpoint addressesendpoint_disc:\n enabled: true\n\n # Interactive Connectivity Establishment parameters\n ice:\n # A list of STUN and TURN servers used by ICE\n urls:\n - stun:stun.l.google.com:19302\n\n # Credentials for STUN/TURN servers configured above\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which\n # we cant validate their TLS certificates\n insecure_skip_verify: false\n\n # Limit available network and candidate types\n network_types: [udp4, udp6, tcp4, tcp6]\n candidate_types: [host, srflx, prflx ,relay]\n\n # Regular expression whitelist of interfaces which are used to gather ICE candidates.\n interface_filter: .*\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Attempt to find candidates via mDNS discovery\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n nat_1to1_ips: []\n\n # Limit the port range used by ICE\n port:\n min: 49152\n max: 65535\n\n # The check interval controls how often our task loop runs when in the connecting state.\n check_interval: 200ms\n \n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n restart_timeout: 5s\n\n # Determines how often should we send ICE keepalives (should be less then connection timeout above).\n # A keepalive interval of 0 means we never send keepalive packets\n keepalive_interval: 2s\n')),(0,a.kt)("h2",{id:"environment-variables"},"Environment Variables"),(0,a.kt)("p",null,"All the settings from the configuration file can also be passed via environment variables by following the following rules:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Convert the setting name to uppercase"),(0,a.kt)("li",{parentName:"ul"},"Prefixing the setting name with ",(0,a.kt)("inlineCode",{parentName:"li"},"CUNICU_")),(0,a.kt)("li",{parentName:"ul"},"Nested settings are separated by underscores")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Example:")," The setting ",(0,a.kt)("inlineCode",{parentName:"p"},"endpoint_disc.ice.max_binding_requests")," can be set by the environment variable ",(0,a.kt)("inlineCode",{parentName:"p"},"CUNICU_ENDPOINT_DISC_ICE_MAX_BINDING_REQUESTS")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," Setting lists such as ",(0,a.kt)("inlineCode",{parentName:"p"},"endpoint_disc.ice.urls")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"backends")," can currently not be set via environment variables."),(0,a.kt)("h2",{id:"dns-auto-configuration"},"DNS Auto-configuration"),(0,a.kt)("p",null,"cun\u012bcu als supports retrieving parts of the configuration via DNS lookups."),(0,a.kt)("p",null,"When ",(0,a.kt)("inlineCode",{parentName:"p"},"cunicu daemon")," is started with a ",(0,a.kt)("inlineCode",{parentName:"p"},"--domain example.com")," parameter it will look for the following DNS records to obtain its configuration."),(0,a.kt)("p",null,"STUN and TURN servers used for ICE are retrieved by SVR lookups and other cun\u012bcu settings are retrieved via TXT lookups: "),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text"},'_stun._udp.example.com. 3600 IN SRV 10 0 3478 stun.example.com.\n_stuns._tcp.example.com. 3600 IN SRV 10 0 3478 stun.example.com.\n_turn._udp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.\n_turn._tcp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.\n_turns._tcp.example.com. 3600 IN SRV 10 0 5349 turn.example.com.\n\nexample.com. 3600 IN TXT "cunicu-backend=p2p"\nexample.com. 3600 IN TXT "cunicu-peer-disc-community=my-community-password"\nexample.com. 3600 IN TXT "cunicu-endpoint-disc-ice-username=user1"\nexample.com. 3600 IN TXT "cunicu-endpoint-disc-ice-password=pass1"\nexample.com. 3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"\n')),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," The ",(0,a.kt)("inlineCode",{parentName:"p"},"cunicu-backend")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"cunicu-config")," TXT records can be provided multiple times. Others not."),(0,a.kt)("h2",{id:"remote-configuration-file"},"Remote Configuration File"),(0,a.kt)("p",null,"When ",(0,a.kt)("inlineCode",{parentName:"p"},"cunicu daemon")," can be started with ",(0,a.kt)("inlineCode",{parentName:"p"},"--config")," options pointing to HTTPS URIs.\ncun\u012bcu will download all configuration files in the order they are specified on the command line and merge them subsequently."),(0,a.kt)("p",null,"This feature can be combined with the DNS auto-configuration method by providing a TXT record pointing to the configuration file:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text"},'example.com. 3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"\n')),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," Remote configuration files must be fetched via HTTPS if they are not hosted locally and required a trusted server certificate."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9fc6b440.785a19dc.js b/assets/js/9fc6b440.785a19dc.js deleted file mode 100644 index 21c7fc6c..00000000 --- a/assets/js/9fc6b440.785a19dc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[603],{4090:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>o,toc:()=>p});var i=a(7462),n=(a(7294),a(3905));a(1839);const r={},l="TODOs",o={unversionedId:"development/todo",id:"development/todo",title:"TODOs",description:"Please also have a look at the current GitHub issues of the project.",source:"@site/docs/development/todo.md",sourceDirName:"development",slug:"/development/todo",permalink:"/docs/development/todo",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/development/todo.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Session Signaling",permalink:"/docs/development/signaling"}},s={},p=[],c={toc:p};function m(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,i.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"todos"},"TODOs"),(0,n.kt)("p",null,"Please also have a look at the current ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/issues"},"GitHub issues")," of the project."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Investigate distributed management of Access Control Lists (ACL)"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://ieeexplore.ieee.org/document/1437269"},"https://ieeexplore.ieee.org/document/1437269")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.it.iitb.ac.in/~madhumita/access/gcs/A%20Trust%20based%20Access%20Control%20Framework%20for%20P2P%20File%20Sharing%20Systems.pdf"},"https://www.it.iitb.ac.in/~madhumita/access/gcs/A%20Trust%20based%20Access%20Control%20Framework%20for%20P2P%20File%20Sharing%20Systems.pdf")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.springerprofessional.de/en/decentralized-access-control-technique-with-multi-tier-authentic/19543988"},"https://www.springerprofessional.de/en/decentralized-access-control-technique-with-multi-tier-authentic/19543988")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://link.springer.com/chapter/10.1007%2F978-3-319-28865-9_28"},"https://link.springer.com/chapter/10.1007%2F978-3-319-28865-9_28")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Single socket per WireGuard interface / ICE Agent")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Update proxy instances instead of recreating them."),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Avoids possible packet loss during change of candidate pairs"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add better proxy implementations for OpenBSD, FreeBSD, Android and Windows")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add sub-commands for controlling ",(0,n.kt)("inlineCode",{parentName:"p"},"cunicu")," daemon:"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu show [[INTF] [PEER]]")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu add INTF")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu delete INTF")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu discover INTF GROUP")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu sync [INTF]")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu restart INTF PEER")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu monitor")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add check for handshakes before attempting to ping")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add context for waiting for events")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Use mermaid actor diagram for signaling docs")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Use RTT & packet loss for selecting ICE relay candidates")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Move all the ToDo in this document to GitHub issues"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9fc6b440.8a1014a2.js b/assets/js/9fc6b440.8a1014a2.js new file mode 100644 index 00000000..46c4a45f --- /dev/null +++ b/assets/js/9fc6b440.8a1014a2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[603],{4090:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>o,toc:()=>p});var i=a(7462),n=(a(7294),a(3905));a(1839);const r={},l="TODOs",o={unversionedId:"development/todo",id:"development/todo",title:"TODOs",description:"Please also have a look at the current GitHub issues of the project.",source:"@site/docs/development/todo.md",sourceDirName:"development",slug:"/development/todo",permalink:"/docs/development/todo",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/development/todo.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Session Signaling",permalink:"/docs/development/signaling"}},s={},p=[],c={toc:p};function m(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,i.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"todos"},"TODOs"),(0,n.kt)("p",null,"Please also have a look at the current ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/issues"},"GitHub issues")," of the project."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Investigate distributed management of Access Control Lists (ACL)"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://ieeexplore.ieee.org/document/1437269"},"https://ieeexplore.ieee.org/document/1437269")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.it.iitb.ac.in/~madhumita/access/gcs/A%20Trust%20based%20Access%20Control%20Framework%20for%20P2P%20File%20Sharing%20Systems.pdf"},"https://www.it.iitb.ac.in/~madhumita/access/gcs/A%20Trust%20based%20Access%20Control%20Framework%20for%20P2P%20File%20Sharing%20Systems.pdf")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.springerprofessional.de/en/decentralized-access-control-technique-with-multi-tier-authentic/19543988"},"https://www.springerprofessional.de/en/decentralized-access-control-technique-with-multi-tier-authentic/19543988")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://link.springer.com/chapter/10.1007%2F978-3-319-28865-9_28"},"https://link.springer.com/chapter/10.1007%2F978-3-319-28865-9_28")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Single socket per WireGuard interface / ICE Agent")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Update proxy instances instead of recreating them."),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Avoids possible packet loss during change of candidate pairs"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add better proxy implementations for OpenBSD, FreeBSD, Android and Windows")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add sub-commands for controlling ",(0,n.kt)("inlineCode",{parentName:"p"},"cunicu")," daemon:"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu show [[INTF] [PEER]]")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu add INTF")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu delete INTF")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu discover INTF GROUP")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu sync [INTF]")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu restart INTF PEER")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cunicu monitor")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add check for handshakes before attempting to ping")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Add context for waiting for events")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Use mermaid actor diagram for signaling docs")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Use RTT & packet loss for selecting ICE relay candidates")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Move all the ToDo in this document to GitHub issues"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.69c7828b.js b/assets/js/b2f554cd.69c7828b.js deleted file mode 100644 index 5ad53277..00000000 --- a/assets/js/b2f554cd.69c7828b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1477],{10:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/blog/welcome","editUrl":"https://github.com/stv0g/cunicu/master/website/blog/2022-09-08-welcome/index.md","source":"@site/blog/2022-09-08-welcome/index.md","title":"Welcome","description":"Hello, welcome to the cun\u012bcu blog. We will start posting some updates here soon.","date":"2022-09-08T00:00:00.000Z","formattedDate":"September 8, 2022","tags":[{"label":"hello","permalink":"/blog/tags/hello"}],"readingTime":0.07,"hasTruncateMarker":false,"authors":[{"name":"Steffen Vogel","title":"Maintainer of cun\u012bcu","url":"https://github.com/stv0g","imageURL":"https://github.com/stv0g.png","key":"stv0g"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["stv0g"],"tags":["hello"]}},"content":"Hello, welcome to the cun\u012bcu blog. We will start posting some updates here soon."}]}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.907b026a.js b/assets/js/b2f554cd.907b026a.js new file mode 100644 index 00000000..3c70b636 --- /dev/null +++ b/assets/js/b2f554cd.907b026a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[1477],{10:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/blog/welcome","editUrl":"https://github.com/stv0g/cunicu/master/website/blog/2022-09-15-welcome/index.md","source":"@site/blog/2022-09-15-welcome/index.md","title":"Welcome","description":"Hello, welcome to the first post in the cun\u012bcu project blog!","date":"2022-09-15T00:00:00.000Z","formattedDate":"September 15, 2022","tags":[{"label":"hello","permalink":"/blog/tags/hello"}],"readingTime":1.2,"hasTruncateMarker":false,"authors":[{"name":"Steffen Vogel","title":"Maintainer of cun\u012bcu","url":"https://github.com/stv0g","imageURL":"https://github.com/stv0g.png","key":"stv0g"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["stv0g"],"tags":["hello"]}},"content":"Hello, welcome to the first post in the cun\u012bcu project blog!\\n\\nWhile the project is still in its infancy there are some updates in [TL;DR](https://en.wikipedia.org/wiki/TL;DR).\\n\\n### First release\\n\\nWe are planning to publish the first official release within the next 4-10 weeks \ud83c\udf89.\\nThe release pipeline, packaging and self-update feature and more has already been implemented.\\nWe just need to finish the last features and do quite some more testing.\\n\\n### Website, Docs and Twitter\\n\\nThe project has now its dedicated [website](https://cunicu.li), [GitHub organization](https://github.com/cunicu) and Twitter handle ([@cunicuVPN](https://twitter.com/cunicuVPN)).\\nFeel free to follow us there for updates!\\n\\nYou might also have realized that the project name has changed. We decided to rebrand from the previous name _wice_ to avoid any potential trademark issues with the WireGuard project as well as another small German company named _WICE_.\\nThe project name _cun\u012bcu_ [k\u028a\u02c8ni\u02d0k\u028a] is derived from the [latin noun cun\u012bculus](https://en.wiktionary.org/wiki/cuniculus#Latin) which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as _cun\u012bcu_ builds tunnels between otherwise hard to reach network locations.\\n\\nThis also gave us the opportunity to redesign the logo which you find further down in the sticker design.\\n\\n\\n### Stickers\\n\\nWe have stickers! Just drop me a mail at [\ud83d\udce7 info@cunicu.li](mailto:info@cunicu.li) and I will send you some or talk to me at some of the upcoming conferences.\\n\\n<figure>\\n <center>\\n <img src=\\"/img/cunicu_sticker.svg\\" alt=\\"The sticker design\\" style={{transform: \\"rotate(270deg)\\"}} />\\n <figcaption>The sticker design</figcaption>\\n </center>\\n</figure>"}]}')}}]); \ No newline at end of file diff --git a/assets/js/b88c5a7d.0e4c39e3.js b/assets/js/b88c5a7d.0e4c39e3.js new file mode 100644 index 00000000..8f015310 --- /dev/null +++ b/assets/js/b88c5a7d.0e4c39e3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6812],{4297:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});var t=i(7462),o=(i(7294),i(3905));i(1839);const a={title:"cunicu config",sidebar_label:"config",sidebar_class_name:"command-name",slug:"/usage/man/config",hide_title:!0,keywords:["manpage"]},c=void 0,s={unversionedId:"usage/md/cunicu_config",id:"usage/md/cunicu_config",title:"cunicu config",description:"cunicu config",source:"@site/docs/usage/md/cunicu_config.md",sourceDirName:"usage/md",slug:"/usage/man/config",permalink:"/docs/usage/man/config",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_config.md",tags:[],version:"current",frontMatter:{title:"cunicu config",sidebar_label:"config",sidebar_class_name:"command-name",slug:"/usage/man/config",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion zsh",permalink:"/docs/usage/man/completion/zsh"},next:{title:"config get",permalink:"/docs/usage/man/config/get"}},u={},r=[{value:"cunicu config",id:"cunicu-config",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:r};function d(e){let{components:n,...i}=e;return(0,o.kt)("wrapper",(0,t.Z)({},l,i,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-config"},"cunicu config"),(0,o.kt)("p",null,"Manage configuration of a running cun\u012bcu daemon."),(0,o.kt)("h3",{id:"synopsis"},"Synopsis"),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -h, --help help for config\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config/get"},"cunicu config get"),"\t - Get current value of a configuration setting"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config/reload"},"cunicu config reload"),"\t - Reload the configuration of the cun\u012bcu daemon"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config/set"},"cunicu config set"),"\t - Update the value of a configuration setting")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b88c5a7d.129017e4.js b/assets/js/b88c5a7d.129017e4.js deleted file mode 100644 index 32ef82ce..00000000 --- a/assets/js/b88c5a7d.129017e4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6812],{4297:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});var t=i(7462),o=(i(7294),i(3905));i(1839);const a={title:"cunicu config",sidebar_label:"config",sidebar_class_name:"command-name",slug:"/usage/man/config",hide_title:!0,keywords:["manpage"]},c=void 0,s={unversionedId:"usage/md/cunicu_config",id:"usage/md/cunicu_config",title:"cunicu config",description:"cunicu config",source:"@site/docs/usage/md/cunicu_config.md",sourceDirName:"usage/md",slug:"/usage/man/config",permalink:"/docs/usage/man/config",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_config.md",tags:[],version:"current",frontMatter:{title:"cunicu config",sidebar_label:"config",sidebar_class_name:"command-name",slug:"/usage/man/config",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"completion zsh",permalink:"/docs/usage/man/completion/zsh"},next:{title:"config get",permalink:"/docs/usage/man/config/get"}},u={},r=[{value:"cunicu config",id:"cunicu-config",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:r};function d(e){let{components:n,...i}=e;return(0,o.kt)("wrapper",(0,t.Z)({},l,i,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-config"},"cunicu config"),(0,o.kt)("p",null,"Manage configuration of a running cun\u012bcu daemon."),(0,o.kt)("h3",{id:"synopsis"},"Synopsis"),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -h, --help help for config\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config/get"},"cunicu config get"),"\t - Get current value of a configuration setting"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config/set"},"cunicu config set"),"\t - Update the value of a configuration setting")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bfed30f4.8eeee203.js b/assets/js/bfed30f4.8eeee203.js new file mode 100644 index 00000000..a11d0705 --- /dev/null +++ b/assets/js/bfed30f4.8eeee203.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4883],{4172:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var t=i(7462),a=(i(7294),i(3905));i(1839);const o={title:"cunicu invite",sidebar_label:"invite",sidebar_class_name:"command-name",slug:"/usage/man/invite",hide_title:!0,keywords:["manpage"]},r=void 0,s={unversionedId:"usage/md/cunicu_invite",id:"usage/md/cunicu_invite",title:"cunicu invite",description:"cunicu invite",source:"@site/docs/usage/md/cunicu_invite.md",sourceDirName:"usage/md",slug:"/usage/man/invite",permalink:"/docs/usage/man/invite",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_invite.md",tags:[],version:"current",frontMatter:{title:"cunicu invite",sidebar_label:"invite",sidebar_class_name:"command-name",slug:"/usage/man/invite",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"daemon",permalink:"/docs/usage/man/daemon"},next:{title:"monitor",permalink:"/docs/usage/man/monitor"}},u={},c=[{value:"cunicu invite",id:"cunicu-invite",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:n,...i}=e;return(0,a.kt)("wrapper",(0,t.Z)({},l,i,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"cunicu-invite"},"cunicu invite"),(0,a.kt)("p",null,"Add a new peer to the local daemon configuration and return the required configuration for this new peer"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cunicu invite [interface] [flags]\n")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -h, --help help for invite\n -L, --listen-port int Listen port for generated config (default 51820)\n -Q, --qr-code Show config as QR code in terminal\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,a.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,a.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c0742808.778dc737.js b/assets/js/c0742808.778dc737.js new file mode 100644 index 00000000..f7b8bf44 --- /dev/null +++ b/assets/js/c0742808.778dc737.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4015],{6983:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>s,metadata:()=>o,toc:()=>l});var n=a(7462),r=(a(7294),a(3905));a(1839);const s={},i="Features",o={unversionedId:"features/index",id:"features/index",title:"Features",description:"The cun\u012bcu daemon supports many features which are implemented by separate software modules/packages.",source:"@site/docs/features/index.md",sourceDirName:"features",slug:"/features/",permalink:"/docs/features/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/index.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Configuration Reference",permalink:"/docs/config-reference"},next:{title:"Auto-configuration",permalink:"/docs/features/autocfg"}},u={},l=[],c={toc:l};function p(e){let{components:t,...a}=e;return(0,r.kt)("wrapper",(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"features"},"Features"),(0,r.kt)("p",null,"The cun\u012bcu daemon supports many features which are implemented by separate software modules/packages.\nThis structure promotes the ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Separation_of_concerns"},"separation of concerns")," within the code-base and allows for use-cases in which only subsets of features are used.\nE.g. we can use cun\u012bcu for the post-quantum safe exchange of pre-shared keys without any of the other features like peer or endpoint discovery. With very few exceptions all of the features listed below can be used separately."),(0,r.kt)("p",null,"Currently, the following features are implemented as separate modules:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/autocfg"},"Auto-configuration of missing interface settings and link-local IP addresses")," (",(0,r.kt)("inlineCode",{parentName:"li"},"autocfg"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/cfgsync"},"Config Synchronization")," (",(0,r.kt)("inlineCode",{parentName:"li"},"cfgsync"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/pdisc"},"Peer Discovery")," (",(0,r.kt)("inlineCode",{parentName:"li"},"pdisc"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/epdisc"},"Endpoint Discovery")," (",(0,r.kt)("inlineCode",{parentName:"li"},"epdisc"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/hooks"},"Hooks")," (",(0,r.kt)("inlineCode",{parentName:"li"},"hooks"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/hsync"},"Hosts-file Synchronization")," (",(0,r.kt)("inlineCode",{parentName:"li"},"hsync"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/pske"},"Pre-shared Key Establishment")," (",(0,r.kt)("inlineCode",{parentName:"li"},"pske"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/features/rtsync"},"Route Synchronization")," (",(0,r.kt)("inlineCode",{parentName:"li"},"rtsync"),")")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c092e03b.7d902034.js b/assets/js/c092e03b.7d902034.js new file mode 100644 index 00000000..c928e939 --- /dev/null +++ b/assets/js/c092e03b.7d902034.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[5468],{5484:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var t=n(7462),o=(n(7294),n(3905));n(1839);const r={title:"cunicu reload",sidebar_label:"reload",sidebar_class_name:"command-name",slug:"/usage/man/reload",hide_title:!0,keywords:["manpage"]},i=void 0,l={unversionedId:"usage/md/cunicu_reload",id:"usage/md/cunicu_reload",title:"cunicu reload",description:"cunicu reload",source:"@site/docs/usage/md/cunicu_reload.md",sourceDirName:"usage/md",slug:"/usage/man/reload",permalink:"/docs/usage/man/reload",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_reload.md",tags:[],version:"current",frontMatter:{title:"cunicu reload",sidebar_label:"reload",sidebar_class_name:"command-name",slug:"/usage/man/reload",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"relay",permalink:"/docs/usage/man/relay"},next:{title:"restart",permalink:"/docs/usage/man/restart"}},s={},u=[{value:"cunicu reload",id:"cunicu-reload",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],d={toc:u};function c(e){let{components:a,...n}=e;return(0,o.kt)("wrapper",(0,t.Z)({},d,n,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-reload"},"cunicu reload"),(0,o.kt)("p",null,"Reload the configuration of the cun\u012bcu daemon"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"cunicu reload [flags]\n")),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -h, --help help for reload\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c180861d.9b7b3162.js b/assets/js/c180861d.9b7b3162.js new file mode 100644 index 00000000..62eb6583 --- /dev/null +++ b/assets/js/c180861d.9b7b3162.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3989],{2731:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>N,frontMatter:()=>p,metadata:()=>i,toc:()=>c});var n=t(7462),s=(t(7294),t(3905)),m=t(1839);const p={},r="Session Signaling",i={unversionedId:"development/signaling",id:"development/signaling",title:"Session Signaling",description:"Lets assume two peers $Pa$ & $Pb$ are seeking to establish a ICE session.",source:"@site/docs/development/signaling.md",sourceDirName:"development",slug:"/development/signaling",permalink:"/docs/development/signaling",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/development/signaling.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Proxying",permalink:"/docs/development/proxying"},next:{title:"TODOs",permalink:"/docs/development/todo"}},l={},c=[{value:"Session Description",id:"session-description",level:2},{value:"Backends",id:"backends",level:2},{value:"Available backends",id:"available-backends",level:3},{value:"Semantics",id:"semantics",level:3},{value:"Interface",id:"interface",level:3}],o={toc:c};function N(e){let{components:a,...t}=e;return(0,s.kt)("wrapper",(0,n.Z)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"session-signaling"},"Session Signaling"),(0,s.kt)("p",null,"Lets assume two peers ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"a"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"P_a")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.1514em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"a")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"}))))))))))," & ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"b"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"P_b")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"b")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"}))))))))))," are seeking to establish a ICE session."),(0,s.kt)("p",null,"The smaller public key (PK) of the two peers takes the role of the controlling agent.\nIn this example PA has the role of the controlling agent as: ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"P"),(0,s.kt)("mi",{parentName:"mrow"},"K"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"a")),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mo",{parentName:"mrow"},"<"),(0,s.kt)("mi",{parentName:"mrow"},"P"),(0,s.kt)("mi",{parentName:"mrow"},"K"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"b")),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"PK(P_a) < PK(P_b)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.07153em"}},"K"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.1514em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"a")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"<"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.07153em"}},"K"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"b")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))))),"."),(0,s.kt)(m.G,{chart:"sequenceDiagram\n autonumber\n\n actor Pa as Peer A\n actor Pb as Peer B\n participant b as Backend\n\n Pa ->> b: SessionDescription(Pa -> Pb)\n b ->> Pb: SessionDescription(Pa -> Pb)\n\n Pb ->> b: SessionDescription(Pb -> Pa)\n b ->> Pa: SessionDescription(Pb -> Pa)",mdxType:"Mermaid"}),(0,s.kt)(m.G,{chart:"stateDiagram-v2 \n [*] --\x3e Unknown\n \n note right of Unknown\n No agent exists\n end note\n\n Unknown --\x3e Idle: 1. Create new agent<br>2. Send local credentials\n\n Idle --\x3e New: On remote credentials<br>1. Start gathering local candidates\n Idle --\x3e Idle: Repeatedly send local credentials with back-off\n\n New --\x3e Connecting: On remote candidate<br>1. Connect\n Connecting --\x3e Checking\n Checking --\x3e Connected\n Checking --\x3e Failed\n Completed --\x3e Disconnected\n Connected --\x3e Disconnected\n Connected --\x3e Completed\n Completed --\x3e Closed\n Disconnected --\x3e Closed\n Closed --\x3e Idle: 1. Create new agent<br>2. Send local credentials\n Failed --\x3e Closed",mdxType:"Mermaid"}),(0,s.kt)("h2",{id:"session-description"},"Session Description"),(0,s.kt)("p",null,"Session descriptions are exchanged by one or more the signaling backends via signaling ",(0,s.kt)("em",{parentName:"p"},"envelopes")," which contain signaling ",(0,s.kt)("em",{parentName:"p"},"messages"),".\nThe ",(0,s.kt)("em",{parentName:"p"},"envelopes")," are containers which encrypt the carried ",(0,s.kt)("em",{parentName:"p"},"message")," via asymmetric cryptography using the public key of the recipient."),(0,s.kt)("p",null,"Both the ",(0,s.kt)("em",{parentName:"p"},"envelope")," and the ",(0,s.kt)("em",{parentName:"p"},"message")," are serialized using Protobuf."),(0,s.kt)("p",null,"Checkout the ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/proto/signaling.proto"},(0,s.kt)("inlineCode",{parentName:"a"},"pkg/pb/signaling.proto"))," for details."),(0,s.kt)("h2",{id:"backends"},"Backends"),(0,s.kt)("p",null,"cun\u012bcu can support multiple backends for signaling session information such as session IDs, ICE candidates, public keys and STUN credentials."),(0,s.kt)("h3",{id:"available-backends"},"Available backends"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"gRPC"),(0,s.kt)("li",{parentName:"ul"},"Kubernetes API server")),(0,s.kt)("p",null,"For the use within a Kubernetes cluster also a dedicated backend using the Kubernetes api-server is available.\nCheckout the ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/pkg/signaling/backend.go"},(0,s.kt)("inlineCode",{parentName:"a"},"Backend"))," interface for implementing your own backend."),(0,s.kt)("h3",{id:"semantics"},"Semantics"),(0,s.kt)("p",null,"A backend must:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Must facilitate a reliable delivery ",(0,s.kt)("em",{parentName:"li"},"envelopes")," between peers using their public keys as addresses."),(0,s.kt)("li",{parentName:"ul"},"Must support delivery of ",(0,s.kt)("em",{parentName:"li"},"envelopes")," to a group of recipients (e.g. multicast)."),(0,s.kt)("li",{parentName:"ul"},"May deliver the ",(0,s.kt)("em",{parentName:"li"},"envelopes")," out-of-order."),(0,s.kt)("li",{parentName:"ul"},"May discard ",(0,s.kt)("em",{parentName:"li"},"envelopes")," if the recipient is not yet known or reachable."),(0,s.kt)("li",{parentName:"ul"},"Shall be stateless. It shall not buffer or record any ",(0,s.kt)("em",{parentName:"li"},"envelopes"),".")),(0,s.kt)("h3",{id:"interface"},"Interface"),(0,s.kt)("p",null,"All signaling backends implement the rather simple ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/pkg/signaling/backend.go"},(0,s.kt)("inlineCode",{parentName:"a"},"signaling.Backend")," interface"),":"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-go"},"type Message = pb.SignalingMessage\n\ntype MessageHandler interface {\n OnSignalingMessage(*crypto.PublicKeyPair, *Message)\n}\n\ntype Backend interface {\n io.Closer\n\n // Publish a signaling message to a specific peer\n Publish(ctx context.Context, kp *crypto.KeyPair, msg *Message) error\n\n // Subscribe to messages send by a specific peer\n Subscribe(ctx context.Context, kp *crypto.KeyPair, h MessageHandler) error\n\n // Subscribe to all messages irrespectively of sender\n SubscribeAll(ctx context.Context, sk *crypto.Key, h MessageHandler) error\n\n // Returns the backends type identifier\n Type() pb.BackendType\n}\n")))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c180861d.ffafae82.js b/assets/js/c180861d.ffafae82.js deleted file mode 100644 index 073a0c2f..00000000 --- a/assets/js/c180861d.ffafae82.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[3989],{2731:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>N,frontMatter:()=>p,metadata:()=>i,toc:()=>c});var n=t(7462),s=(t(7294),t(3905)),m=t(1839);const p={},r="Session Signaling",i={unversionedId:"development/signaling",id:"development/signaling",title:"Session Signaling",description:"Lets assume two peers $Pa$ & $Pb$ are seeking to establish a ICE session.",source:"@site/docs/development/signaling.md",sourceDirName:"development",slug:"/development/signaling",permalink:"/docs/development/signaling",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/development/signaling.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Proxying",permalink:"/docs/development/proxying"},next:{title:"TODOs",permalink:"/docs/development/todo"}},l={},c=[{value:"Session Description",id:"session-description",level:2},{value:"Backends",id:"backends",level:2},{value:"Available backends",id:"available-backends",level:3},{value:"Semantics",id:"semantics",level:3},{value:"Interface",id:"interface",level:3}],o={toc:c};function N(e){let{components:a,...t}=e;return(0,s.kt)("wrapper",(0,n.Z)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"session-signaling"},"Session Signaling"),(0,s.kt)("p",null,"Lets assume two peers ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"a"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"P_a")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.1514em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"a")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"}))))))))))," & ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"b"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"P_b")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"b")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"}))))))))))," are seeking to establish a ICE session."),(0,s.kt)("p",null,"The smaller public key (PK) of the two peers takes the role of the controlling agent.\nIn this example PA has the role of the controlling agent as: ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"P"),(0,s.kt)("mi",{parentName:"mrow"},"K"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"a")),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mo",{parentName:"mrow"},"<"),(0,s.kt)("mi",{parentName:"mrow"},"P"),(0,s.kt)("mi",{parentName:"mrow"},"K"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"msub"},"P"),(0,s.kt)("mi",{parentName:"msub"},"b")),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"PK(P_a) < PK(P_b)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.07153em"}},"K"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.1514em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"a")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"<"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.07153em"}},"K"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"P"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.3361em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"b")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.15em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))))),"."),(0,s.kt)(m.G,{chart:"sequenceDiagram\n autonumber\n\n actor Pa as Peer A\n actor Pb as Peer B\n participant b as Backend\n\n Pa ->> b: SessionDescription(Pa -> Pb)\n b ->> Pb: SessionDescription(Pa -> Pb)\n\n Pb ->> b: SessionDescription(Pb -> Pa)\n b ->> Pa: SessionDescription(Pb -> Pa)",mdxType:"Mermaid"}),(0,s.kt)(m.G,{chart:"stateDiagram-v2 \n [*] --\x3e Unknown\n \n note right of Unknown\n No agent exists\n end note\n\n Unknown --\x3e Idle: 1. Create new agent<br>2. Send local credentials\n\n Idle --\x3e New: On remote credentials<br>1. Start gathering local candidates\n Idle --\x3e Idle: Repeatedly send local credentials with back-off\n\n New --\x3e Connecting: On remote candidate<br>1. Connect\n Connecting --\x3e Checking\n Checking --\x3e Connected\n Checking --\x3e Failed\n Completed --\x3e Disconnected\n Connected --\x3e Disconnected\n Connected --\x3e Completed\n Completed --\x3e Closed\n Disconnected --\x3e Closed\n Closed --\x3e Idle: 1. Create new agent<br>2. Send local credentials\n Failed --\x3e Closed",mdxType:"Mermaid"}),(0,s.kt)("h2",{id:"session-description"},"Session Description"),(0,s.kt)("p",null,"Session descriptions are exchanged by one or more the signaling backends via signaling ",(0,s.kt)("em",{parentName:"p"},"envelopes")," which contain signaling ",(0,s.kt)("em",{parentName:"p"},"messages"),".\nThe ",(0,s.kt)("em",{parentName:"p"},"envelopes")," are containers which encrypt the carried ",(0,s.kt)("em",{parentName:"p"},"message")," via asymmetric cryptography using the public key of the recipient."),(0,s.kt)("p",null,"Both the ",(0,s.kt)("em",{parentName:"p"},"envelope")," and the ",(0,s.kt)("em",{parentName:"p"},"message")," are serialized using Protobuf."),(0,s.kt)("p",null,"Checkout the ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/proto/signaling.proto"},(0,s.kt)("inlineCode",{parentName:"a"},"pkg/pb/signaling.proto"))," for details."),(0,s.kt)("h2",{id:"backends"},"Backends"),(0,s.kt)("p",null,"cun\u012bcu can support multiple backends for signaling session information such as session IDs, ICE candidates, public keys and STUN credentials."),(0,s.kt)("h3",{id:"available-backends"},"Available backends"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"gRPC"),(0,s.kt)("li",{parentName:"ul"},"Kubernetes API server")),(0,s.kt)("p",null,"For the use within a Kubernetes cluster also a dedicated backend using the Kubernetes api-server is available.\nCheckout the ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/pkg/signaling/backend.go"},(0,s.kt)("inlineCode",{parentName:"a"},"Backend"))," interface for implementing your own backend."),(0,s.kt)("h3",{id:"semantics"},"Semantics"),(0,s.kt)("p",null,"A backend must:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Must facilitate a reliable delivery ",(0,s.kt)("em",{parentName:"li"},"envelopes")," between peers using their public keys as addresses."),(0,s.kt)("li",{parentName:"ul"},"Must support delivery of ",(0,s.kt)("em",{parentName:"li"},"envelopes")," to a group of recipients (e.g. multicast)."),(0,s.kt)("li",{parentName:"ul"},"May deliver the ",(0,s.kt)("em",{parentName:"li"},"envelopes")," out-of-order."),(0,s.kt)("li",{parentName:"ul"},"May discard ",(0,s.kt)("em",{parentName:"li"},"envelopes")," if the recipient is not yet known or reachable."),(0,s.kt)("li",{parentName:"ul"},"Shall be stateless. It shall not buffer or record any ",(0,s.kt)("em",{parentName:"li"},"envelopes"),".")),(0,s.kt)("h3",{id:"interface"},"Interface"),(0,s.kt)("p",null,"All signaling backends implement the rather simple ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/pkg/signaling/backend.go"},(0,s.kt)("inlineCode",{parentName:"a"},"signaling.Backend")," interface"),":"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-go"},"type Message = pb.SignalingMessage\n\ntype MessageHandler interface {\n OnSignalingMessage(*crypto.PublicKeyPair, *Message)\n}\n\ntype Backend interface {\n io.Closer\n\n // Publish a signaling message to a specific peer\n Publish(ctx context.Context, kp *crypto.KeyPair, msg *Message) error\n\n // Subscribe to messages send by a specific peer\n Subscribe(ctx context.Context, kp *crypto.KeyPair, h MessageHandler) error\n\n // Subscribe to all messages irrespectively of sender\n SubscribeAll(ctx context.Context, sk *crypto.Key, h MessageHandler) error\n\n // Returns the backends type identifier\n Type() pb.BackendType\n}\n")))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c18e783d.de87e08e.js b/assets/js/c18e783d.de87e08e.js deleted file mode 100644 index 1b552f82..00000000 --- a/assets/js/c18e783d.de87e08e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6435],{7746:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var r=n(7462),s=(n(7294),n(3905));n(1839);const i={title:"Route Synchronization"},o="Route Synchronization",a={unversionedId:"features/rtsync",id:"features/rtsync",title:"Route Synchronization",description:"\ud83d\udea7 This page is under construction",source:"@site/docs/features/rtsync.md",sourceDirName:"features",slug:"/features/rtsync",permalink:"/docs/features/rtsync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/features/rtsync.md",tags:[],version:"current",frontMatter:{title:"Route Synchronization"},sidebar:"tutorialSidebar",previous:{title:"Pre-shared Key Establishment",permalink:"/docs/features/pske"},next:{title:"Usage",permalink:"/docs/usage/"}},c={},u=[],d={toc:u};function p(t){let{components:e,...n}=t;return(0,s.kt)("wrapper",(0,r.Z)({},d,n,{components:e,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"route-synchronization"},"Route Synchronization"),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"\ud83d\udea7 This page is under construction")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c18e783d.e155bbde.js b/assets/js/c18e783d.e155bbde.js new file mode 100644 index 00000000..c6043256 --- /dev/null +++ b/assets/js/c18e783d.e155bbde.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6435],{1669:(e,n,t)=>{t.d(n,{Z:()=>a});var i=t(7294),s=t(814);function a(e){let n={...e};n.language||(n.language="yaml"),n.title="/etc/cunicu.yaml";let t='# An interval at which cun\u012bcu will periodically check for added,\n# removed or modified WireGuard interfaces.\nwatch_interval: 1s\n\n## Signaling backends\n#\n# These backends are used for exchanging control-plane messages\n# between the peers.\n# E.g. ICE candidates, Peer information\nbackends:\n- grpc://signal.cunicu.li:443\n# - grpc://localhost:8080?insecure=true&skip_verify=true\n# - k8s:///path/to/your/kubeconfig.yaml?namespace=default\n\n\n# RPC control socket settings\nrpc:\n # Path to a Unix socket for management\n # and monitoring of the cunicu daemon.\n socket: /var/run/cunicu.sock\n\n # Start of cun\u012bcu daemon will block until\n # its unblocked via the control socket.\n # Mostly useful for testing automation\n wait: false\n\n\n#### Interface settings start here\n# The following settings can be overwritten for each interface\n# using the \'interfaces\' settings (see below).\n# The following settings will be used as default.\n\n## WireGuard interface settings\n#\n# These settings configure WireGuard specific settings\n# of the interface.\n\n# A base64 private key generated by wg genkey.\n# Will be automatically generated if not provided.\nprivate_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=\n\n# Create WireGuard interfaces using bundled wireguard-go\n# user space implementation. This will be the default\n# if there is no WireGuard kernel module present.\nuserspace: false\n\n# A range constraint for an automatically assigned\n# selected listen port.\n# If the interface has no listen port specified, cun\u012bcu\n# will use the first available port from this range.\nlisten_port_range:\n min: 52820\n max: 65535\n\n# A 16-bit port for listening. Optional;\n# If not specified, first available port from listen_port_range\n# will be used.\nlisten_port: 51825\n\n# A 32-bit fwmark for outgoing packets which can be used\n# for Netfilter or TC classification.\n# If set to 0 or "off", this option is disabled.\n# May be specified in hexadecimal by prepending "0x". Optional.\nfwmark: 0x1000\n\n# The remote WireGuard peers provided as a dictionary\n# The keys of this dictionary are used as names for the peers\npeers: \n test:\n # A base64 public key calculated by wg pubkey from a private key,\n # and usually transmitted out of band\n # to the author of the configuration file.\n public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=\n\n # A base64 pre-shared key generated by wg genpsk.\n # Optional, and may be omitted.\n # This option adds an additional layer of symmetric-key\n # cryptography to be mixed into the already existing\n # public-key cryptography, for post-quantum resistance.\n preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=\n\n # A pre-shared passphrase which is used to derive a preshared key.\n # cun\u012bcu is using Argon2id as the key derivation function.\n preshared_key_passphrase: some-shared-passphrase\n\n # An endpoint IP or hostname, followed by a colon,\n # and then a port number. This endpoint will be updated\n # automatically to the most recent source IP address and\n # port of correctly authenticated packets from the peer.\n # If provided, no endpoint discovery will be performed.\n endpoint: vpn.example.com:51820\n\n # A time duration, between 1 and 65535s inclusive, of how\n # often to send an authenticated empty packet to the peer\n # for the purpose of keeping a stateful firewall or NAT mapping\n # valid persistently. For example, if the interface very rarely\n # sends traffic, but it might at anytime receive traffic from a\n # peer, and it is behind NAT, the interface might benefit from\n # having a persistent keepalive interval of 25 seconds.\n # If set to zero, this option is disabled.\n # By default or when unspecified, this option is off.\n # Most users will not need this. Optional.\n persistent_keepalive: 120s\n\n # A comma-separated list of IP (v4 or v6) addresses with\n # CIDR masks from which incoming traffic for this peer is\n # allowed and to which outgoing traffic for this peer is directed.\n # The catch-all 0.0.0.0/0 may be specified for matching\n # all IPv4 addresses, and ::/0 may be specified for matching\n # all IPv6 addresses. May be specified multiple times.\n allowed_ips:\n - 192.168.5.0/24\n\n## Basic interface settings\n#\n\n# The Maximum Transfer Unit of the WireGuard interface.\n# If not specified, the MTU is automatically determined from\n# the endpoint addresses or the system default route,\n# which is usually a sane choice.\n# However, to manually specify an MTU to override this\n# automatic discovery, this value may be specified explicitly.\nmtu: 1420\n\n# A list of IP (v4 or v6) addresses (optionally with CIDR masks)\n# to be assigned to the interface.\n# May be specified multiple times.\naddresses:\n- 10.10.0.1/24\n\n# A list of prefixes which cunicu uses to derive local addresses\n# from the interfaces public key\nprefixes:\n- fc2f:9a4d::/32\n- 10.237.0.0/16\n\n# A list of IP (v4 or v6) addresses to be set as the interface\'s\n# DNS servers, or non-IP hostnames to be set as the interface\'s\n# DNS search domains.\n# May be specified multiple times.\n# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`\n# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.\n# If these particular invocations of resolvconf(8) are undesirable,\n# custom hooks can be used instead.\ndns:\n- 1.1.1.1\n\n\n## Config synchronization\n#\n# Synchronize local WireGuard interface configuration with wg(8) config-files.\n\n# Enable config synchronization\nsync_config: false\n\n# Keep watching for changes in the configuration and apply them on-the-fly\nwatch_config: false\n\n## Route Synchronization\n#\n# Synchronize the kernel routing table with WireGuard\'s AllowedIPs setting\n# \n# It checks for routes in the kernel routing table which have a peers address\n# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.\n#\n# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a\n# kernel route with the peers address as the routes next-hop. \n\n# Enable route synchronization\nsync_routes: true\n\n# Kernel routing table which is used\n# On Linux, see /etc/iproute2/rt_tables for table ids and names\nrouting_table: 254\n\n# Keep watching the for changes in the kernel routing table via netlink multicast group.\nwatch_routes: true\n\n\n## /etc/hosts synchronization\n#\n# Synchronizes the local /etc/hosts file with host names and addresses of connected peers. \n\n# Enable hosts file synchronization\nsync_hosts: true\n\n# The domain name which is appended to each of the peer host names\ndomain: wg-local\n\n\n## Peer discovery\n#\n# Peer discovery finds new peers within the same community and adds them to the respective interface\n\n# Enable/disable peer discovery\ndiscover_peers: true\n\n# The hostname which gets advertised to remote peers\nhostname: my-node\n\n# A passphrase shared among all peers of the same community\ncommunity: "some-common-password"\n\n# Networks which are reachable via this peer and get advertised to remote peers\n# These will be part of this interfaces AllowedIPs at the remote peers.\nnetworks:\n- 192.168.1.0/24\n- 10.2.0.0/24\n\n# A list of WireGuard public keys which are accepted peers\n# If not configured, all peers will be accepted.\nwhitelist:\n- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=\n\n# A list if WireGuard public keys which are rejected as peers\nblacklist:\n- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=\n\n\n## Endpoint discovery\n#\n# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to\n# gather a list of candidate endpoints and performs connectivity checks to find a suitable\n# endpoint address which can be used by WireGuard\n\n# Enable/disable endpoint discovery\ndiscover_endpoints: true\n\n# Interactive Connectivity Establishment (ICE) parameters\nice:\n # A list of STUN and TURN servers used by ICE.\n urls:\n # Community provided STUN/TURN servers\n - grpc://relay.cunicu.li\n\n # Public STUN servers\n - stun:stun3.l.google.com:19302\n - stun:relay.webwormhole.io\n - stun:stun.sipgate.net\n - stun:stun.ekiga.net\n - stun:stun.services.mozilla.com\n\n # Caution: OpenRelay servers are located in Ontario, Canada.\n # Beware of the latency!\n # See also: https://www.metered.ca/tools/openrelay/\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443\n # - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp\n\n # Credentials for STUN/TURN servers configured above.\n username: ""\n password: ""\n\n # Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.\n insecure_skip_verify: false\n\n # Limit available network and candidate types.\n # network_types: [udp4, udp6, tcp4, tcp6]\n # candidate_types: [host, srflx, prflx, relay]\n\n # A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \\"eth[0-9]\\").\n interface_filter: "*"\n\n # Lite agents do not perform connectivity check and only provide host candidates.\n lite: false\n\n # Enable local Multicast DNS discovery.\n mdns: false\n\n # Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.\n # If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.\n max_binding_requests: 7\n\n # SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.\n # This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).\n # In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.\n # nat_1to1_ips:\n # - 10.10.2.3\n\n # Limit the port range used by ICE\n port_range:\n # Minimum port for allocation policy for ICE sockets (range: 0-65535)\n min: 49152\n\n # Maximum port for allocation policy for ICE sockets (range: 0-65535)\n max: 65535\n\n # Interval at which the agent performs candidate checks in the connecting phase\n check_interval: 200ms\n \n # Time until an Agent transitions disconnected.\n # If the duration is 0, the ICE Agent will never go to disconnected\n disconnected_timeout: 5s\n\n # Time until an Agent transitions to failed after disconnected\n # If the duration is 0, we will never go to failed.\n failed_timeout: 5s\n\n # Time to wait before ICE restart\n restart_timeout: 5s\n\n # Interval between STUN keepalives (should be less then connection timeout above).\n # Af the interval is 0, we never send keepalive packets\n keepalive_interval: 2s\n\n\n## Hook callbacks\n#\n# Hook callback can be used to invoke subprocesses\n# or web-hooks on certain events within cun\u012bcu.\nhooks:\n\n # An \'exec\' hook spawn a subprocess for each event.\n - type: exec\n command: ../../scripts/hook.sh\n \n # Prepend additional arguments\n args: []\n \n # Pass JSON object via Stdin to command\n stdin: true\n \n # Set environment variables for invocation\n env:\n COLOR: "1"\n \n # A \'web\' hook performs HTTP requests for each event.\n - type: web\n \n # URL of the webhook endpoint\n url: https://my-webhook-endpoint.com/api/v1/webhook\n \n # HTTP method of the request\n method: POST\n \n # Additional HTTP headers which are used for the requests\n headers:\n User-Agent: ahoi\n Authorization: Bearer XXXXXX\n\n\n## Interface specific settings / overwrites.\n#\n# Most of the top-level settings of this configuration file can be customized\n# for specific interfaces.\n# \n# The keys of the \'interfaces\' dictionary are glob(7) patterns which will be\n# matched against the interface names.\n# Settings are overlayed in the order in which the keys are provided in the\n# interface map.\n#\n# Keys which are not a glob(8) pattern, will be created as new interfaces if\n# they do not exist already in the system.\ninterfaces:\n # A simple interface specific setting\n # cunicu will set the private key of interface \'wg0\' to the provided value.\n wg0:\n discover_endpoints: false\n\n # No settings are overwritten. But since this is not a glob pattern,\n # A new interface named \'wg1\' will be created if it does not exist yet.\n # The same applies to the previous interface \'wg0\'\n wg1: {}\n\n # Create a new interface using the wireguard-go user-space implementation.\n wg2:\n userspace: true\n\n # This pattern configuration will be applied to all interfaces which match the pattern.\n # This rule will not create any new interfaces.\n wg-work-*:\n community: "mysecret-pass" \n \n ice:\n urls:\n - turn:mysecret.turn-server.com\n\n # Multiple patterns are supported and evaluated in the order they a defined in the configuration file.\n # \n wg-work-external-*:\n ice:\n network_types: [ udp6 ]\n';if(n.section){const e=t.split("\n");let i=[],s=[],a=!1;for(let t of e){let e=!1,r=!1,o=t.startsWith("#"),c=""===t.trim(),l=t.match(/^([a-zA-z]+):/);null!==l&&(e=l[1]==n.section,r=l[1]!=n.section),o&&(a=!1,i.push(t)),e&&(a=!0,s.push(...i),i=[]),r&&(a=!1),c&&(i=[]),a&&s.push(t)}""==s[s.length-1]&&(s=s.slice(0,-1)),t=s.join("\n"),n.title=`Section "${n.section}" of ${n.title}`}return i.createElement(s.Z,n,t)}},7746:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var i=t(7462),s=(t(7294),t(3905)),a=(t(1839),t(1669));const r={title:"Route Synchronization"},o="Route Synchronization",c={unversionedId:"features/rtsync",id:"features/rtsync",title:"Route Synchronization",description:"The route synchronization feature keeps the kernel routing table in sync with WireGuard's AllowedIPs setting.",source:"@site/docs/features/rtsync.md",sourceDirName:"features",slug:"/features/rtsync",permalink:"/docs/features/rtsync",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/features/rtsync.md",tags:[],version:"current",frontMatter:{title:"Route Synchronization"},sidebar:"tutorialSidebar",previous:{title:"Pre-shared Key Establishment",permalink:"/docs/features/pske"},next:{title:"Usage",permalink:"/docs/usage/"}},l={},d=[{value:"Configuration",id:"configuration",level:2}],h={toc:d};function u(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,i.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"route-synchronization"},"Route Synchronization"),(0,s.kt)("p",null,"The route synchronization feature keeps the kernel routing table in sync with WireGuard's ",(0,s.kt)("em",{parentName:"p"},"AllowedIPs")," setting."),(0,s.kt)("p",null,"This synchronization is bi-directional:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Networks with are found in a Peers AllowedIP list will be installed as a kernel route."),(0,s.kt)("li",{parentName:"ul"},"Kernel routes with the peers link-local IP address as next-hop will be added to the Peers ",(0,s.kt)("em",{parentName:"li"},"AllowedIPs")," list.")),(0,s.kt)("p",null,"This rather simple feature allows user to pair cunicu with a software routing daemon like ",(0,s.kt)("a",{parentName:"p",href:"https://bird.network.cz/"},"Bird2")," while using a single WireGuard interface with multiple peer-to-peer links."),(0,s.kt)("h2",{id:"configuration"},"Configuration"),(0,s.kt)(a.Z,{section:"rtsync",mdxType:"ExampleConfig"}))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c377a04b.209d2350.js b/assets/js/c377a04b.209d2350.js deleted file mode 100644 index a098b51c..00000000 --- a/assets/js/c377a04b.209d2350.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6971],{1269:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var n=a(7462),i=(a(7294),a(3905));a(1839);const r={title:"Welcome",sidebar_position:1,hide_title:!0},o=void 0,s={unversionedId:"index",id:"index",title:"Welcome",description:"GitHub Workflow Status",source:"@site/docs/index.md",sourceDirName:".",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Welcome",sidebar_position:1,hide_title:!0},sidebar:"tutorialSidebar",next:{title:"Installation",permalink:"/docs/installation"}},c={},l=[{value:"Getting started",id:"getting-started",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Authors",id:"authors",level:2},{value:"Join us",id:"join-us",level:2},{value:"Name",id:"name",level:2},{value:"License",id:"license",level:2},{value:"Funding acknowledgement",id:"funding-acknowledgement",level:2},{value:"Trademark",id:"trademark",level:2}],u={toc:l};function p(e){let{components:t,...a}=e;return(0,i.kt)("wrapper",(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",{align:"center"},(0,i.kt)("img",{style:{width:"60%"},src:"/img/cunicu_logo.svg",alt:"cun\u012bcu logo"}),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/actions"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/github/workflow/status/stv0g/cunicu/build?style=flat-square",alt:"GitHub Workflow Status"})),"\n",(0,i.kt)("a",{parentName:"p",href:"https://goreportcard.com/report/github.com/stv0g/cunicu"},(0,i.kt)("img",{parentName:"a",src:"https://goreportcard.com/badge/github.com/stv0g/cunicu?style=flat-square",alt:"goreportcard"})),"\n",(0,i.kt)("a",{parentName:"p",href:"https://app.codacy.com/gh/stv0g/cunicu/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/codacy/grade/4c4ecfff2f0d43948ded3d90f0bcf0cf?style=flat-square",alt:"Codacy grade"})),"\n",(0,i.kt)("a",{parentName:"p",href:"https://app.codecov.io/gh/stv0g/cunicu"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/codecov/c/github/stv0g/cunicu?token=WWQ6SR16LA&style=flat-square",alt:"Codecov"})),"\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/LICENSE"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/github/license/stv0g/cunicu?style=flat-square",alt:"License"})),"\n",(0,i.kt)("img",{parentName:"p",src:"https://img.shields.io/github/go-mod/go-version/stv0g/cunicu?style=flat-square",alt:"GitHub go.mod Go version"}),"\n",(0,i.kt)("a",{parentName:"p",href:"https://pkg.go.dev/github.com/stv0g/cunicu"},(0,i.kt)("img",{parentName:"a",src:"https://pkg.go.dev/badge/github.com/stv0g/cunicu.svg",alt:"Go Reference"})))),(0,i.kt)("admonition",{type:"danger"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"\ud83d\udea7 cun\u012bcu is currently still in an Alpha state and not usable yet"))),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu"},"cun\u012bcu")," is a user-space daemon managing ",(0,i.kt)("a",{parentName:"p",href:"https://wireguard.com"},"WireGuard\xae")," interfaces to establish peer-to-peer connections in harsh network environments."),(0,i.kt)("p",null,"It relies on the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/pion/awesome-pion"},"awesome")," ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/pion/ice"},"pion/ice")," package for the interactive connectivity establishment as well as bundles the Go user-space implementation of WireGuard in a single binary for environments in which WireGuard kernel support has not landed yet."),(0,i.kt)("h2",{id:"getting-started"},"Getting started"),(0,i.kt)("p",null,"To use cun\u012bcu follow these steps on each host:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/docs/installation"},"Install cun\u012bcu")),(0,i.kt)("li",{parentName:"ol"},"Configure your WireGuard interfaces using ",(0,i.kt)("inlineCode",{parentName:"li"},"wg"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"wg-quick")," or ",(0,i.kt)("a",{parentName:"li",href:"https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/"},"NetworkManager")),(0,i.kt)("li",{parentName:"ol"},"Start the cun\u012bcu daemon by running: ",(0,i.kt)("inlineCode",{parentName:"li"},"sudo cunicu daemon"))),(0,i.kt)("p",null,"Make sure that in step 2. you have created WireGuard keys and exchanged them by hand between the hosts.\ncun\u012bcu does not (yet) discover available peers. You are responsible to add the peers to the WireGuard interface by yourself."),(0,i.kt)("p",null,"After the cun\u012bcu daemons have been started, they will attempt to discover valid endpoint addresses using the ICE protocol (e.g. contacting STUN servers).\nThese ",(0,i.kt)("em",{parentName:"p"},"ICE candidates")," are then exchanged via the signaling server and cun\u012bcu will update the endpoint addresses of the WireGuard peers accordingly.\nOnce this has been done, the cun\u012bcu logs should show a line ",(0,i.kt)("inlineCode",{parentName:"p"},"state=connected"),"."),(0,i.kt)("h2",{id:"documentation"},"Documentation"),(0,i.kt)("p",null,"Documentation of cun\u012bcu can be found in the ",(0,i.kt)("a",{parentName:"p",href:"./docs"},(0,i.kt)("inlineCode",{parentName:"a"},"docs/"))," directory."),(0,i.kt)("h2",{id:"authors"},"Authors"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Steffen Vogel (",(0,i.kt)("a",{parentName:"li",href:"https://github.com/stv0g"},"@stv0g"),", Institute for Automation of Complex Power Systems, RWTH Aachen University)")),(0,i.kt)("h2",{id:"join-us"},"Join us"),(0,i.kt)("p",null,"Please feel free to ",(0,i.kt)("a",{parentName:"p",href:"https://join.slack.com/t/gophers/shared_invite/zt-1447h1rgj-s9W5BcyRzBxUwNAZJUKmaQ"},"join our Slack channel")," ",(0,i.kt)("inlineCode",{parentName:"p"},"#cunicu")," in the ",(0,i.kt)("a",{parentName:"p",href:"https://gophers.slack.com/"},"Gophers workspace")," and say \ud83d\udc4b."),(0,i.kt)("h2",{id:"name"},"Name"),(0,i.kt)("p",null,"The project name ",(0,i.kt)("em",{parentName:"p"},"cun\u012bcu")," ","[k\u028a\u02c8ni\u02d0k\u028a]"," is derived from the ",(0,i.kt)("a",{parentName:"p",href:"https://en.wiktionary.org/wiki/cuniculus#Latin"},"latin noun cun\u012bculus")," which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as ",(0,i.kt)("em",{parentName:"p"},"cun\u012bcu")," builds tunnels between otherwise hard to reach network locations.\nIt has been changed from the former name ",(0,i.kt)("em",{parentName:"p"},"wice")," in order to broaden the scope of the project and avoid any potential trademark violations. "),(0,i.kt)("h2",{id:"license"},"License"),(0,i.kt)("p",null,"cun\u012bcu is licensed under the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/LICENSE"},"Apache 2.0")," license."),(0,i.kt)("p",null,"Copyright 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University"),(0,i.kt)("h2",{id:"funding-acknowledgement"},"Funding acknowledgement"),(0,i.kt)("img",{alt:"European Flag",style:{height:"4em",marginRight:"10px"},src:"/img/flag_of_europe.svg",align:"left"}),(0,i.kt)("p",null,"The development of cun\u012bcu has been supported by the ",(0,i.kt)("a",{parentName:"p",href:"https://erigrid2.eu"},"ERIGrid 2.0")," project of the H2020 Programme under ",(0,i.kt)("a",{parentName:"p",href:"https://cordis.europa.eu/project/id/870620"},"Grant Agreement No. 870620")),(0,i.kt)("h2",{id:"trademark"},"Trademark"),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"WireGuard")," and the ",(0,i.kt)("em",{parentName:"p"},"WireGuard")," logo are ",(0,i.kt)("a",{parentName:"p",href:"https://www.wireguard.com/trademark-policy/"},"registered trademarks")," of Jason A. Donenfeld."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c377a04b.4b0f441d.js b/assets/js/c377a04b.4b0f441d.js new file mode 100644 index 00000000..3c09f98f --- /dev/null +++ b/assets/js/c377a04b.4b0f441d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6971],{1269:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(7462),r=(a(7294),a(3905));a(1839);const i={title:"Welcome",sidebar_position:1,hide_title:!0},s=void 0,o={unversionedId:"index",id:"index",title:"Welcome",description:"GitHub Workflow Status",source:"@site/docs/index.md",sourceDirName:".",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Welcome",sidebar_position:1,hide_title:!0},sidebar:"tutorialSidebar",next:{title:"Installation",permalink:"/docs/install"}},c={},u=[{value:"Getting started",id:"getting-started",level:2},{value:"Authors",id:"authors",level:2},{value:"Join us",id:"join-us",level:2},{value:"Name",id:"name",level:2},{value:"License",id:"license",level:2},{value:"Funding acknowledgement",id:"funding-acknowledgement",level:2},{value:"Trademark",id:"trademark",level:2}],l={toc:u};function d(e){let{components:t,...i}=e;return(0,r.kt)("wrapper",(0,n.Z)({},l,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",{align:"center"},(0,r.kt)("img",{style:{width:"60%"},src:"/img/cunicu_logo.svg",alt:"cun\u012bcu logo"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/actions"},(0,r.kt)("img",{parentName:"a",src:"https://img.shields.io/github/workflow/status/stv0g/cunicu/build?style=flat-square",alt:"GitHub Workflow Status"})),"\n",(0,r.kt)("a",{parentName:"p",href:"https://goreportcard.com/report/github.com/stv0g/cunicu"},(0,r.kt)("img",{parentName:"a",src:"https://goreportcard.com/badge/github.com/stv0g/cunicu?style=flat-square",alt:"goreportcard"})),"\n",(0,r.kt)("a",{parentName:"p",href:"https://app.codacy.com/gh/stv0g/cunicu/"},(0,r.kt)("img",{parentName:"a",src:"https://img.shields.io/codacy/grade/4c4ecfff2f0d43948ded3d90f0bcf0cf?style=flat-square",alt:"Codacy grade"})),"\n",(0,r.kt)("a",{parentName:"p",href:"https://app.codecov.io/gh/stv0g/cunicu"},(0,r.kt)("img",{parentName:"a",src:"https://img.shields.io/codecov/c/github/stv0g/cunicu?token=WWQ6SR16LA&style=flat-square",alt:"Codecov"})),"\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/LICENSE"},(0,r.kt)("img",{parentName:"a",src:"https://img.shields.io/github/license/stv0g/cunicu?style=flat-square",alt:"License"})),"\n",(0,r.kt)("img",{parentName:"p",src:"https://img.shields.io/github/go-mod/go-version/stv0g/cunicu?style=flat-square",alt:"GitHub go.mod Go version"}),"\n",(0,r.kt)("a",{parentName:"p",href:"https://pkg.go.dev/github.com/stv0g/cunicu"},(0,r.kt)("img",{parentName:"a",src:"https://pkg.go.dev/badge/github.com/stv0g/cunicu.svg",alt:"Go Reference"})))),(0,r.kt)("admonition",{title:"cun\u012bcu is currently still in an Alpha state and not usable yet \ud83d\udea7",type:"caution"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu"},"cun\u012bcu")," is a user-space daemon managing ",(0,r.kt)("a",{parentName:"p",href:"https://wireguard.com"},"WireGuard\xae")," interfaces to establish a mesh of peer-to-peer VPN connections in harsh network environments."),(0,r.kt)("p",null,"To achieve this, cun\u012bcu utilizes a signaling layer to exchange peer information such as public encryption keys, hostname, advertised networks and reachability information to automate the configuration of the networking links.\nFrom a user perspective, cun\u012bcu alleviates the need of manual configuration such as exchange of public keys, IP addresses, endpoints, etc..\nHence, it adopts the design goals of the WireGuard project, to be simple and easy to use."),(0,r.kt)("p",null,"Thanks to ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment"},"Interactive Connectivity Establishment (ICE)"),", cun\u012bcu is capable to establish direct connections between peers which are located behind NAT firewalls such as home routers.\nIn situations where ICE fails, or direct UDP connectivity is not available, cun\u012bcu falls back to using TURN relays to reroute traffic over an intermediate hop or encapsulate the WireGuard traffic via TURN-TCP."),(0,r.kt)("p",null,"It relies on the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/pion/awesome-pion"},"awesome")," ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/pion/ice"},"pion/ice")," package for ICE as well as bundles the a Go user-space implementation of WireGuard in a single binary for systems in which WireGuard kernel support has not landed yet."),(0,r.kt)("p",null,"With these features, cun\u012bcu can be used to quickly build multi-agent systems or connect field devices such as power grid monitoring infrastructure into a fully connected mesh.\nWithin the ",(0,r.kt)("a",{parentName:"p",href:"https://erigrid2.eu"},"ERIGrid 2.0 project"),", cun\u012bcu is used to interconnect smart grid laboratories for geographically distributed simulation of energy systems."),(0,r.kt)("p",null,"The project is currently actively developed by Steffen Vogel at the ",(0,r.kt)("a",{parentName:"p",href:"https://www.acs.eonerc.rwth-aachen.de"},"Institute for Automation of Complex Power Systems (ACS)")," of ",(0,r.kt)("a",{parentName:"p",href:"https://www.rwth-aachen.de"},"RWTH Aachen University")),(0,r.kt)("h2",{id:"getting-started"},"Getting started"),(0,r.kt)("p",null,"To use cun\u012bcu follow these steps on each host:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/install"},"Install cun\u012bcu")),(0,r.kt)("li",{parentName:"ol"},"Configure your WireGuard interfaces using ",(0,r.kt)("inlineCode",{parentName:"li"},"wg"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"wg-quick")," or ",(0,r.kt)("a",{parentName:"li",href:"https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/"},"NetworkManager")),(0,r.kt)("li",{parentName:"ol"},"Start the cun\u012bcu daemon by running: ",(0,r.kt)("inlineCode",{parentName:"li"},"sudo cunicu daemon"))),(0,r.kt)("p",null,"Make sure that in step 2. you have created WireGuard keys and exchanged them by hand between the hosts.\ncun\u012bcu does not (yet) discover available peers. You are responsible to add the peers to the WireGuard interface by yourself."),(0,r.kt)("p",null,"After the cun\u012bcu daemons have been started, they will attempt to discover valid endpoint addresses using the ICE protocol (e.g. contacting STUN servers).\nThese ",(0,r.kt)("em",{parentName:"p"},"ICE candidates")," are then exchanged via the signaling server and cun\u012bcu will update the endpoint addresses of the WireGuard peers accordingly.\nOnce this has been done, the cun\u012bcu logs should show a line ",(0,r.kt)("inlineCode",{parentName:"p"},"state=connected"),"."),(0,r.kt)("h2",{id:"authors"},"Authors"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Steffen Vogel (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/stv0g"},"@stv0g"),", Institute for Automation of Complex Power Systems, RWTH Aachen University)")),(0,r.kt)("h2",{id:"join-us"},"Join us"),(0,r.kt)("p",null,"Please feel free to ",(0,r.kt)("a",{parentName:"p",href:"https://join.slack.com/t/gophers/shared_invite/zt-1447h1rgj-s9W5BcyRzBxUwNAZJUKmaQ"},"join our Slack channel")," ",(0,r.kt)("inlineCode",{parentName:"p"},"#cunicu")," in the ",(0,r.kt)("a",{parentName:"p",href:"https://gophers.slack.com/"},"Gophers workspace")," and say \ud83d\udc4b."),(0,r.kt)("h2",{id:"name"},"Name"),(0,r.kt)("p",null,"The project name ",(0,r.kt)("em",{parentName:"p"},"cun\u012bcu")," ","[k\u028a\u02c8ni\u02d0k\u028a]"," is derived from the ",(0,r.kt)("a",{parentName:"p",href:"https://en.wiktionary.org/wiki/cuniculus#Latin"},"latin noun cun\u012bculus")," which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as ",(0,r.kt)("em",{parentName:"p"},"cun\u012bcu")," builds tunnels between otherwise hard to reach network locations.\nIt has been changed from the former name ",(0,r.kt)("em",{parentName:"p"},"wice")," in order to broaden the scope of the project and avoid any potential trademark violations. "),(0,r.kt)("h2",{id:"license"},"License"),(0,r.kt)("p",null,"cun\u012bcu is licensed under the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/stv0g/cunicu/blob/master/LICENSE"},"Apache 2.0")," license."),(0,r.kt)("p",null,"Copyright 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University"),(0,r.kt)("h2",{id:"funding-acknowledgement"},"Funding acknowledgement"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"EONERC Logo",src:a(2413).Z,width:"364",height:"50"})),(0,r.kt)("p",null,"The project is currently actively developed by Steffen Vogel at the ",(0,r.kt)("a",{parentName:"p",href:"https://www.acs.eonerc.rwth-aachen.de"},"Institute for Automation of Complex Power Systems (ACS)")," of ",(0,r.kt)("a",{parentName:"p",href:"https://www.rwth-aachen.de"},"RWTH Aachen University")),(0,r.kt)("img",{alt:"European Flag",style:{height:"4em",marginRight:"10px"},src:"/img/flag_of_europe.svg",align:"left"})," The development of cun\u012bcu has been supported by the ",(0,r.kt)("a",{href:"https://erigrid2.eu"},"ERIGrid 2.0")," project of the H2020 Programme under ",(0,r.kt)("a",{href:"https://cordis.europa.eu/project/id/870620"},"Grant Agreement No. 870620"),(0,r.kt)("h2",{id:"trademark"},"Trademark"),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"WireGuard")," and the ",(0,r.kt)("em",{parentName:"p"},"WireGuard")," logo are ",(0,r.kt)("a",{parentName:"p",href:"https://www.wireguard.com/trademark-policy/"},"registered trademarks")," of Jason A. Donenfeld."))}d.isMDXComponent=!0},2413:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWwAAAAyCAYAAAB4bOGKAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAwRAAAMEQG/jHeaAAAAB3RJTUUH3gYZDRonW07mqQAAIABJREFUeNrtnXl8FPX9/5/v2QS5xAvl8jbLpeKRBUTIJhEtZDZY2ir99vet+q1a8RYFj1ZtqdWqHIJiW9Fqaw9tpVpbsrOghCQbFA0bFSiITPBCAwEvVK4kO5/fH7Mbdiezm4QrAfb1eMwj2c98rvnMzGven/fn/X5/xPT7HqN9sMQbjrzgTDT9vgnAqHboT1dvOHK1M3FdXu5RlshDwM793B9NhH/kVEQqOfjxE+C7wPg9qOMc4OdAtA1lGoF1wGrg5YR7PAa4ElApyr0BzHak3Qycn6atV4BnHGnXAgXtNOaHxcb9K0f6qNi1WCnKPQf8x5kYDAb7icgcoN5x6jNd129sqTPBYHCciPyvy6mQruvPpitrGEZP4AYgAPQBesWua6OILLYs67eBQMB0lPmX453+SNf1O13qngL4EpI667o+3jCMp4FubRjvLOAXgO6oD6BB1/XLXMZklIgk3otoFnBTOz0wWcALLukFwHXt1KdmhI1S3RG5pp36sxo4FAh7b6APcMke1jEN+BlQASxIk++HLoR9fiw9Fb7nQtjDWyizr3G9C2GfDFyapszbTsIerxQSCn0vdo3NMG/evFsvvfTShnQdEZEbYh9KJ04Hnk1D9BOBJ1xOHQscq5Q6U0RuMQzjYV3X70rstiP/cuBOl3rygItd0n8AHNHG8X48VX2GYcyo6jJo+dTCUxLHxHkvolrmPc8ggybcAXwE7AD+2ULeSW2suxPww7PuWHDQDdrLIsSkW1d069ateEZZbUvVjEmRfsbnn38uKSTry0TkiVZ2807DMH7WUcdQRCYmknXKaXfmHc0ggyQcD2yITV/T4ee7UffPl08be7COW7oLK55S2DedOuScdBVXVVUFHl6y2UnW2cCfXbL/E3gYqHY595tYufZCSr5VSl3dWrVER8NnwAft0G4P9yHWGoE6YNt+v7mKLRn+bBf0BvzAu8CgFHmOBUb3uqmstG5OYWvrHQL0P3JS2dqvZhceNINlGMbZjqRaoG+C9Dgu7YOuacVKqURps1Yp1TeBzAJ3jjq2xFHMTS9+k67rjyf06x/ABEee64B9sW63BVst1jWVEK2UWikit6Q4n20YxgXvdjtr8eT8fgcGYa8ZeQ7ecOQXrZBu9glMv0+84UjSQtNp4ciG2AucwYGNLcAXCc/9CS3k/z22TvzFNHnurptTWNrGftz91ezCK9Kc3wB86RTAsHW5qVAPrHVIcApbH91tP4xtseP3n7BVRl1jhHtsKBTqWVRU9FkK6TKpvGVZD4jIbxOSxtF8XetyZz2JZD03olB1xr0i4iTswn1E2I26rq9uxcct3emJk/P7LT5gVCIDX3u7Xdt3knUGBxUeB06NHScC0gIZCxAB0i2WFWJbJLQFl8fqToVfxMg58TijhTo/AM50KbO/FqyTCFdEqlzavvj2lz9NVX5Y4o9AIPA7x/l+hmE4F/icUv3KJObzCYFAYK1LW8d34Gd0wm7rVDLI4CBD0myy15SFxCTodKthI4DpLdS7O7rs29Kc67Qb9aV6jz37aWyHOyTkpUDYKUVPH5881Z8bUQSDwQtcZhjEPpaJGDdz0ea4lOr2kXwnRd+2O3736mDPZa1DAr/0rpLaDGFnkEEi6mY0GSWUpMm2DXiwhapu3o3m7+kgw3Actjlk4nFkawtPLVMEg0GnMr4hEAhschK2i9qEiT5BRJzpYcffpvKTLzw2/n8zczoRWbOjrNBN3fJ/2Db1VwJXKqXuauMY7etZd6WIJE49rnmouG/rpI72xvLvDOGsV1a0W/s1BUPJKV+WYbNDCyemOfcx8C22U006p54r29jmkW4Etp+h0kilrSPsQiEUCiUtGGLbsKPr+hKHvjbbMIwBuq6/55ScnYT9h9r34Z01YcdMZFwCCfcQaaZV2t65sKxZHwOBwAutvJyTDMP4m2NWYtHcySUVPMFg0EvqRccdgUDgPZf07kqpucB9sd8XlpaWZo0ePbqxwxP2Wa+swMz3XYXionZovmtO+bJmBu01I88+RmVl/QHVLp6OT+VURF7NcOreRe9JZWy0rTTOI7U52lZgeSzvAy0Q9t1AWRu78Stsj8n2gux+MZWk6kghIYNt036SQ8puIq1gMHgYkOOUOK/ueyrBYDDsIOWuoVDo5KKiog9FpJmEbVnWjj0cjyOB/7cn5UVkbZrz61yuFUDTNG2uZVlxwmbnzp1X4+4M1AHN+hS5tK/3l2OqpXVVao9cpvcE5UCGsPcuijfOLjwxRtaXpck3G4gTewR7YS+VZ8OpwCcu6Y1p3rFzgU8PtMGTTl1R9VsB+Pe//50N9HeoJsIOaftyB2HPBJi9qA6pr25m7qfr+sqYZPylYRhbSbByUUqNA+akUIls7+BDl1LgGzt27CbDMEzAG1eLpCLsjA47g0MNRwO/bYGsa2muZ36ghXrd4oiEWyhzwHnRaJ0PB2BGWS1ZWVnN1DorV64MA0yv2AjNLUUK4v9MurAXNPeOXO74XeHUcMTIObsthHhAfAhF5ib8PGf+/PnHZAg7gwxs77iWAkQFek9qxrVPt1DGTZJe0kKZ7ANt8LTOtn/ZlMK+bguGn9xxxx0K4Pb83q4frJKSkvMSfl6c7gPnkNYh5r5uWdbXzSbmSu2pvXktcAswJeG4FVjVyvL1wHwglOJIa2JpWdaTSQ9TVtZEXBY8O55KRKhHsbUdWna/4ZrEB20/90l5QBoy/LpPMBM7bkgqfHfjbP87KdQkbYkh0gWYC0zsoONwGbucieK4AJic8vWMSdgpCPcVh3pjrdNRRNO0YuCN+fPn94rNdhKRlDkajZZomvZQYlowGDxHRJp5AGua1t2Z9uuXl3Pv+LNaOxabdV1v5lBjGEYh6Z2W4vha1/WLd/dGBAKBbwzDqCJmk66UuhaXwHwdirDfLTgPb/kbk2h7YJ29AjM/V7wV1Q5Px+pP2O0Fmgw6HhQgD7ZA2JOxFwV34dIXYN6EB9r4bHqA33Rgwi5ll91zHEenlbAPsyXsUCjUUynV03H6SsMwWrKYKQbu8Xg8bu7qoRY8ARGRYqXUS04rEaVUd3vCskvGuXf8WRiGUYEdZiDxQ7Iv3uc9qrOuTPHWjgVPKqXiTkQnYK9zdFyVyKDyN9q1fSdZZ3AwQsAOKRpKk+lwoLjPLxfuSpk3Aew4N21dBP4YOGhsRaVzD2Iei7srTZ6VQNy7g2IR2eSS3j2FU2q3A2FcexUKmzdv/qMj+foOTdgZZLA/0PvWJdDyIuLdG36VHPHz2JsqWlPODQ8eLGPn6dyd6eP7uZnztRoLFiwYRXP769ZimK7rm13Sh6TI71y8+6Kjju3ll19uAQlSAj0zhJ3BIY+Ns0YBvIa7KV4c5wEnHn/r600Jm+fkg225sKGNTf6L5i7SByS6dtJIIyFb2Don55GcybIeSME9LZYFCAaDw1zuQarwhyc7ftd21LGdWbYREXkqXZ4OpcOO5Obiq65ut/bfLTiv3dUyGexXPIAdlS+llP3JrPMnpij3eBvbmgb88kAfsMOzovzJMPrT3MJllq7rrjFSDMNocHCN3yXb+bquL3UpeyK2A04TROQSIEjyDlGdg8FgzpquuTWTC3vHy/6PSzsL99HQWHtaQazfL6bT43cowvZVV7PW75sg7bOnYxdv+Rs/zXDYIYUnWiDsa3BfMPztoUrYR3WqJ4U647VHXl/Pbee7Rq0tg/Teyx6P5023dF3XP3YhsPHYJn5XO4h80eAdb19hGMYKpVQe8LyzoIj8YR8NzbGGYbS0BvZXbGeqlvAPUjgPdjizPmnfPR0zhH3o4XHcg+HHcT3wO5f03+GyKJQG24B/Y282fMCih2zdicuCo1KqPAVZg61GSkfYn4wZMyadhNpk7haDV9f1DwzDKHGoZk5SSpXHiNmtntKioqI17Th8LZrpzqz4FLYufyoVYWd02BkcurgmEldvpEOz8Kk5NxkA97elqV63VoJt4ndAo3OWRGmuL94WCAQ+T1OsooVqy9MKcSLNnE5CodAPlFLfp/W7U22yLOuieIjWjorJ+f3Qdb00lSSeIewMDhbEJbT6FEdz78YnfQAbsU31UpXrhx0Xuwk1c3SwF71K05RLarNuVl5cUqxJk7+R9F6Y6dpKJdGly69SjKOVokyD1+vNc+lLWlNHXdeXpOl/FFg8rbTOtezUMoVSqizW16ZylmWNDQQCDbqunwo8RGrHtijwqK7rvdZ286mEEK3O/qSSfhtTjHP9bhyNLvWlaneuS/mdYvp97WV7/Iw3HLnKmWj6fU/T9nCVewXecCTjINM++ElMVbBPg2z1vGMJn01LXh7pdUsldY/mtbmu426uYNNj+S3m6zu5jNqZtkB63KRyNs0uaHNbvSe+ysa5LQawTAqj1+uWCuoezd9vN3BG2SamFB7nes4wDNF1fa/zzCOldXxdeRxTp9qv7YIFCwY2Njae4PF4+iqlPgfW67q+PE78UwslLp1LUVFRs/7MLN/E5IJd1zBz8SYmX9D8mp5c8AXXjD16711HeR23FezaV2Hu/Fomjuvb8d7SdaOGpf29v2H6fRnCbj/CfvlQHwTDMFyfv1AolJQ+s2xjm+sOBoOteradbe3N6+gImJawC2AwGBxsGMalwWBwfDAYPGP+/PmHtUefHjPMVufNEFQGh4yEfYCQ9iaSHSY26LrezyXfn4EfJ77LmqZ1sSwrSHMd85e6rh/jQs53K6V+7WzLMIztQCJ5rcD2Dk00xxMRuaCoqKgsxXU47ai3xKb5d7RVAG1oaPhZdnZ2Pel3f7Gw9dnvAmFd12dMf+Nrbj+vh/PDdZGIzAEGpKjnXeA2XdcXKKUQEQzDuA07/ky8fVFKFYtICXu+I80cXdeTdlJ/9NVavA3v5GPr9lWC+mplRoedQQYdC1pMkIofWivzEY1GxZEWP442DGPYY0byuqBSSlK05ay7M7DY2Z5S6rwUZJ2TIBDGjzLsYFjS1iMrKwuX+pyHB3uDgHHAdMMwtg3+vLL/76u+SezXfSLyShqyBhiEHdNkZoKliTjaR3adlD08mlmm3XJRX4AbHPVrwKwMYWeQwaGBa27Wj9ntj4hSarFL+nBnwqyyL8GxSBvDYvZvONkuIvLf64YdzqP/2o5hGEXAvW0of9uCBQvGPv7EPl/i62IYxnkPL2lmvXKpcwah6/qzGcLOIINDA3u0kB8IBJa0hrBvLTwKXDZzSEH48al+S4cbTGBGTFXxHOBmZpJtGMbtt3yvC7jv4HK/UupUy7JOBB5tpmOxrAdvvNZda5ywj2ViP6006pp013LVnaNs65W5pasJhUL/65JnBnTEeNgZZJDBvoAYhqGv7jLMmFLYc3frWI8d9jOO3inyjXAh/NUpXK6P0XX9y3SNxvZ+dGKFruu3O1QxfwWcZDe8pKTkCJpvtjxP1/V74+QrIpMMwxhJ8qa7Z6ccTJFv3cK0ung7Vum6PryFPFfEVSMTRw/GMIzrXNr7jVIqY4edQQaHklpkD8gabLtzJ5kOdcnn3DXgzTR1dt8bFza1TKHr+o9dTp0jIgNd0hdNX7gxToY8VfYuwDxnplAo1CsVZ7eyax6XtMddZgL5M8pqMQyjOzDScb6kqKhoi4hkCDuDDA4h7JFbvIiUuaQNv/75XXsJl5SUuO0MvnhfX1jcxprmUfyOUkr1cOl35x6dv2r6/dPCQYhIOXacmDmx44loNNq4N/s5N6KwLMvNS/bKKYV9wT0sx/1xD82MSiSDDA5uVAD5CRLxZRs75/zlqtED2lxRNBot1bRmMt7w3/2o3+MAjyxYj2atbIv+el/gSMfvD3FE+4v16YaJ+QMfm714M5MusPXHRUVFVdjeqE41x17r3ETb1aPOMIwyks0vL4+pRpzxaT7Udb1phpKRsDPI4ODGSmBtgmQ5cXfIGqC4uPhTmrtSN3m73Tb2BHBZcBSRdISd3gzjprWt6tvMik2EQqGe2KaDiXjjiy++WOdSpL9hGFXe7VUnAswq27TfbsgjpRsQkftdPgw30Dx+d6KdfEbCziCDgxzdsB1WZsZ+j5w/f37XcePGbdvN+hYBRYnE5zg/wkVCTBeJ7+eGYXyd4lxnXe8/ibHBFol+8Lbq7kqpZjp2j8dz/+WXXx4NhUJvuNiNDxWRjwzDeJXtkftoeZf7vYLbRvcBWGwYRh2QqCN36raVruvPZAg7gwwOHYhS6kkRmZlAYtdg7wC/OyhzEDbBYHBgIBCIhy11btXVkjqkpVDKqTY9HhULr+oBTlBKue1sfu2YMWNqZ1Zswvp22SUikmqHoYuAiwzDWA/co+v6n39bto4bCk/b1/fmfmxdeUph3JmQUYlkkMFBjkAg8C2QuJXTtbvN/i7qDU3Thj/06heEQqH+bvlnL6rbF5fVGwgAYwEnWb8AjNB1fS7A5PzjCAQCn2Jv+5YuJvUJwLOGYXx88rY1I/f1fdF1Pe0mGJZlPTB1qmqZsNcVJAdhUjcWpp6LAKY/t1kdH406c9f5vKGuHTL9vszbtJdg5p2T/Hvk0MygZJCIJxP+HxAMBvvtTiVFRUXN9vBTSg2766KjUUqNcCGd0kkX9trf15oPXB4KhbrMLNv1sdhgnfumiBwF/L2F8ieIyBLDML63H/qaasejUHFx8ZfxSIRNKhHT7ysDEs1e3jmtvCop7GnNf7/xmX7fNOAk4C8Sjkx9f/RwovXR0xCe9oYjBU1EkZ87GCXFJ4Uj0+Jp3splmH7fU9iG6PGPhPKGI+3O2GZ+ro6Se7GD3XwFGN5wZEZHeMNq8nx+JdzoDUcmpMu36rwhgvJ0M/2+32Nvr7ZSk8ZrzKGFG73LytrU5upRQ2TwkhXKzPOJtzKiMjx3cMDj8TwTjUbnJkjF1yqldndj4LeBRAkh7hjiJOydgUBgYwsS+7VKqc9SnE7nyv4Rtl24FuOvQuCo2LlewHVKqYsnF/Y6Pl7gquLezCir3TqlsO+PFi5ceEU0Gr0DmAIckaKNl0pKSvrtq3tiR+kz70+hFrp/xqINTLmwTzJhA8O84Ui3xMQNeWfSp3Ilbw0dwOFdDx+FxXMa6uzTwtVfmH7fo6bf98KppW9OMPN83YF80++73RuOTLdpWHoAbobqhUppo/pXVjXdwPdGDZEBS1akJYWyggIKy8v35bPcD1joDUemvusfemQW1n/MvNwtq0b7nxo/dVbajYEVydbz8d/O9N2GKA9I2pcqkpvL4V2k884o34D6QbbFNQ2almspz8PeZWVXxPO0dnPjwUtWKNPvq/OGI72c7bTnBskZ7BnGjBnTaBjGIuDCmFR8LQ4LhDZgsYOw41NspxphUUsVKaUMXdfX70Yflum6niRYxq5vdOK7bRjG8ESzuJitM2PGjKnH1iHfHwwGLxCRvwB9XdQ9U4FV++Ke3Kx7AWoNw1gHJCrMLV3XX3crk+Wi4aBP5UoAzl32Hqbf97wSChR8AeANR24x/b6dNfm+3spe+30RuPejPN/jqJ3b69PxT7aVZIQ+YMkKZfpzL/KGq19d68/NF2SgNMpfso7O3vbNl99KF63rYcraer3p93X1KJlT3zn76+yd27taeM5R4vlQlDUuu6Hxya+P76661G2/AjgOeBHFsQgNwCnecGRegmrmXDzWBm95tdO4vos9GNZXIE8ijBg/dRYAR3STK02/7zQR/pJTEVkTq2cwYv2wBvmYcORps3AY3rIqavy+i02lzq8RWUg4Umb6h+INL8PMz/0uSs5EWOOtiPzTrsNXuCM7a0mXhsbxlvBR/3CkyszLPRWRSxA+8FY09VuUqqQmf9LVoHX1hpc99kFBAafEPmK+6mpMv28mMMUbrn4JoCZ/6JKcisgS0z9UvOFl6oiuXGv6ff2U8HT/isiH7594mERPHpLvDS8rX5vnu0SETmvW9nt+yNkfeuq3ZY8GqPHnjkJkR05FJGIWDPZgaTeY/tyjNc3ze+lZVdfw5bDDtEZrqBa1VkVFG9+/MvLHDC12XPw8WIumrXjKsqwLY0k9gTbv3DC1TCE7FixWSk1OTI+5f5/hlLf24SUlyUTTyjZhba26SdO01Y58AVw8LaduXs3UYwfb0wXPuYvvGdunn2EYS7H13IkYFZtR7Es4rWhSOutogPbeqHNPXpuXe/ravHNPN/OHObdSOL5/RWRdTkWSdDWP+M7mQjaKH9YLfz9pycr0nYoywG4n9/S1ebmxqYq8YPp9fxOkGOiistQ3J5e8Tjfp1FVJ40aw3kHUq1FR69n2bScLbTDwnKjoH0DlWFpDVpe67VuAw7EDwhgIt6HxBXCx6R9a9F5Bbpz6/tVYv9Vt77l6W9+mcoBfEQumb/p9H4FEBXlOKeav9ft8a/N9OYiqAO01hE6m33eft6wK0+973h4TeRa41fT7rvOGl2H6fc8qJWco1BoUt5l5vuti4za7S2PjQiUMEehn+nMvQqRC4EOUOs/0D/117GM6sCb/1rcFyQJrZI3fN+eU5jMOHWU1fZhyKpbZqqjwMmX6fZtBNiO8IIrXa0b5+td7z+4G6nnT7ysTkVOB/IH9Py3dUdsQxY55nKWQEUrFFnOsrp+jlCmi/ceyrPcaN5/XU3aqk1E8b3m0l0TIzVDiXoPzZfWkeXed0mrKF/03gb6MHTv2BYc64pI2E3ah0NjYWOoiibrFvyjdX4N2R+FxFBcXv+tyymsYxhzDMFYlHB/FyRrgnrF9mFVRi2VZP04xA492lIcjC8jWNO1u+3/RUNZfie3RtjY/ty+Kr1zKrVeKfoCJAm9lJGT6fdPNPN+QNG01oLhRRHbECKsqpnDXsKw7vUve+iRGkncuv3BUJ6t+xy+AO7zh6sWx9FkeT6cbQVUAG73hyFg7Pfcy4BFvOPJYzahzUfAumvYrb3nk/bX5uQ+L4pEB5dWhdf6h3S3Ut4NeX+M2Cfg/0++7BygBrvaGI2U1+b4xSvG2N7zsWQCzwHe1WPxSLB5WwrpeJ3oX9fjrc68ArBvpO9IC3RuOHAHwgf+sSxrJ3gT83huOXBFvZG3+sGWCNT123SiR670Vy9bErq9WtOggZWlbvOHqF2JSbiFwuDccGbSGu8jyly5SqGdc+n8S0qk26eW99FJq6j64HHjJWxl5MSbV36g0fobIdcCRPawjR/dassiKtV8/YMVqVXP+2Q+qrKz/iau4TL/vDuARb2UkFPv9c1GNk5XIM8BOb0WkEGD1+Wcz+PV3MnS75/icZNvcVME/jnImFBcXN7TCK++fwCUxgt+tDo4bN26nYRgbgEQF6xRnvqKioo7wQPSICWSDExNDoVCPoqKiJvvvW/P7AqxzGb8ddKCNXrIQtdNbUf1Tt5P9K6prTb/vSFeCUMlG5kpZY0W0KlGMUe6X15ksbvAujnzhSI/GyTqGbZ2yLFQ9g4GRpt/3/diANQD/ik0fPm5q15Iq0ZiytmDYwznlVdtMv++nwDux/v/X9PvOBbBEXYZiborZ1R/B2gQy3huOlMXqPQNRA0y/byGgsLCANTmVkSU1/ty/1328dr3p931rKev7FuookAbT71uQICJVxghuNrbb6Qos6xiEFU2Sk6chcUGmT07521tcOlcFMJCHqFE+C/f4L+uR+n4kuODKvHnU+H0DFQxrugawUEQsD5YH1sXJOlFiU9mdNFTSDG0AcIbp942M1REVKLWUWCKqacfqDFnvNWxwkIssXLjwmKVLv/O5w2JgeGun0XFMr9gIW996Kk7Ye4hSkne8cQbb7igLHkeLSNj5cVJKDX701do3YpsFMKOsloFb3zrJpfwnaWY57UDYLuy6tmAo/cuXxX+uM/OHngms1LItTltUDfADtb3hJ9Ilu2lxsX/lW5+Y+b5/K9vQ3e3TrWil3bc0Rj3AJ6LUEzmV1UluTqY/N8mypP+SyHum37dVLCto+n3dgZe84ciDCVkeMf2+H6G4phFPil1JVbY3XP246fdNMP2+Sd5wZLbAhwpe9YYjNztz54SrZwOzzTyfTxPtFUtxhpYg9e/SmQ/rCdYEbzhyNIA5yncawrQUl73tzaP7aMcN6WV92+MYzvxPm2aT/0F5rgR+6Rjwj4AXveFIkhvse6OHdUupI2toUFaWJ9G992MFr/UPR5Ik+7V5Q/tnuHUfKGZFFiqlRicxcWPjtKlTpWmBzTCMS1wk7JKW6r49vzfAK4ZhWOyBD8asRXVQX73YQdhuhN6a69UNw/gsTZZ6y7KMhN1fWkLUQbBHRaPRNS4xUKbdclHfpi3PphT2xTCM37rUt4Dk7dLaXSXisVUZyoPITkFt2d6wudb0+17SovzEEn6EUmFBLlQNfG76fU8Cd/ePLN9p5vmSpuAyb951pt8XBVdJ1iKqhtbk+erEw85oVHb2r1xW43oTldJEuE8hH9eM8o0WjQ8sKAbVbL5Sk5f7fQVdBHWnQusqGl8DvFc4XAaUvakaPDyWHbWl1EHhN79ONxg5UfJrPDSYeb5XcyqXvWj6fX82831vqigV4uEsLNWokB0icipKvaxE+QT5dEBl5EvT79th+of+QlDPWqg+msjgzdo3f+oZ7danpmDocZayjkLxLLAuRfP3HX1G31caourqzl991d/0+4aBCrd0A8sKCpBo/R1K6reafl9D7EU5D6HIWxH5jun3NZr+3P+KJRGlqeGg1VlpFlFOe/3tb0y/r8/7fl9OVOjkye40PVpf/63pz12vUGs0pRUq1DvKnipmsJdhWdYfRWSag9SuNAzjLGyri9OBYhcd8mNtaOYZ4Ord7eOtF/YiFAotTqdSEZGyqVMVTjtiF737Ey00t6W4uPjINgRg2oHtjt+kUiouLv63S/k8wzBqgSDwJTAB22w5mf2j0Vkej+eKjvJ8aMBTCDfG9Jq3KuTHZ772oQI2WtLQ4K2ILBMYrlDXKyXTUcxsslNWfIa9ESUyr2nNa6yyN4904mmUNl4J10YtJomoO2PpTzryPat2RhtyKiIbhGh/pXE6dXqJAAAEBUlEQVSVBXNRynPMl/IxQh0iBkDN+UMgyypFMBRyFmINVJa6zPT71ICyNxXA4LLItyCLgT+neGRWgbwO8HFnpRTqXDR+ZM8xG49GMVw0/ohipCer05L+lZEKheqJ8A8NOaPRQ4FtDRLxgULBHwS5QilrwYiydy0goCz1Z03J9UL0ewqWxhr+m2iNO+O98IYjD6PkORHtCZDiLDwzlJINKraeYOu81RZl6yCbUFhezvbGLduiSHfs2MK/ALp5KyLfeXf0eaKwjgEZqzT+KMgZVqfoMrUz2gD8zTEQCV5XalwUZqLwnrro9W3Kkr4g/yNof1BC764eViN8BczPUOzeRSAQ+Ax4yOVULnCnG1kDC8eOHdsqi4zYVlRP7Wk/i4qKPiL1DiuISGlLZN1KtDW8qXMzhLiq5jcuefvEPly3u5E1MHncuHGfdaTnI8ttyv/+Bedw6uLIde9dYNvBH9aQvfaEpUuvAlgzcpf5pXdJ5FPgqfUjRnDC0qVx4nkVku12V40YgTe89GFnO+sKhnFaedVdNf6h5ISXxfPdFz/fkJ39waDSqiua6Wvhmbhpm+n3PYpinrcyEtylNvE5VqzV8Ea4x20AvBVvvR7X10hpNdg7RK94/4Jz+GKLttNXvWt84vJEf3tBbjqA49qb+l6bmxtPM4DEz/vjZsEQvOVJahs7b2XkmZj0E7c/NwFz1emnc/qqVXjD1Z8Ds9eMHMnA115rKnfm0lUAW4G7EusbVPqGWj9ixJYTli51c0V+8IOCszml/J34/Z60Oi+XwZXVeMPVJUDJ6z++2H75GrSN3jffvMpRfhPwmLMvGewZXnhBoevyM8MwjqDlOBsAL+u6/r2HX9nMnd85tsXMsa2oqmIBl3rsBT32RW5637Fjxza00xCuAo5P0hWVlJyk6/rdoVCom1LqltZUopSaGAgEnuxoz4dr8KdTF9sz5gGLbSKKExLAwNeaz6YTz8eR6GRxust5gNPKq2I64WWu+QaVVqXs+Cnl5Sz/biF8+c0DwGOm33dtbCp0FLE4s2ae7xqE64AFg8KRr9Lq0lKMQbo8qa4doG8aJxNv+YoWb0yis9Dpq5Lt9ttCkKn6Z4/hO0nXOrgyuc/n//U/dn/fTL1hSIas9y4mTBCmln2AXnjK9cFgcI6I3Iy9g0u/mES4CTvG83tKqScCgcCyxxd9wo0XNpH18yTHdI6kaOpKwBm/IL7F+HQHN3yWgtRmiMhbLqf+m6LNV4Cv2zgkW2N/ZwM707Uxq7wObcfbP7Msa3mCfKU0Tfsu8FhRUdGkkpKSGZqm3Ybt5HNKjC8+i43ph0BVNBr93bhx43YmXGeViCQKnB4R+ThFf2eQbAb4SSuu8UmSrYFSzir+P6iLzuEDaKTYAAAAAElFTkSuQmCC"}}]); \ No newline at end of file diff --git a/assets/js/c4de80f8.9e64c997.js b/assets/js/c4de80f8.9e64c997.js new file mode 100644 index 00000000..177263f0 --- /dev/null +++ b/assets/js/c4de80f8.9e64c997.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7943],{7520:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>u,default:()=>d,frontMatter:()=>l,metadata:()=>r,toc:()=>s});var n=a(7462),i=(a(7294),a(3905));a(1839);const l={sidebar_position:5},u="Installation",r={unversionedId:"install",id:"install",title:"Installation",description:"This guide shows how to install cun\u012bcu.",source:"@site/docs/install.md",sourceDirName:".",slug:"/install",permalink:"/docs/install",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/install.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/docs/"},next:{title:"Configuration",permalink:"/docs/config"}},o={},s=[{value:"From the Binary Releases",id:"from-the-binary-releases",level:2},{value:"By Hand",id:"by-hand",level:2},{value:"From Script",id:"from-script",level:2},{value:"Through Package Managers",id:"through-package-managers",level:2},{value:"From Apt (Debian, Ubuntu)",id:"from-apt-debian-ubuntu",level:3},{value:"From Yum (Redhat, Fedora, RockyLinux)",id:"from-yum-redhat-fedora-rockylinux",level:3},{value:"From Homebrew (macOS)",id:"from-homebrew-macos",level:3},{value:"From Archlinux User Repository (AUR)",id:"from-archlinux-user-repository-aur",level:3},{value:"From Source (all)",id:"from-source-all",level:2},{value:"Conclusion",id:"conclusion",level:2}],c={toc:s};function d(e){let{components:t,...a}=e;return(0,i.kt)("wrapper",(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"installation"},"Installation"),(0,i.kt)("p",null,"This guide shows how to install cun\u012bcu.\ncun\u012bcu can be installed either from source, or from pre-built binary releases."),(0,i.kt)("h2",{id:"from-the-binary-releases"},"From the Binary Releases"),(0,i.kt)("p",null,"Every release of cun\u012bcu provides binary releases for a variety of OSes.\nThese binary versions can be manually downloaded and installed."),(0,i.kt)("h2",{id:"by-hand"},"By Hand"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/stv0g/cunicu/releases"},"Download your desired version")),(0,i.kt)("li",{parentName:"ol"},"Unzip it: ",(0,i.kt)("inlineCode",{parentName:"li"},"gunzip cunicu_0.0.1_linux_amd64.tar.gz")),(0,i.kt)("li",{parentName:"ol"},"Move the unzipped binary to its desired destination: ",(0,i.kt)("inlineCode",{parentName:"li"},"mv cunicu /usr/local/bin/cunicu")),(0,i.kt)("li",{parentName:"ol"},"Make it executable: ",(0,i.kt)("inlineCode",{parentName:"li"},"chmod +x /usr/local/bin/cunicu")),(0,i.kt)("li",{parentName:"ol"},"From there, you should be able to run the client and add the stable repo: ",(0,i.kt)("inlineCode",{parentName:"li"},"cunicu help"),".")),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"cun\u012bcu automated tests are performed for Linux, macOS and Windows on x86_64, ARMv6, ARMv8 amd ARM64 architectures.\nTesting of other OSes are the responsibility of the community requesting cun\u012bcu for the OS in question.")),(0,i.kt)("h2",{id:"from-script"},"From Script"),(0,i.kt)("p",null,"cun\u012bcu also has an installer script that will automatically grab the latest version of cun\u012bcu and install it locally."),(0,i.kt)("p",null,"You can fetch that script, and then execute it locally.\nIt's well documented so that you can read through it and understand what it is doing before you run it."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"curl -fsSL -o get_cunicu.sh get.cunicu.li\nchmod 700 get_cunicu.sh\n./get_cunicu.sh\n")),(0,i.kt)("p",null,"Yes, you can ",(0,i.kt)("inlineCode",{parentName:"p"},"curl -fsSL get.cunicu.li | bash")," if you want to live on the edge."),(0,i.kt)("h2",{id:"through-package-managers"},"Through Package Managers"),(0,i.kt)("p",null,"cun\u012bcu provides the ability to install via operating system package managers."),(0,i.kt)("h3",{id:"from-apt-debian-ubuntu"},"From Apt (Debian, Ubuntu)"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'sudo apt-get install apt-transport-https --yes\necho "deb [arch=$(dpkg --print-architecture) trusted=yes] https://packages.cunicu.li/apt/ /" | sudo tee /etc/apt/sources.list.d/cunicu.list\nsudo apt-get update\nsudo apt-get install cunicu\n')),(0,i.kt)("h3",{id:"from-yum-redhat-fedora-rockylinux"},"From Yum (Redhat, Fedora, RockyLinux)"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"sudo cat > /etc/yum.repos.d/cunicu.repo <<EOF\n[cunicu]\nname=RIasC\nbaseurl=https://packages.cunicu.li/yum/\nenabled=1\ngpgcheck=0\nEOF\nsudo yum install cunicu\n")),(0,i.kt)("h3",{id:"from-homebrew-macos"},"From Homebrew (macOS)"),(0,i.kt)("p",null,"A formulae for cun\u012bcu is available in our Homebrew Tap: ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/stv0g/homebrew-cunicu"},"https://github.com/stv0g/homebrew-cunicu"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"brew tap stv0g/cunicu\nbrew install cunicu\n")),(0,i.kt)("h3",{id:"from-archlinux-user-repository-aur"},"From Archlinux User Repository (AUR)"),(0,i.kt)("p",null,"cun\u012bcu is available in the Archlinux User Repository: ",(0,i.kt)("a",{parentName:"p",href:"https://aur.archlinux.org/packages/cunicu-bin"},"https://aur.archlinux.org/packages/cunicu-bin"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="via Yaourt"',title:'"via','Yaourt"':!0},"yaourt -S cunicu-bin\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="or via Packer"',title:'"or',via:!0,'Packer"':!0},"packer -S cunicu-bin\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="or via yay"',title:'"or',via:!0,'yay"':!0},"yay cunicu-bin\n")),(0,i.kt)("h2",{id:"from-source-all"},"From Source (all)"),(0,i.kt)("p",null,"Building cun\u012bcu is fairly easy and allows you to install the latest unreleased version."),(0,i.kt)("p",null,"You must have a working Go environment."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"go install github.com/stv0g/cunicu/cmd/cunicu@latest\n")),(0,i.kt)("p",null,"If required, it will fetch the dependencies and cache them, and validate configuration.\nIt will then compile cun\u012bcu and place it in ",(0,i.kt)("inlineCode",{parentName:"p"},"${GOPATH}/bin/cunicu"),"."),(0,i.kt)("h2",{id:"conclusion"},"Conclusion"),(0,i.kt)("p",null,"In most cases, installation is as simple as getting a pre-built cun\u012bcu binary.\nThis document covers additional cases for those who want to do more sophisticated things with cun\u012bcu."),(0,i.kt)("p",null,"Once you have cun\u012bcu successfully installed, you can move on to ",(0,i.kt)("a",{parentName:"p",href:"/docs/usage/"},"using cun\u012bcu")," to setup your mesh VPN network."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.24f7e1ce.js b/assets/js/ccc49370.eda6030d.js similarity index 98% rename from assets/js/ccc49370.24f7e1ce.js rename to assets/js/ccc49370.eda6030d.js index 85b1078e..3992f44c 100644 --- a/assets/js/ccc49370.24f7e1ce.js +++ b/assets/js/ccc49370.eda6030d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6103],{5203:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var a=n(7294),l=n(6010),r=n(1944),o=n(5281),i=n(9460),c=n(9058),s=n(390),m=n(7462),d=n(5999),u=n(2244);function g(e){const{nextItem:t,prevItem:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,d.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},n&&a.createElement(u.Z,(0,m.Z)({},n,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")})),t&&a.createElement(u.Z,(0,m.Z)({},t,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post"),isNext:!0})))}function f(){const{assets:e,metadata:t}=(0,i.C)(),{title:n,description:l,date:o,tags:c,authors:s,frontMatter:m}=t,{keywords:d}=m,u=e.image??m.image;return a.createElement(r.d,{title:n,description:l,keywords:d,image:u},a.createElement("meta",{property:"og:type",content:"article"}),a.createElement("meta",{property:"article:published_time",content:o}),s.some((e=>e.url))&&a.createElement("meta",{property:"article:author",content:s.map((e=>e.url)).filter(Boolean).join(",")}),c.length>0&&a.createElement("meta",{property:"article:tag",content:c.map((e=>e.label)).join(",")}))}var v=n(9407);function p(e){let{sidebar:t,children:n}=e;const{metadata:l,toc:r}=(0,i.C)(),{nextItem:o,prevItem:m,frontMatter:d}=l,{hide_table_of_contents:u,toc_min_heading_level:f,toc_max_heading_level:p}=d;return a.createElement(c.Z,{sidebar:t,toc:!u&&r.length>0?a.createElement(v.Z,{toc:r,minHeadingLevel:f,maxHeadingLevel:p}):void 0},a.createElement(s.Z,null,n),(o||m)&&a.createElement(g,{nextItem:o,prevItem:m}))}function h(e){const t=e.content;return a.createElement(i.n,{content:e.content,isBlogPostPage:!0},a.createElement(r.FG,{className:(0,l.Z)(o.k.wrapper.blogPages,o.k.page.blogPostPage)},a.createElement(f,null),a.createElement(p,{sidebar:e.sidebar},a.createElement(t,null))))}},9407:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(7462),l=n(7294),r=n(6010),o=n(3743);const i="tableOfContents_bqdL";function c(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(i,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},3743:(e,t,n)=>{n.d(t,{Z:()=>f});var a=n(7462),l=n(7294),r=n(6668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function s(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(c(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function m(){const e=(0,l.useRef)(0),{navbar:{hideOnScroll:t}}=(0,r.L)();return(0,l.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,l.useRef)(void 0),n=m();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function i(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),i=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=s(i,{anchorTopOffset:n.current}),m=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===m)}))}return document.addEventListener("scroll",i),document.addEventListener("resize",i),i(),()=>{document.removeEventListener("scroll",i),document.removeEventListener("resize",i)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const g=l.memo(u);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...f}=e;const v=(0,r.L)(),p=m??v.tableOfContents.minHeadingLevel,h=u??v.tableOfContents.maxHeadingLevel,b=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>i({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:h});return d((0,l.useMemo)((()=>{if(c&&s)return{linkClassName:c,linkActiveClassName:s,minHeadingLevel:p,maxHeadingLevel:h}}),[c,s,p,h])),l.createElement(g,(0,a.Z)({toc:b,className:n,linkClassName:c},f))}}}]); \ No newline at end of file +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6103],{9178:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var a=n(7294),l=n(6010),r=n(1944),o=n(5281),i=n(9460),c=n(9058),s=n(390),m=n(7462),d=n(5999),u=n(2244);function g(e){const{nextItem:t,prevItem:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,d.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},n&&a.createElement(u.Z,(0,m.Z)({},n,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")})),t&&a.createElement(u.Z,(0,m.Z)({},t,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post"),isNext:!0})))}function f(){const{assets:e,metadata:t}=(0,i.C)(),{title:n,description:l,date:o,tags:c,authors:s,frontMatter:m}=t,{keywords:d}=m,u=e.image??m.image;return a.createElement(r.d,{title:n,description:l,keywords:d,image:u},a.createElement("meta",{property:"og:type",content:"article"}),a.createElement("meta",{property:"article:published_time",content:o}),s.some((e=>e.url))&&a.createElement("meta",{property:"article:author",content:s.map((e=>e.url)).filter(Boolean).join(",")}),c.length>0&&a.createElement("meta",{property:"article:tag",content:c.map((e=>e.label)).join(",")}))}var v=n(9407);function p(e){let{sidebar:t,children:n}=e;const{metadata:l,toc:r}=(0,i.C)(),{nextItem:o,prevItem:m,frontMatter:d}=l,{hide_table_of_contents:u,toc_min_heading_level:f,toc_max_heading_level:p}=d;return a.createElement(c.Z,{sidebar:t,toc:!u&&r.length>0?a.createElement(v.Z,{toc:r,minHeadingLevel:f,maxHeadingLevel:p}):void 0},a.createElement(s.Z,null,n),(o||m)&&a.createElement(g,{nextItem:o,prevItem:m}))}function h(e){const t=e.content;return a.createElement(i.n,{content:e.content,isBlogPostPage:!0},a.createElement(r.FG,{className:(0,l.Z)(o.k.wrapper.blogPages,o.k.page.blogPostPage)},a.createElement(f,null),a.createElement(p,{sidebar:e.sidebar},a.createElement(t,null))))}},9407:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(7462),l=n(7294),r=n(6010),o=n(3743);const i="tableOfContents_bqdL";function c(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(i,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},3743:(e,t,n)=>{n.d(t,{Z:()=>f});var a=n(7462),l=n(7294),r=n(6668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function s(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(c(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function m(){const e=(0,l.useRef)(0),{navbar:{hideOnScroll:t}}=(0,r.L)();return(0,l.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,l.useRef)(void 0),n=m();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function i(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),i=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=s(i,{anchorTopOffset:n.current}),m=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===m)}))}return document.addEventListener("scroll",i),document.addEventListener("resize",i),i(),()=>{document.removeEventListener("scroll",i),document.removeEventListener("resize",i)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const g=l.memo(u);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...f}=e;const v=(0,r.L)(),p=m??v.tableOfContents.minHeadingLevel,h=u??v.tableOfContents.maxHeadingLevel,b=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>i({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:h});return d((0,l.useMemo)((()=>{if(c&&s)return{linkClassName:c,linkActiveClassName:s,minHeadingLevel:p,maxHeadingLevel:h}}),[c,s,p,h])),l.createElement(g,(0,a.Z)({toc:b,className:n,linkClassName:c},f))}}}]); \ No newline at end of file diff --git a/assets/js/da55d1d1.01ba8494.js b/assets/js/da55d1d1.01ba8494.js new file mode 100644 index 00000000..e42f089f --- /dev/null +++ b/assets/js/da55d1d1.01ba8494.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4398],{9009:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var o=t(7462),i=(t(7294),t(3905));t(1839);const a={title:"cunicu monitor",sidebar_label:"monitor",sidebar_class_name:"command-name",slug:"/usage/man/monitor",hide_title:!0,keywords:["manpage"]},r=void 0,s={unversionedId:"usage/md/cunicu_monitor",id:"usage/md/cunicu_monitor",title:"cunicu monitor",description:"cunicu monitor",source:"@site/docs/usage/md/cunicu_monitor.md",sourceDirName:"usage/md",slug:"/usage/man/monitor",permalink:"/docs/usage/man/monitor",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_monitor.md",tags:[],version:"current",frontMatter:{title:"cunicu monitor",sidebar_label:"monitor",sidebar_class_name:"command-name",slug:"/usage/man/monitor",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"invite",permalink:"/docs/usage/man/invite"},next:{title:"relay",permalink:"/docs/usage/man/relay"}},u={},l=[{value:"cunicu monitor",id:"cunicu-monitor",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:l};function m(e){let{components:n,...t}=e;return(0,i.kt)("wrapper",(0,o.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-monitor"},"cunicu monitor"),(0,i.kt)("p",null,"Monitor the cun\u012bcu daemon for events"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu monitor [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -f, --format format Output format (one of: json, logger, human) (default "human")\n -h, --help help for monitor\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/da55d1d1.a3845566.js b/assets/js/da55d1d1.a3845566.js deleted file mode 100644 index 73a2c360..00000000 --- a/assets/js/da55d1d1.a3845566.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[4398],{9009:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>l,frontMatter:()=>a,metadata:()=>s,toc:()=>m});var o=t(7462),i=(t(7294),t(3905));t(1839);const a={title:"cunicu monitor",sidebar_label:"monitor",sidebar_class_name:"command-name",slug:"/usage/man/monitor",hide_title:!0,keywords:["manpage"]},r=void 0,s={unversionedId:"usage/md/cunicu_monitor",id:"usage/md/cunicu_monitor",title:"cunicu monitor",description:"cunicu monitor",source:"@site/docs/usage/md/cunicu_monitor.md",sourceDirName:"usage/md",slug:"/usage/man/monitor",permalink:"/docs/usage/man/monitor",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_monitor.md",tags:[],version:"current",frontMatter:{title:"cunicu monitor",sidebar_label:"monitor",sidebar_class_name:"command-name",slug:"/usage/man/monitor",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"daemon",permalink:"/docs/usage/man/daemon"},next:{title:"restart",permalink:"/docs/usage/man/restart"}},u={},m=[{value:"cunicu monitor",id:"cunicu-monitor",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],c={toc:m};function l(e){let{components:n,...t}=e;return(0,i.kt)("wrapper",(0,o.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-monitor"},"cunicu monitor"),(0,i.kt)("p",null,"Monitor the cun\u012bcu daemon for events"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"cunicu monitor [flags]\n")),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -f, --format format Output format (one of: json, logger, human) (default "human")\n -h, --help help for monitor\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n')),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments.")))}l.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ddfaed6c.9575a5ef.js b/assets/js/ddfaed6c.9575a5ef.js new file mode 100644 index 00000000..6b2f7745 --- /dev/null +++ b/assets/js/ddfaed6c.9575a5ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7325],{7686:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=i(7462),n=(i(7294),i(3905));const r={slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]},s=void 0,o={permalink:"/blog/welcome",editUrl:"https://github.com/stv0g/cunicu/master/website/blog/2022-09-15-welcome/index.md",source:"@site/blog/2022-09-15-welcome/index.md",title:"Welcome",description:"Hello, welcome to the first post in the cun\u012bcu project blog!",date:"2022-09-15T00:00:00.000Z",formattedDate:"September 15, 2022",tags:[{label:"hello",permalink:"/blog/tags/hello"}],readingTime:1.2,hasTruncateMarker:!1,authors:[{name:"Steffen Vogel",title:"Maintainer of cun\u012bcu",url:"https://github.com/stv0g",imageURL:"https://github.com/stv0g.png",key:"stv0g"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["stv0g"],tags:["hello"]}},l={authorsImageUrls:[void 0]},c=[{value:"First release",id:"first-release",level:3},{value:"Website, Docs and Twitter",id:"website-docs-and-twitter",level:3},{value:"Stickers",id:"stickers",level:3}],u={toc:c};function h(e){let{components:t,...i}=e;return(0,n.kt)("wrapper",(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Hello, welcome to the first post in the cun\u012bcu project blog!"),(0,n.kt)("p",null,"While the project is still in its infancy there are some updates in ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/TL;DR"},"TL;DR"),"."),(0,n.kt)("h3",{id:"first-release"},"First release"),(0,n.kt)("p",null,"We are planning to publish the first official release within the next 4-10 weeks \ud83c\udf89.\nThe release pipeline, packaging and self-update feature and more has already been implemented.\nWe just need to finish the last features and do quite some more testing."),(0,n.kt)("h3",{id:"website-docs-and-twitter"},"Website, Docs and Twitter"),(0,n.kt)("p",null,"The project has now its dedicated ",(0,n.kt)("a",{parentName:"p",href:"https://cunicu.li"},"website"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cunicu"},"GitHub organization")," and Twitter handle (",(0,n.kt)("a",{parentName:"p",href:"https://twitter.com/cunicuVPN"},"@cunicuVPN"),").\nFeel free to follow us there for updates!"),(0,n.kt)("p",null,"You might also have realized that the project name has changed. We decided to rebrand from the previous name ",(0,n.kt)("em",{parentName:"p"},"wice")," to avoid any potential trademark issues with the WireGuard project as well as another small German company named ",(0,n.kt)("em",{parentName:"p"},"WICE"),".\nThe project name ",(0,n.kt)("em",{parentName:"p"},"cun\u012bcu")," ","[k\u028a\u02c8ni\u02d0k\u028a]"," is derived from the ",(0,n.kt)("a",{parentName:"p",href:"https://en.wiktionary.org/wiki/cuniculus#Latin"},"latin noun cun\u012bculus")," which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as ",(0,n.kt)("em",{parentName:"p"},"cun\u012bcu")," builds tunnels between otherwise hard to reach network locations."),(0,n.kt)("p",null,"This also gave us the opportunity to redesign the logo which you find further down in the sticker design."),(0,n.kt)("h3",{id:"stickers"},"Stickers"),(0,n.kt)("p",null,"We have stickers! Just drop me a mail at ",(0,n.kt)("a",{parentName:"p",href:"mailto:info@cunicu.li"},"\ud83d\udce7 info@cunicu.li")," and I will send you some or talk to me at some of the upcoming conferences."),(0,n.kt)("figure",null,(0,n.kt)("center",null,(0,n.kt)("img",{src:"/img/cunicu_sticker.svg",alt:"The sticker design",style:{transform:"rotate(270deg)"}}),(0,n.kt)("figcaption",null,"The sticker design"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e432836c.2a3efc14.js b/assets/js/e432836c.2a3efc14.js new file mode 100644 index 00000000..c2133b32 --- /dev/null +++ b/assets/js/e432836c.2a3efc14.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8929],{8236:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>u,toc:()=>l});var a=t(7462),s=(t(7294),t(3905));t(1839);const i={title:"cunicu wg genpsk",sidebar_label:"wg genpsk",sidebar_class_name:"command-name",slug:"/usage/man/wg/genpsk",hide_title:!0,keywords:["manpage"]},o=void 0,u={unversionedId:"usage/md/cunicu_wg_genpsk",id:"usage/md/cunicu_wg_genpsk",title:"cunicu wg genpsk",description:"cunicu wg genpsk",source:"@site/docs/usage/md/cunicu_wg_genpsk.md",sourceDirName:"usage/md",slug:"/usage/man/wg/genpsk",permalink:"/docs/usage/man/wg/genpsk",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_wg_genpsk.md",tags:[],version:"current",frontMatter:{title:"cunicu wg genpsk",sidebar_label:"wg genpsk",sidebar_class_name:"command-name",slug:"/usage/man/wg/genpsk",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg genkey",permalink:"/docs/usage/man/wg/genkey"},next:{title:"wg pubkey",permalink:"/docs/usage/man/wg/pubkey"}},r={},l=[{value:"cunicu wg genpsk",id:"cunicu-wg-genpsk",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],g={toc:l};function p(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,a.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-wg-genpsk"},"cunicu wg genpsk"),(0,s.kt)("p",null,"Generates a random preshared key in base64 and prints it to standard output."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu wg genpsk [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," -h, --help help for genpsk\n")),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e432836c.ac27ad63.js b/assets/js/e432836c.ac27ad63.js deleted file mode 100644 index 7a9ecb63..00000000 --- a/assets/js/e432836c.ac27ad63.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[8929],{8236:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>u,toc:()=>l});var a=t(7462),s=(t(7294),t(3905));t(1839);const i={title:"cunicu wg genpsk",sidebar_label:"wg genpsk",sidebar_class_name:"command-name",slug:"/usage/man/wg/genpsk",hide_title:!0,keywords:["manpage"]},o=void 0,u={unversionedId:"usage/md/cunicu_wg_genpsk",id:"usage/md/cunicu_wg_genpsk",title:"cunicu wg genpsk",description:"cunicu wg genpsk",source:"@site/docs/usage/md/cunicu_wg_genpsk.md",sourceDirName:"usage/md",slug:"/usage/man/wg/genpsk",permalink:"/docs/usage/man/wg/genpsk",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_wg_genpsk.md",tags:[],version:"current",frontMatter:{title:"cunicu wg genpsk",sidebar_label:"wg genpsk",sidebar_class_name:"command-name",slug:"/usage/man/wg/genpsk",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"wg genkey",permalink:"/docs/usage/man/wg/genkey"},next:{title:"wg pubkey",permalink:"/docs/usage/man/wg/pubkey"}},r={},l=[{value:"cunicu wg genpsk",id:"cunicu-wg-genpsk",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],g={toc:l};function p(e){let{components:n,...t}=e;return(0,s.kt)("wrapper",(0,a.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"cunicu-wg-genpsk"},"cunicu wg genpsk"),(0,s.kt)("p",null,"Generates a random preshared key in base64 and prints it to standard output."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"cunicu wg genpsk [flags]\n")),(0,s.kt)("h3",{id:"options"},"Options"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," -h, --help help for genpsk\n")),(0,s.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,s.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a35b52ca.32d0c9d2.js b/assets/js/e4582cf4.9a433e57.js similarity index 62% rename from assets/js/a35b52ca.32d0c9d2.js rename to assets/js/e4582cf4.9a433e57.js index df37af95..17c4e964 100644 --- a/assets/js/a35b52ca.32d0c9d2.js +++ b/assets/js/e4582cf4.9a433e57.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[2854],{5745:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7606],{5745:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/e5e144da.41512bf8.js b/assets/js/e5e144da.41512bf8.js deleted file mode 100644 index db2a2503..00000000 --- a/assets/js/e5e144da.41512bf8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7923],{5763:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=a(7462),i=(a(7294),a(3905));a(1839);const s={title:"cunicu wg",sidebar_label:"wg",sidebar_class_name:"command-name",slug:"/usage/man/wg",hide_title:!0,keywords:["manpage"]},o=void 0,r={unversionedId:"usage/md/cunicu_wg",id:"usage/md/cunicu_wg",title:"cunicu wg",description:"cunicu wg",source:"@site/docs/usage/md/cunicu_wg.md",sourceDirName:"usage/md",slug:"/usage/man/wg",permalink:"/docs/usage/man/wg",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_wg.md",tags:[],version:"current",frontMatter:{title:"cunicu wg",sidebar_label:"wg",sidebar_class_name:"command-name",slug:"/usage/man/wg",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"version",permalink:"/docs/usage/man/version"},next:{title:"wg genkey",permalink:"/docs/usage/man/wg/genkey"}},u={},c=[{value:"cunicu wg",id:"cunicu-wg",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},l,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-wg"},"cunicu wg"),(0,i.kt)("p",null,"WireGuard commands"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"The wg sub-command mimics the wg(8) commands of the wireguard-tools package.\nIn contrast to the wg(8) command, the cunico sub-command delegates it tasks to a running cunucu daemon."),(0,i.kt)("p",null,"Currently, only a subset of the wg(8) are supported."),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for wg\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/genkey"},"cunicu wg genkey"),"\t - Generates a random private key in base64 and prints it to standard output."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/genpsk"},"cunicu wg genpsk"),"\t - Generates a random preshared key in base64 and prints it to standard output."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/pubkey"},"cunicu wg pubkey"),"\t - Calculates a public key and prints it in base64 to standard output."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/show"},"cunicu wg show"),"\t - Shows current WireGuard configuration and runtime information of specified ","[interface]","."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/showconf"},"cunicu wg showconf"),"\t - Shows the current configuration and information of the provided WireGuard interface")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e5e144da.f7d81d84.js b/assets/js/e5e144da.f7d81d84.js new file mode 100644 index 00000000..ba9445bb --- /dev/null +++ b/assets/js/e5e144da.f7d81d84.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[7923],{5763:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var t=a(7462),i=(a(7294),a(3905));a(1839);const o={title:"cunicu wg",sidebar_label:"wg",sidebar_class_name:"command-name",slug:"/usage/man/wg",hide_title:!0,keywords:["manpage"]},s=void 0,r={unversionedId:"usage/md/cunicu_wg",id:"usage/md/cunicu_wg",title:"cunicu wg",description:"cunicu wg",source:"@site/docs/usage/md/cunicu_wg.md",sourceDirName:"usage/md",slug:"/usage/man/wg",permalink:"/docs/usage/man/wg",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_wg.md",tags:[],version:"current",frontMatter:{title:"cunicu wg",sidebar_label:"wg",sidebar_class_name:"command-name",slug:"/usage/man/wg",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"version",permalink:"/docs/usage/man/version"},next:{title:"wg genkey",permalink:"/docs/usage/man/wg/genkey"}},u={},c=[{value:"cunicu wg",id:"cunicu-wg",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:n,...a}=e;return(0,i.kt)("wrapper",(0,t.Z)({},l,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu-wg"},"cunicu wg"),(0,i.kt)("p",null,"WireGuard commands"),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"The wg sub-command mimics the wg(8) commands of the wireguard-tools package.\nIn contrast to the wg(8) command, the cunico sub-command delegates it tasks to a running cunucu daemon."),(0,i.kt)("p",null,"Currently, only a subset of the wg(8) are supported."),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," -h, --help help for wg\n")),(0,i.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/"},"cunicu"),"\t - cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/genkey"},"cunicu wg genkey"),"\t - Generates a random private key in base64 and prints it to standard output."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/genpsk"},"cunicu wg genpsk"),"\t - Generates a random preshared key in base64 and prints it to standard output."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/pubkey"},"cunicu wg pubkey"),"\t - Calculates a public key and prints it in base64 to standard output."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/show"},"cunicu wg show"),"\t - Shows current WireGuard configuration and runtime information of specified ","[interface]","."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg/showconf"},"cunicu wg showconf"),"\t - Shows the current configuration and information of the provided WireGuard interface")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e6ccb422.70694f2e.js b/assets/js/e6ccb422.70694f2e.js deleted file mode 100644 index 4395ce9d..00000000 --- a/assets/js/e6ccb422.70694f2e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[621],{7116:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>p,toc:()=>m});var r=a(7462),n=(a(7294),a(3905));a(1839);const o={title:"Comparison",sidebar_position:99},i="Comparison with other P2P VPN solutions",p={unversionedId:"comparison",id:"comparison",title:"Comparison",description:"There exist a suite of other peer-to-peer VPN solutions comparable to cun\u012bcu:",source:"@site/docs/comparison.md",sourceDirName:".",slug:"/comparison",permalink:"/docs/comparison",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/comparison.md",tags:[],version:"current",sidebarPosition:99,frontMatter:{title:"Comparison",sidebar_position:99},sidebar:"tutorialSidebar",previous:{title:"Design",permalink:"/docs/design"},next:{title:"Development",permalink:"/docs/development/"}},s={},m=[],l={toc:m};function d(t){let{components:e,...a}=t;return(0,n.kt)("wrapper",(0,r.Z)({},l,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"comparison-with-other-p2p-vpn-solutions"},"Comparison with other P2P VPN solutions"),(0,n.kt)("p",null,"There exist a suite of other peer-to-peer VPN solutions comparable to cun\u012bcu:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Commercial"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://www.tinc-vpn.org/"},"Tinc-VPN")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://github.com/pojntfx/weron"},"weron")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://tailscale.com/"},"Tailscale")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://www.zerotier.com/"},"Zerotier")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://netbird.io/"},"netbird")," (formerly Wiretrustee)"),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("p",null,"| ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/WireGuard/wg-dynamic/blob/master/docs/idea.md"},"wg-dynamic"),"\n| ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/slackhq/nebula"},"Nebula")," | |\n| ",(0,n.kt)("a",{parentName:"p",href:"https://www.netmaker.org/"},"Netmaker")," | |"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e6ccb422.ab1f9146.js b/assets/js/e6ccb422.ab1f9146.js new file mode 100644 index 00000000..658ebccf --- /dev/null +++ b/assets/js/e6ccb422.ab1f9146.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[621],{7116:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>p,toc:()=>m});var r=a(7462),n=(a(7294),a(3905));a(1839);const o={title:"Comparison",sidebar_position:99},i="Comparison with other P2P VPN solutions",p={unversionedId:"comparison",id:"comparison",title:"Comparison",description:"There exist a suite of other peer-to-peer VPN solutions comparable to cun\u012bcu:",source:"@site/docs/comparison.md",sourceDirName:".",slug:"/comparison",permalink:"/docs/comparison",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/comparison.md",tags:[],version:"current",sidebarPosition:99,frontMatter:{title:"Comparison",sidebar_position:99},sidebar:"tutorialSidebar",previous:{title:"Design",permalink:"/docs/design"},next:{title:"Development",permalink:"/docs/development/"}},s={},m=[],l={toc:m};function d(t){let{components:e,...a}=t;return(0,n.kt)("wrapper",(0,r.Z)({},l,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"comparison-with-other-p2p-vpn-solutions"},"Comparison with other P2P VPN solutions"),(0,n.kt)("p",null,"There exist a suite of other peer-to-peer VPN solutions comparable to cun\u012bcu:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Commercial"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://www.tinc-vpn.org/"},"Tinc-VPN")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://github.com/pojntfx/weron"},"weron")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://tailscale.com/"},"Tailscale")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://www.zerotier.com/"},"Zerotier")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://netbird.io/"},"netbird")," (formerly Wiretrustee)"),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("p",null,"| ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/WireGuard/wg-dynamic/blob/master/docs/idea.md"},"wg-dynamic"),"\n| ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/slackhq/nebula"},"Nebula")," | |\n| ",(0,n.kt)("a",{parentName:"p",href:"https://www.netmaker.org/"},"Netmaker")," | |"),(0,n.kt)("p",null,"You might also want to have a look at ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/HarvsG"},"@HarvsG")," ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/HarvsG/WireGuardMeshes"},"WireGuardMeshes")," comparison."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec078f8a.06bba740.js b/assets/js/ec078f8a.06bba740.js deleted file mode 100644 index b4565d38..00000000 --- a/assets/js/ec078f8a.06bba740.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6692],{3850:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(7462),i=(r(7294),r(3905));r(1839);const o={},a="Proxying",l={unversionedId:"development/proxying",id:"development/proxying",title:"Proxying",description:"cun\u012bcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports.",source:"@site/docs/development/proxying.md",sourceDirName:"development",slug:"/development/proxying",permalink:"/docs/development/proxying",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/development/proxying.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Development",permalink:"/docs/development/"},next:{title:"Session Signaling",permalink:"/docs/development/signaling"}},s={},p=[{value:"Kernel WireGuard module",id:"kernel-wireguard-module",level:2},{value:"User-space",id:"user-space",level:3},{value:"RAW Sockets + BPF filter (Kernel)",id:"raw-sockets--bpf-filter-kernel",level:3},{value:"NFtables port-redirection (Kernel)",id:"nftables-port-redirection-kernel",level:3},{value:"IPTables port-redirection",id:"iptables-port-redirection",level:2},{value:"User-space WireGuard implementation",id:"user-space-wireguard-implementation",level:2},{value:"User-space Proxy",id:"user-space-proxy",level:3},{value:"In-process socket",id:"in-process-socket",level:3},{value:"Flowchart",id:"flowchart",level:2}],c={toc:p};function d(e){let{components:t,...o}=e;return(0,i.kt)("wrapper",(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"proxying"},"Proxying"),(0,i.kt)("p",null,"cun\u012bcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports."),(0,i.kt)("h2",{id:"kernel-wireguard-module"},"Kernel WireGuard module"),(0,i.kt)("h3",{id:"user-space"},"User-space"),(0,i.kt)("p",null,"For each WG peer a new local UDP socket is opened.\ncun\u012bcu will update the endpoint address of the peer to this the local address of the new sockets."),(0,i.kt)("p",null,"WireGuard traffic is proxied by cun\u012bcu between the local UDP and the ICE socket."),(0,i.kt)("h3",{id:"raw-sockets--bpf-filter-kernel"},"RAW Sockets + BPF filter (Kernel)"),(0,i.kt)("p",null,"We allocate a single ",(0,i.kt)("a",{parentName:"p",href:"https://squidarth.com/networking/systems/rc/2018/05/28/using-raw-sockets.html"},"Linux RAW socket")," and assign a ",(0,i.kt)("a",{parentName:"p",href:"https://riyazali.net/posts/berkeley-packet-filter-in-golang/"},"eBPF")," filter to this socket which will only match STUN traffic to a specific UDP port.\nUDP headers are parsed/produced by cun\u012bcu.\ncun\u012bcu uses a UDPMux to mux all peers ICE Agents over this single RAW socket. "),(0,i.kt)("h3",{id:"nftables-port-redirection-kernel"},"NFtables port-redirection (Kernel)"),(0,i.kt)("p",null,"Two ",(0,i.kt)("a",{parentName:"p",href:"https://www.netfilter.org/projects/nftables/manpage.html"},"Nftables")," (nft) rules are added to filter input & output chains respectively.\nThe input rule will match all non-STUN traffic directed at the local port of the ICE candidate and rewrites the UDP destination port to the local listen port of the WireGuard interface.\nThe output rule will mach all traffic originating from the listen port of the WG interface and directed to the port of the remote candidate and rewrites the source port to the port of the local ICE candidate. "),(0,i.kt)("p",null,"WireGuard traffic passes only through the Netfilter chains and remains inside the kernel.\nOnly STUN binding requests are passed to cun\u012bcu."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"$ sudo nft list ruleset\ntable inet cunicu {\n chain ingress {\n type filter hook input priority raw; policy accept;\n udp dport 37281 @th,96,32 != 554869826 notrack udp dport set 1001\n }\n\n chain egress {\n type filter hook output priority raw; policy accept;\n udp sport 1001 udp dport 38767 notrack udp sport set 37281\n }\n}\n")),(0,i.kt)("h2",{id:"iptables-port-redirection"},"IPTables port-redirection"),(0,i.kt)("p",null,"Similar to NFTables port-natting by using the legacy IPTables API."),(0,i.kt)("h2",{id:"user-space-wireguard-implementation"},"User-space WireGuard implementation"),(0,i.kt)("h3",{id:"user-space-proxy"},"User-space Proxy"),(0,i.kt)("p",null,"Just like for the Kernel WireGuard module, a dedicated UDP socket for each WG peer is created.\ncun\u012bcu will update the endpoint address of the peer to this the local address of the new sockets."),(0,i.kt)("p",null,"WireGuard traffic is proxied by cun\u012bcu between the local UDP and the ICE socket."),(0,i.kt)("h3",{id:"in-process-socket"},"In-process socket"),(0,i.kt)("p",null,"cun\u012bcu implements wireguard-go's ",(0,i.kt)("inlineCode",{parentName:"p"},"conn.Bind")," interface to handle WireGuard's network IO."),(0,i.kt)("p",null,"WireGuard traffic is passed directly between ",(0,i.kt)("inlineCode",{parentName:"p"},"conn.Bind")," and Pion's ",(0,i.kt)("inlineCode",{parentName:"p"},"ice.Conn"),".\nNo round-trip through the kernel stack is required."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Note:")," This variant only works for the compiled-in version of wireguard-go in cun\u012bcu."),(0,i.kt)("h2",{id:"flowchart"},"Flowchart"),(0,i.kt)("p",null,(0,i.kt)("img",{src:r(7169).Z,width:"874",height:"914"})))}d.isMDXComponent=!0},7169:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/proxy-561858b0dc7f68600875c73c14ebef67.svg"}}]); \ No newline at end of file diff --git a/assets/js/ec078f8a.f985a03c.js b/assets/js/ec078f8a.f985a03c.js new file mode 100644 index 00000000..5341ae2b --- /dev/null +++ b/assets/js/ec078f8a.f985a03c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6692],{3850:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(7462),i=(r(7294),r(3905));r(1839);const o={},a="Proxying",l={unversionedId:"development/proxying",id:"development/proxying",title:"Proxying",description:"cun\u012bcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports.",source:"@site/docs/development/proxying.md",sourceDirName:"development",slug:"/development/proxying",permalink:"/docs/development/proxying",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/development/proxying.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Development",permalink:"/docs/development/"},next:{title:"Session Signaling",permalink:"/docs/development/signaling"}},s={},p=[{value:"Kernel WireGuard module",id:"kernel-wireguard-module",level:2},{value:"User-space",id:"user-space",level:3},{value:"RAW Sockets + BPF filter (Kernel)",id:"raw-sockets--bpf-filter-kernel",level:3},{value:"NFtables port-redirection (Kernel)",id:"nftables-port-redirection-kernel",level:3},{value:"IPTables port-redirection",id:"iptables-port-redirection",level:2},{value:"User-space WireGuard implementation",id:"user-space-wireguard-implementation",level:2},{value:"User-space Proxy",id:"user-space-proxy",level:3},{value:"In-process socket",id:"in-process-socket",level:3},{value:"Flowchart",id:"flowchart",level:2}],c={toc:p};function d(e){let{components:t,...o}=e;return(0,i.kt)("wrapper",(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"proxying"},"Proxying"),(0,i.kt)("p",null,"cun\u012bcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports."),(0,i.kt)("h2",{id:"kernel-wireguard-module"},"Kernel WireGuard module"),(0,i.kt)("h3",{id:"user-space"},"User-space"),(0,i.kt)("p",null,"For each WG peer a new local UDP socket is opened.\ncun\u012bcu will update the endpoint address of the peer to this the local address of the new sockets."),(0,i.kt)("p",null,"WireGuard traffic is proxied by cun\u012bcu between the local UDP and the ICE socket."),(0,i.kt)("h3",{id:"raw-sockets--bpf-filter-kernel"},"RAW Sockets + BPF filter (Kernel)"),(0,i.kt)("p",null,"We allocate a single ",(0,i.kt)("a",{parentName:"p",href:"https://squidarth.com/networking/systems/rc/2018/05/28/using-raw-sockets.html"},"Linux RAW socket")," and assign a ",(0,i.kt)("a",{parentName:"p",href:"https://riyazali.net/posts/berkeley-packet-filter-in-golang/"},"eBPF")," filter to this socket which will only match STUN traffic to a specific UDP port.\nUDP headers are parsed/produced by cun\u012bcu.\ncun\u012bcu uses a UDPMux to mux all peers ICE Agents over this single RAW socket. "),(0,i.kt)("h3",{id:"nftables-port-redirection-kernel"},"NFtables port-redirection (Kernel)"),(0,i.kt)("p",null,"Two ",(0,i.kt)("a",{parentName:"p",href:"https://www.netfilter.org/projects/nftables/manpage.html"},"Nftables")," (nft) rules are added to filter input & output chains respectively.\nThe input rule will match all non-STUN traffic directed at the local port of the ICE candidate and rewrites the UDP destination port to the local listen port of the WireGuard interface.\nThe output rule will mach all traffic originating from the listen port of the WG interface and directed to the port of the remote candidate and rewrites the source port to the port of the local ICE candidate. "),(0,i.kt)("p",null,"WireGuard traffic passes only through the Netfilter chains and remains inside the kernel.\nOnly STUN binding requests are passed to cun\u012bcu."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"$ sudo nft list ruleset\ntable inet cunicu {\n chain ingress {\n type filter hook input priority raw; policy accept;\n udp dport 37281 @th,96,32 != 554869826 notrack udp dport set 1001\n }\n\n chain egress {\n type filter hook output priority raw; policy accept;\n udp sport 1001 udp dport 38767 notrack udp sport set 37281\n }\n}\n")),(0,i.kt)("h2",{id:"iptables-port-redirection"},"IPTables port-redirection"),(0,i.kt)("p",null,"Similar to NFTables port-natting by using the legacy IPTables API."),(0,i.kt)("h2",{id:"user-space-wireguard-implementation"},"User-space WireGuard implementation"),(0,i.kt)("h3",{id:"user-space-proxy"},"User-space Proxy"),(0,i.kt)("p",null,"Just like for the Kernel WireGuard module, a dedicated UDP socket for each WG peer is created.\ncun\u012bcu will update the endpoint address of the peer to this the local address of the new sockets."),(0,i.kt)("p",null,"WireGuard traffic is proxied by cun\u012bcu between the local UDP and the ICE socket."),(0,i.kt)("h3",{id:"in-process-socket"},"In-process socket"),(0,i.kt)("p",null,"cun\u012bcu implements wireguard-go's ",(0,i.kt)("inlineCode",{parentName:"p"},"conn.Bind")," interface to handle WireGuard's network IO."),(0,i.kt)("p",null,"WireGuard traffic is passed directly between ",(0,i.kt)("inlineCode",{parentName:"p"},"conn.Bind")," and Pion's ",(0,i.kt)("inlineCode",{parentName:"p"},"ice.Conn"),".\nNo round-trip through the kernel stack is required."),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"This variant only works for the compiled-in version of wireguard-go in cun\u012bcu.")),(0,i.kt)("h2",{id:"flowchart"},"Flowchart"),(0,i.kt)("p",null,(0,i.kt)("img",{src:r(64).Z,width:"874",height:"914"})))}d.isMDXComponent=!0},64:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/proxy-561858b0dc7f68600875c73c14ebef67.svg"}}]); \ No newline at end of file diff --git a/assets/js/ee91bca0.0cd12d00.js b/assets/js/ee91bca0.0cd12d00.js deleted file mode 100644 index ad33dfa1..00000000 --- a/assets/js/ee91bca0.0cd12d00.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9151],{2942:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>r});var i=t(7462),o=(t(7294),t(3905));t(1839);const a={title:"cunicu config set",sidebar_label:"config set",sidebar_class_name:"command-name",slug:"/usage/man/config/set",hide_title:!0,keywords:["manpage"]},s=void 0,c={unversionedId:"usage/md/cunicu_config_set",id:"usage/md/cunicu_config_set",title:"cunicu config set",description:"cunicu config set",source:"@site/docs/usage/md/cunicu_config_set.md",sourceDirName:"usage/md",slug:"/usage/man/config/set",permalink:"/docs/usage/man/config/set",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu_config_set.md",tags:[],version:"current",frontMatter:{title:"cunicu config set",sidebar_label:"config set",sidebar_class_name:"command-name",slug:"/usage/man/config/set",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"config get",permalink:"/docs/usage/man/config/get"},next:{title:"daemon",permalink:"/docs/usage/man/daemon"}},u={},r=[{value:"cunicu config set",id:"cunicu-config-set",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:r};function d(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,i.Z)({},l,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-config-set"},"cunicu config set"),(0,o.kt)("p",null,"Update the value of a configuration setting"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"cunicu config set key value [flags]\n")),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"}," -h, --help help for set\n")),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config"},"cunicu config"),"\t - Manage configuration of a running cun\u012bcu daemon.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ee91bca0.da447e15.js b/assets/js/ee91bca0.da447e15.js new file mode 100644 index 00000000..bbaec5bc --- /dev/null +++ b/assets/js/ee91bca0.da447e15.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[9151],{2942:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>r});var i=t(7462),o=(t(7294),t(3905));t(1839);const a={title:"cunicu config set",sidebar_label:"config set",sidebar_class_name:"command-name",slug:"/usage/man/config/set",hide_title:!0,keywords:["manpage"]},s=void 0,c={unversionedId:"usage/md/cunicu_config_set",id:"usage/md/cunicu_config_set",title:"cunicu config set",description:"cunicu config set",source:"@site/docs/usage/md/cunicu_config_set.md",sourceDirName:"usage/md",slug:"/usage/man/config/set",permalink:"/docs/usage/man/config/set",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu_config_set.md",tags:[],version:"current",frontMatter:{title:"cunicu config set",sidebar_label:"config set",sidebar_class_name:"command-name",slug:"/usage/man/config/set",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"config reload",permalink:"/docs/usage/man/config/reload"},next:{title:"daemon",permalink:"/docs/usage/man/daemon"}},u={},r=[{value:"cunicu config set",id:"cunicu-config-set",level:2},{value:"Options",id:"options",level:3},{value:"Options inherited from parent commands",id:"options-inherited-from-parent-commands",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:r};function d(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,i.Z)({},l,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"cunicu-config-set"},"cunicu config set"),(0,o.kt)("p",null,"Update the value of a configuration setting"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"cunicu config set key value [flags]\n")),(0,o.kt)("h3",{id:"options"},"Options"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"}," -h, --help help for set\n")),(0,o.kt)("h3",{id:"options-inherited-from-parent-commands"},"Options inherited from parent commands"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")\n -v, --verbose int verbosity level\n')),(0,o.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/usage/man/config"},"cunicu config"),"\t - Manage configuration of a running cun\u012bcu daemon.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f98fed9b.d6d6cebd.js b/assets/js/f98fed9b.d6d6cebd.js deleted file mode 100644 index 88557a10..00000000 --- a/assets/js/f98fed9b.d6d6cebd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6929],{3342:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>o,contentTitle:()=>u,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=n(7462),i=(n(7294),n(3905));n(1839);const s={title:"cunicu",sidebar_class_name:"command-name",slug:"/usage/man/",hide_title:!0,keywords:["manpage"]},u=void 0,r={unversionedId:"usage/md/cunicu",id:"usage/md/cunicu",title:"cunicu",description:"cunicu",source:"@site/docs/usage/md/cunicu.md",sourceDirName:"usage/md",slug:"/usage/man/",permalink:"/docs/usage/man/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/tree/master/website/docs/usage/md/cunicu.md",tags:[],version:"current",frontMatter:{title:"cunicu",sidebar_class_name:"command-name",slug:"/usage/man/",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"Usage",permalink:"/docs/usage/"},next:{title:"addresses",permalink:"/docs/usage/man/addresses"}},o={},c=[{value:"cunicu",id:"cunicu",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:a,...n}=e;return(0,i.kt)("wrapper",(0,t.Z)({},l,n,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu"},"cunicu"),(0,i.kt)("p",null,"cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("p",null,"It relies on the awesome pion/ice package for the interactive connectivity establishment as well as bundles the Go user-space implementation of WireGuard in a single binary for environments in which WireGuard kernel support has not landed yet."),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -C, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n -h, --help help for cunicu\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/addresses"},"cunicu addresses"),"\t - Calculate link-local IPv4 and IPv6 addresses from a WireGuard X25519 public key"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/config"},"cunicu config"),"\t - Manage configuration of a running cun\u012bcu daemon."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/daemon"},"cunicu daemon"),"\t - Start the daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/monitor"},"cunicu monitor"),"\t - Monitor the cun\u012bcu daemon for events"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/restart"},"cunicu restart"),"\t - Restart the cun\u012bcu daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/selfupdate"},"cunicu selfupdate"),"\t - Update the cun\u012bcu binary"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/signal"},"cunicu signal"),"\t - Start gRPC signaling server"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/status"},"cunicu status"),"\t - Show current status of the cun\u012bcu daemon, its interfaces and peers"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/stop"},"cunicu stop"),"\t - Shutdown the cun\u012bcu daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/sync"},"cunicu sync"),"\t - Synchronize cun\u012bcu daemon state"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/version"},"cunicu version"),"\t - Show version of the cun\u012bcu binary and optionally also a running daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f98fed9b.fb06827e.js b/assets/js/f98fed9b.fb06827e.js new file mode 100644 index 00000000..6c8c6016 --- /dev/null +++ b/assets/js/f98fed9b.fb06827e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwice=self.webpackChunkwice||[]).push([[6929],{3342:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>o,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>u,toc:()=>c});var t=n(7462),i=(n(7294),n(3905));n(1839);const s={title:"cunicu",sidebar_class_name:"command-name",slug:"/usage/man/",hide_title:!0,keywords:["manpage"]},r=void 0,u={unversionedId:"usage/md/cunicu",id:"usage/md/cunicu",title:"cunicu",description:"cunicu",source:"@site/docs/usage/md/cunicu.md",sourceDirName:"usage/md",slug:"/usage/man/",permalink:"/docs/usage/man/",draft:!1,editUrl:"https://github.com/stv0g/cunicu/edit/master/docs/usage/md/cunicu.md",tags:[],version:"current",frontMatter:{title:"cunicu",sidebar_class_name:"command-name",slug:"/usage/man/",hide_title:!0,keywords:["manpage"]},sidebar:"tutorialSidebar",previous:{title:"Usage",permalink:"/docs/usage/"},next:{title:"addresses",permalink:"/docs/usage/man/addresses"}},o={},c=[{value:"cunicu",id:"cunicu",level:2},{value:"Synopsis",id:"synopsis",level:3},{value:"Options",id:"options",level:3},{value:"SEE ALSO",id:"see-also",level:3}],l={toc:c};function d(e){let{components:a,...n}=e;return(0,i.kt)("wrapper",(0,t.Z)({},l,n,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"cunicu"},"cunicu"),(0,i.kt)("p",null,"cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to establish peer-to-peer connections in harsh network environments."),(0,i.kt)("h3",{id:"synopsis"},"Synopsis"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' (\\(\\ \u259f\u2580\u2580\u2599 \u2588 \u2588 \u2588\u2580\u2580\u2599 \u2580\u2580\u2580 \u259f\u2580\u2580\u2599 \u2588 \u2599 \n (-,-) \u2588 \u2588 \u2588 \u2588 \u2588 \u2580\u2588 \u2588 \u2588 \u2588 (\\_/)\n o_(")(") \u259c\u2584\u2584\u259b \u259c\u2584\u2584\u259b \u2588 \u2588 \u2584\u2588\u2584 \u259c\u2584\u2584\u259b \u259c\u2584\u2584\u259b (\u2022_\u2022)\n zero-conf \u2022 p2p \u2022 mesh \u2022 vpn /> \u2764\ufe0f WireGuard\u2122\n')),(0,i.kt)("p",null,"cun\u012bcu is a user-space daemon managing WireGuard\xae interfaces to\nestablish peer-to-peer connections in harsh network environments."),(0,i.kt)("p",null,"It relies on the awesome pion/ice package for the interactive\nconnectivity establishment as well as bundles the Go user-space\nimplementation of WireGuard in a single binary for environments\nin which WireGuard kernel support has not landed yet."),(0,i.kt)("h3",{id:"options"},"Options"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},' -q, --color string Enable colorization of output (one of: auto, always, never) (default "auto")\n -l, --log-file string path of a file to write logs to\n -d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")\n -v, --verbose int verbosity level\n -h, --help help for cunicu\n')),(0,i.kt)("h3",{id:"see-also"},"SEE ALSO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/addresses"},"cunicu addresses"),"\t - Calculate link-local IPv4 and IPv6 addresses from a WireGuard X25519 public key"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/completion"},"cunicu completion"),"\t - Generate the autocompletion script for the specified shell"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/config"},"cunicu config"),"\t - Manage configuration of a running cun\u012bcu daemon."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/daemon"},"cunicu daemon"),"\t - Start the daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/invite"},"cunicu invite"),"\t - Add a new peer to the local daemon configuration and return the required configuration for this new peer"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/monitor"},"cunicu monitor"),"\t - Monitor the cun\u012bcu daemon for events"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/relay"},"cunicu relay"),"\t - Start relay API server"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/restart"},"cunicu restart"),"\t - Restart the cun\u012bcu daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/selfupdate"},"cunicu selfupdate"),"\t - Update the cun\u012bcu binary"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/signal"},"cunicu signal"),"\t - Start gRPC signaling server"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/status"},"cunicu status"),"\t - Show current status of the cun\u012bcu daemon, its interfaces and peers"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/stop"},"cunicu stop"),"\t - Shutdown the cun\u012bcu daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/sync"},"cunicu sync"),"\t - Synchronize cun\u012bcu daemon state"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/version"},"cunicu version"),"\t - Show version of the cun\u012bcu binary and optionally also a running daemon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/usage/man/wg"},"cunicu wg"),"\t - WireGuard commands")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.3e1f8c45.js b/assets/js/main.3e1f8c45.js deleted file mode 100644 index 69d3fd2d..00000000 --- a/assets/js/main.3e1f8c45.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.3e1f8c45.js.LICENSE.txt */ -(self.webpackChunkwice=self.webpackChunkwice||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),o=n(7462),a=n(8356),i=n.n(a),l=n(6887);const s={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"020785c0":[()=>Promise.all([n.e(8592),n.e(8671)]).then(n.bind(n,2061)),"@site/docs/usage/md/cunicu_wg_pubkey.md",2061],"09f02e09":[()=>Promise.all([n.e(8592),n.e(9146)]).then(n.bind(n,3682)),"@site/docs/usage/md/cunicu_wg_showconf.md",3682],"0aeccac2":[()=>Promise.all([n.e(8592),n.e(414)]).then(n.bind(n,6512)),"@site/docs/design.md",6512],17896441:[()=>Promise.all([n.e(532),n.e(8592),n.e(210),n.e(7918)]).then(n.bind(n,9055)),"@theme/DocItem",9055],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1cd45622":[()=>Promise.all([n.e(8592),n.e(7810)]).then(n.bind(n,4719)),"@site/blog/2022-09-08-welcome/index.md?truncated=true",4719],"1f391b9e":[()=>Promise.all([n.e(532),n.e(8592),n.e(210),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"30a24c52":[()=>n.e(453).then(n.t.bind(n,8605,19)),"~blog/default/blog-tags-hello-039.json",8605],"339ed6ad":[()=>Promise.all([n.e(8592),n.e(3060)]).then(n.bind(n,8237)),"@site/docs/usage/md/cunicu_status.md",8237],"3739c031":[()=>Promise.all([n.e(8592),n.e(1162)]).then(n.bind(n,8797)),"@site/docs/usage/upgrade.md",8797],"38e469bb":[()=>Promise.all([n.e(8592),n.e(8902)]).then(n.bind(n,952)),"@site/docs/usage/index.md",952],"393be207":[()=>Promise.all([n.e(8592),n.e(7414)]).then(n.bind(n,3123)),"@site/src/pages/markdown-page.md",3123],"39aaac8c":[()=>Promise.all([n.e(8592),n.e(4276)]).then(n.bind(n,8650)),"@site/docs/usage/usecases.md",8650],"3b8c55ea":[()=>Promise.all([n.e(8592),n.e(3217)]).then(n.bind(n,9803)),"@site/docs/installation.md",9803],"3d976d8d":[()=>Promise.all([n.e(8592),n.e(2413)]).then(n.bind(n,3125)),"@site/docs/features/pdisc.md",3125],"3f8b3b9b":[()=>Promise.all([n.e(8592),n.e(3816)]).then(n.bind(n,7412)),"@site/docs/usage/md/cunicu_signal.md",7412],"424a2e2a":[()=>Promise.all([n.e(8592),n.e(4902)]).then(n.bind(n,2937)),"@site/docs/usage/md/cunicu_selfupdate.md",2937],"4d2ed0aa":[()=>Promise.all([n.e(8592),n.e(9901)]).then(n.bind(n,1054)),"@site/docs/usage/md/cunicu_daemon.md",1054],"4dda60b2":[()=>Promise.all([n.e(8592),n.e(1634)]).then(n.bind(n,4767)),"@site/docs/features/pske.md",4767],"4e235874":[()=>Promise.all([n.e(8592),n.e(5586)]).then(n.bind(n,2682)),"@site/docs/usage/md/cunicu_completion_powershell.md",2682],57323276:[()=>Promise.all([n.e(8592),n.e(3408)]).then(n.bind(n,535)),"@site/docs/usage/md/cunicu_restart.md",535],"5795ae79":[()=>Promise.all([n.e(8592),n.e(3986)]).then(n.bind(n,5014)),"@site/docs/usage/md/cunicu_config_get.md",5014],"59efbc3d":[()=>Promise.all([n.e(8592),n.e(3829)]).then(n.bind(n,165)),"@site/blog/2022-09-08-welcome/index.md",165],"5ad9cedd":[()=>Promise.all([n.e(8592),n.e(5439)]).then(n.bind(n,4721)),"@site/docs/features/epdisc.md",4721],"5b0ec1e8":[()=>Promise.all([n.e(8592),n.e(1356)]).then(n.bind(n,5820)),"@site/docs/features/cfgsync.md",5820],"5c8c1c6c":[()=>Promise.all([n.e(8592),n.e(2029)]).then(n.bind(n,6151)),"@site/docs/usage/md/cunicu_completion_zsh.md",6151],"5d77abb4":[()=>n.e(7192).then(n.t.bind(n,3769,19)),"/home/runner/work/cunicu/cunicu/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"61cce660":[()=>Promise.all([n.e(8592),n.e(155)]).then(n.bind(n,1506)),"@site/docs/usage/md/cunicu_completion_fish.md",1506],66406991:[()=>n.e(110).then(n.t.bind(n,711,19)),"~blog/default/blog-tags-hello-039-list.json",711],"6875c492":[()=>Promise.all([n.e(532),n.e(8592),n.e(210),n.e(2529),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"68b1f9b5":[()=>Promise.all([n.e(8592),n.e(1503)]).then(n.bind(n,8473)),"@site/docs/usage/md/cunicu_wg_show.md",8473],"6d967f90":[()=>n.e(6757).then(n.t.bind(n,4469,19)),"/home/runner/work/cunicu/cunicu/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],"6dcaddc4":[()=>Promise.all([n.e(8592),n.e(7577)]).then(n.bind(n,6141)),"@site/docs/development/index.md",6141],"761a043d":[()=>Promise.all([n.e(8592),n.e(6909)]).then(n.bind(n,4279)),"@site/docs/usage/md/cunicu_self-update.md",4279],"76b3d27b":[()=>Promise.all([n.e(8592),n.e(2944)]).then(n.bind(n,4140)),"@site/docs/usage/md/cunicu_wg_genkey.md",4140],"7746b56b":[()=>Promise.all([n.e(8592),n.e(5015)]).then(n.bind(n,2154)),"@site/docs/usage/md/cunicu_version.md",2154],"7e492805":[()=>Promise.all([n.e(8592),n.e(9768)]).then(n.bind(n,4562)),"@site/docs/usage/md/cunicu_sync.md",4562],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"83dca9e6":[()=>Promise.all([n.e(8592),n.e(822)]).then(n.bind(n,656)),"@site/docs/usage/md/cunicu_completion_bash.md",656],"88554f04":[()=>Promise.all([n.e(8592),n.e(9211)]).then(n.bind(n,3139)),"@site/docs/features/hsync.md",3139],"8b35e876":[()=>Promise.all([n.e(8592),n.e(1495)]).then(n.bind(n,8647)),"@site/docs/features/autocfg.md",8647],"8d306639":[()=>Promise.all([n.e(8592),n.e(7833)]).then(n.bind(n,1677)),"@site/docs/features/hooks.md",1677],"8d5366bf":[()=>Promise.all([n.e(8592),n.e(7467)]).then(n.bind(n,161)),"@site/docs/usage/md/cunicu_completion.md",161],"8f24e72b":[()=>Promise.all([n.e(8592),n.e(5734)]).then(n.bind(n,5558)),"@site/docs/usage/md/cunicu_addresses.md",5558],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"93c4fd1c":[()=>Promise.all([n.e(8592),n.e(3289)]).then(n.bind(n,8249)),"@site/docs/usage/md/cunicu_stop.md",8249],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],"9ed00105":[()=>Promise.all([n.e(8592),n.e(9004)]).then(n.bind(n,9733)),"@site/docs/configuration.md",9733],"9fc6b440":[()=>Promise.all([n.e(8592),n.e(603)]).then(n.bind(n,4090)),"@site/docs/development/todo.md",4090],a35b52ca:[()=>n.e(2854).then(n.t.bind(n,5745,19)),"/home/runner/work/cunicu/cunicu/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(8592),n.e(210),n.e(2529),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],b88c5a7d:[()=>Promise.all([n.e(8592),n.e(6812)]).then(n.bind(n,4297)),"@site/docs/usage/md/cunicu_config.md",4297],c180861d:[()=>Promise.all([n.e(8592),n.e(3989)]).then(n.bind(n,2731)),"@site/docs/development/signaling.md",2731],c18e783d:[()=>Promise.all([n.e(8592),n.e(6435)]).then(n.bind(n,7746)),"@site/docs/features/rtsync.md",7746],c377a04b:[()=>Promise.all([n.e(8592),n.e(6971)]).then(n.bind(n,1269)),"@site/docs/index.md",1269],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,3261)),"@site/src/pages/index.js",3261],ccc49370:[()=>Promise.all([n.e(532),n.e(8592),n.e(210),n.e(2529),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],da55d1d1:[()=>Promise.all([n.e(8592),n.e(4398)]).then(n.bind(n,9009)),"@site/docs/usage/md/cunicu_monitor.md",9009],e432836c:[()=>Promise.all([n.e(8592),n.e(8929)]).then(n.bind(n,8236)),"@site/docs/usage/md/cunicu_wg_genpsk.md",8236],e5e144da:[()=>Promise.all([n.e(8592),n.e(7923)]).then(n.bind(n,5763)),"@site/docs/usage/md/cunicu_wg.md",5763],e6ccb422:[()=>Promise.all([n.e(8592),n.e(621)]).then(n.bind(n,7116)),"@site/docs/comparison.md",7116],ec078f8a:[()=>Promise.all([n.e(8592),n.e(6692)]).then(n.bind(n,3850)),"@site/docs/development/proxying.md",3850],ee91bca0:[()=>Promise.all([n.e(8592),n.e(9151)]).then(n.bind(n,2942)),"@site/docs/usage/md/cunicu_config_set.md",2942],f98fed9b:[()=>Promise.all([n.e(8592),n.e(6929)]).then(n.bind(n,3342)),"@site/docs/usage/md/cunicu.md",3342]};function u(e){let{error:t,retry:n,pastDelay:o}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):o?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const a=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(a);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(a));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let a=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{a=a[e]})),a[l[l.length-1]]=o}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,o.Z)({},i,n)))}})}const p=[{path:"/blog",component:f("/blog","6d4"),exact:!0},{path:"/blog/archive",component:f("/blog/archive","1e7"),exact:!0},{path:"/blog/tags",component:f("/blog/tags","996"),exact:!0},{path:"/blog/tags/hello",component:f("/blog/tags/hello","bce"),exact:!0},{path:"/blog/welcome",component:f("/blog/welcome","861"),exact:!0},{path:"/markdown-page",component:f("/markdown-page","f0d"),exact:!0},{path:"/docs",component:f("/docs","619"),routes:[{path:"/docs",component:f("/docs","f5d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/comparison",component:f("/docs/comparison","d6c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/configuration",component:f("/docs/configuration","725"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/design",component:f("/docs/design","e50"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development",component:f("/docs/development","a60"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/proxying",component:f("/docs/development/proxying","17b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/signaling",component:f("/docs/development/signaling","4ad"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/todo",component:f("/docs/development/todo","6f9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/autocfg",component:f("/docs/features/autocfg","e7b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/cfgsync",component:f("/docs/features/cfgsync","428"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/epdisc",component:f("/docs/features/epdisc","c76"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/hooks",component:f("/docs/features/hooks","bd7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/hsync",component:f("/docs/features/hsync","512"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/pdisc",component:f("/docs/features/pdisc","96b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/pske",component:f("/docs/features/pske","4fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/rtsync",component:f("/docs/features/rtsync","ca7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/installation",component:f("/docs/installation","001"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage",component:f("/docs/usage","428"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man",component:f("/docs/usage/man","d24"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/addresses",component:f("/docs/usage/man/addresses","057"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion",component:f("/docs/usage/man/completion","c9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/bash",component:f("/docs/usage/man/completion/bash","f40"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/fish",component:f("/docs/usage/man/completion/fish","9ed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/powershell",component:f("/docs/usage/man/completion/powershell","139"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/zsh",component:f("/docs/usage/man/completion/zsh","c5a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/config",component:f("/docs/usage/man/config","b74"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/config/get",component:f("/docs/usage/man/config/get","ae6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/config/set",component:f("/docs/usage/man/config/set","d5a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/daemon",component:f("/docs/usage/man/daemon","d8c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/monitor",component:f("/docs/usage/man/monitor","f48"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/restart",component:f("/docs/usage/man/restart","c9c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/self-update",component:f("/docs/usage/man/self-update","5a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/selfupdate",component:f("/docs/usage/man/selfupdate","634"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/signal",component:f("/docs/usage/man/signal","ad6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/status",component:f("/docs/usage/man/status","fe1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/stop",component:f("/docs/usage/man/stop","4f4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/sync",component:f("/docs/usage/man/sync","0a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/version",component:f("/docs/usage/man/version","7ca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg",component:f("/docs/usage/man/wg","208"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/genkey",component:f("/docs/usage/man/wg/genkey","f5d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/genpsk",component:f("/docs/usage/man/wg/genpsk","2c9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/pubkey",component:f("/docs/usage/man/wg/pubkey","862"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/show",component:f("/docs/usage/man/wg/show","7b7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/showconf",component:f("/docs/usage/man/wg/showconf","49d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/upgrade",component:f("/docs/usage/upgrade","7fe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/usecases",component:f("/docs/usage/usecases","d0b"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","c35"),exact:!0},{path:"*",component:f("*")}]},8965:(e,t,n)=>{var r,o;!function(){var a,i,l,s,u,c,d,f,p,m,h,g,v,b,y,w,k,E,S,_,x,O,P,C,T,I,A=function(e){var t=new A.Builder;return t.pipeline.add(A.trimmer,A.stopWordFilter,A.stemmer),t.searchPipeline.add(A.stemmer),e.call(t,t),t.build()};A.version="2.3.9",A.utils={},A.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),A.utils.asString=function(e){return null==e?"":e.toString()},A.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var o=n[r],a=e[o];if(Array.isArray(a))t[o]=a.slice();else{if("string"!=typeof a&&"number"!=typeof a&&"boolean"!=typeof a)throw new TypeError("clone is not deep and does not support nested objects");t[o]=a}}return t},A.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},A.FieldRef.joiner="/",A.FieldRef.fromString=function(e){var t=e.indexOf(A.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new A.FieldRef(r,n,e)},A.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+A.FieldRef.joiner+this.docRef),this._stringValue},A.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},A.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},A.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},A.Set.prototype.contains=function(e){return!!this.elements[e]},A.Set.prototype.intersect=function(e){var t,n,r,o=[];if(e===A.Set.complete)return this;if(e===A.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var a=0;a<r.length;a++){var i=r[a];i in n.elements&&o.push(i)}return new A.Set(o)},A.Set.prototype.union=function(e){return e===A.Set.complete?A.Set.complete:e===A.Set.empty?this:new A.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},A.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var o=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(o))},A.Token=function(e,t){this.str=e||"",this.metadata=t||{}},A.Token.prototype.toString=function(){return this.str},A.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},A.Token.prototype.clone=function(e){return e=e||function(e){return e},new A.Token(e(this.str,this.metadata),this.metadata)},A.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new A.Token(A.utils.asString(e).toLowerCase(),A.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,o=[],a=0,i=0;a<=r;a++){var l=a-i;if(n.charAt(a).match(A.tokenizer.separator)||a==r){if(l>0){var s=A.utils.clone(t)||{};s.position=[i,l],s.index=o.length,o.push(new A.Token(n.slice(i,a),s))}i=a+1}}return o},A.tokenizer.separator=/[\s\-]+/,A.Pipeline=function(){this._stack=[]},A.Pipeline.registeredFunctions=Object.create(null),A.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&A.utils.warn("Overwriting existing registered function: "+t),e.label=t,A.Pipeline.registeredFunctions[e.label]=e},A.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||A.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},A.Pipeline.load=function(e){var t=new A.Pipeline;return e.forEach((function(e){var n=A.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},A.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){A.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},A.Pipeline.prototype.after=function(e,t){A.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},A.Pipeline.prototype.before=function(e,t){A.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},A.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},A.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],o=[],a=0;a<e.length;a++){var i=r(e[a],a,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)o.push(i[l]);else o.push(i)}e=o}return e},A.Pipeline.prototype.runString=function(e,t){var n=new A.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},A.Pipeline.prototype.reset=function(){this._stack=[]},A.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return A.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},A.Vector=function(e){this._magnitude=0,this.elements=e||[]},A.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,o=Math.floor(r/2),a=this.elements[2*o];r>1&&(a<e&&(t=o),a>e&&(n=o),a!=e);)r=n-t,o=t+Math.floor(r/2),a=this.elements[2*o];return a==e||a>e?2*o:a<e?2*(o+1):void 0},A.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},A.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},A.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},A.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,o=n.length,a=r.length,i=0,l=0,s=0,u=0;s<o&&u<a;)(i=n[s])<(l=r[u])?s+=2:i>l?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},A.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},A.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},A.Vector.prototype.toJSON=function(){return this.elements},A.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},l={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},s="[aeiouy]",u="[^aeiou][^aeiouy]*",c=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),d=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),p=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),m=/^(.+?)(ss|i)es$/,h=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,v=/^(.+?)(ed|ing)$/,b=/.$/,y=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+u+s+"[^aeiouwxy]$"),E=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,_=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,x=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,O=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,C=/ll$/,T=new RegExp("^"+u+s+"[^aeiouwxy]$"),I=function(e){var t,n,r,o,a,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),a=h,(o=m).test(e)?e=e.replace(o,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),a=v,(o=g).test(e)){var I=o.exec(e);(o=c).test(I[1])&&(o=b,e=e.replace(o,""))}else a.test(e)&&(t=(I=a.exec(e))[1],(a=p).test(t)&&(s=w,u=k,(a=y).test(e=t)?e+="e":s.test(e)?(o=b,e=e.replace(o,"")):u.test(e)&&(e+="e")));return(o=E).test(e)&&(e=(t=(I=o.exec(e))[1])+"i"),(o=S).test(e)&&(t=(I=o.exec(e))[1],n=I[2],(o=c).test(t)&&(e=t+i[n])),(o=_).test(e)&&(t=(I=o.exec(e))[1],n=I[2],(o=c).test(t)&&(e=t+l[n])),a=O,(o=x).test(e)?(t=(I=o.exec(e))[1],(o=d).test(t)&&(e=t)):a.test(e)&&(t=(I=a.exec(e))[1]+I[2],(a=d).test(t)&&(e=t)),(o=P).test(e)&&(t=(I=o.exec(e))[1],a=f,s=T,((o=d).test(t)||a.test(t)&&!s.test(t))&&(e=t)),a=d,(o=C).test(e)&&a.test(e)&&(o=b,e=e.replace(o,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(I)}),A.Pipeline.registerFunction(A.stemmer,"stemmer"),A.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},A.stopWordFilter=A.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),A.Pipeline.registerFunction(A.stopWordFilter,"stopWordFilter"),A.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},A.Pipeline.registerFunction(A.trimmer,"trimmer"),A.TokenSet=function(){this.final=!1,this.edges={},this.id=A.TokenSet._nextId,A.TokenSet._nextId+=1},A.TokenSet._nextId=1,A.TokenSet.fromArray=function(e){for(var t=new A.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},A.TokenSet.fromClause=function(e){return"editDistance"in e?A.TokenSet.fromFuzzyString(e.term,e.editDistance):A.TokenSet.fromString(e.term)},A.TokenSet.fromFuzzyString=function(e,t){for(var n=new A.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var o=r.pop();if(o.str.length>0){var a,i=o.str.charAt(0);i in o.node.edges?a=o.node.edges[i]:(a=new A.TokenSet,o.node.edges[i]=a),1==o.str.length&&(a.final=!0),r.push({node:a,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var l=o.node.edges["*"];else{l=new A.TokenSet;o.node.edges["*"]=l}if(0==o.str.length&&(l.final=!0),r.push({node:l,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&r.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var s=o.node.edges["*"];else{s=new A.TokenSet;o.node.edges["*"]=s}1==o.str.length&&(s.final=!0),r.push({node:s,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var u,c=o.str.charAt(0),d=o.str.charAt(1);d in o.node.edges?u=o.node.edges[d]:(u=new A.TokenSet,o.node.edges[d]=u),1==o.str.length&&(u.final=!0),r.push({node:u,editsRemaining:o.editsRemaining-1,str:c+o.str.slice(2)})}}}return n},A.TokenSet.fromString=function(e){for(var t=new A.TokenSet,n=t,r=0,o=e.length;r<o;r++){var a=e[r],i=r==o-1;if("*"==a)t.edges[a]=t,t.final=i;else{var l=new A.TokenSet;l.final=i,t.edges[a]=l,t=l}}return n},A.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),o=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var a=0;a<o;a++){var i=r[a];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},A.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var o=t[r];e=e+o+this.edges[o].id}return e},A.TokenSet.prototype.intersect=function(e){for(var t=new A.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var o=Object.keys(n.qNode.edges),a=o.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<a;s++)for(var u=o[s],c=0;c<l;c++){var d=i[c];if(d==u||"*"==u){var f=n.node.edges[d],p=n.qNode.edges[u],m=f.final&&p.final,h=void 0;d in n.output.edges?(h=n.output.edges[d]).final=h.final||m:((h=new A.TokenSet).final=m,n.output.edges[d]=h),r.push({qNode:p,output:h,node:f})}}}return t},A.TokenSet.Builder=function(){this.previousWord="",this.root=new A.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},A.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var o=new A.TokenSet,a=e[r];t.edges[a]=o,this.uncheckedNodes.push({parent:t,char:a,child:o}),t=o}t.final=!0,this.previousWord=e},A.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},A.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},A.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},A.Index.prototype.search=function(e){return this.query((function(t){new A.QueryParser(e,t).parse()}))},A.Index.prototype.query=function(e){for(var t=new A.Query(this.fields),n=Object.create(null),r=Object.create(null),o=Object.create(null),a=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new A.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=A.Set.empty;u=s.usePipeline?this.pipeline.runString(s.term,{fields:s.fields}):[s.term];for(var d=0;d<u.length;d++){var f=u[d];s.term=f;var p=A.TokenSet.fromClause(s),m=this.tokenSet.intersect(p).toArray();if(0===m.length&&s.presence===A.Query.presence.REQUIRED){for(var h=0;h<s.fields.length;h++){a[L=s.fields[h]]=A.Set.empty}break}for(var g=0;g<m.length;g++){var v=m[g],b=this.invertedIndex[v],y=b._index;for(h=0;h<s.fields.length;h++){var w=b[L=s.fields[h]],k=Object.keys(w),E=v+"/"+L,S=new A.Set(k);if(s.presence==A.Query.presence.REQUIRED&&(c=c.union(S),void 0===a[L]&&(a[L]=A.Set.complete)),s.presence!=A.Query.presence.PROHIBITED){if(r[L].upsert(y,s.boost,(function(e,t){return e+t})),!o[E]){for(var _=0;_<k.length;_++){var x,O=k[_],P=new A.FieldRef(O,L),C=w[O];void 0===(x=n[P])?n[P]=new A.MatchData(v,L,C):x.add(v,L,C)}o[E]=!0}}else void 0===i[L]&&(i[L]=A.Set.empty),i[L]=i[L].union(S)}}}if(s.presence===A.Query.presence.REQUIRED)for(h=0;h<s.fields.length;h++){a[L=s.fields[h]]=a[L].intersect(c)}}var T=A.Set.complete,I=A.Set.empty;for(l=0;l<this.fields.length;l++){var L;a[L=this.fields[l]]&&(T=T.intersect(a[L])),i[L]&&(I=I.union(i[L]))}var N=Object.keys(n),R=[],D=Object.create(null);if(t.isNegated()){N=Object.keys(this.fieldVectors);for(l=0;l<N.length;l++){P=N[l];var j=A.FieldRef.fromString(P);n[P]=new A.MatchData}}for(l=0;l<N.length;l++){var M=(j=A.FieldRef.fromString(N[l])).docRef;if(T.contains(M)&&!I.contains(M)){var F,B=this.fieldVectors[j],z=r[j.fieldName].similarity(B);if(void 0!==(F=D[M]))F.score+=z,F.matchData.combine(n[j]);else{var U={ref:M,score:z,matchData:n[j]};D[M]=U,R.push(U)}}}return R.sort((function(e,t){return t.score-e.score}))},A.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:A.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},A.Index.load=function(e){var t={},n={},r=e.fieldVectors,o=Object.create(null),a=e.invertedIndex,i=new A.TokenSet.Builder,l=A.Pipeline.load(e.pipeline);e.version!=A.version&&A.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+A.version+"' does not match serialized index '"+e.version+"'");for(var s=0;s<r.length;s++){var u=(d=r[s])[0],c=d[1];n[u]=new A.Vector(c)}for(s=0;s<a.length;s++){var d,f=(d=a[s])[0],p=d[1];i.insert(f),o[f]=p}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=o,t.tokenSet=i.root,t.pipeline=l,new A.Index(t)},A.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=A.tokenizer,this.pipeline=new A.Pipeline,this.searchPipeline=new A.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},A.Builder.prototype.ref=function(e){this._ref=e},A.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},A.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},A.Builder.prototype.k1=function(e){this._k1=e},A.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var o=0;o<r.length;o++){var a=r[o],i=this._fields[a].extractor,l=this._fields[a].isLiteral??!1,s=i?i(e):e[a],u=l?[s]:this.tokenizer(s,{fields:[a]}),c=l?u:this.pipeline.run(u),d=new A.FieldRef(n,a),f=Object.create(null);this.fieldTermFrequencies[d]=f,this.fieldLengths[d]=0,this.fieldLengths[d]+=c.length;for(var p=0;p<c.length;p++){var m=c[p];if(null==f[m]&&(f[m]=0),f[m]+=1,null==this.invertedIndex[m]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var g=0;g<r.length;g++)h[r[g]]=Object.create(null);this.invertedIndex[m]=h}null==this.invertedIndex[m][a][n]&&(this.invertedIndex[m][a][n]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var b=this.metadataWhitelist[v],y=m.metadata[b];null==this.invertedIndex[m][a][n][b]&&(this.invertedIndex[m][a][n][b]=[]),this.invertedIndex[m][a][n][b].push(y)}}}},A.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},o=0;o<t;o++){var a=A.FieldRef.fromString(e[o]),i=a.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[a]}var l=Object.keys(this._fields);for(o=0;o<l.length;o++){var s=l[o];n[s]=n[s]/r[s]}this.averageFieldLength=n},A.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),o=0;o<n;o++){for(var a=A.FieldRef.fromString(t[o]),i=a.fieldName,l=this.fieldLengths[a],s=new A.Vector,u=this.fieldTermFrequencies[a],c=Object.keys(u),d=c.length,f=this._fields[i].boost||1,p=this._documents[a.docRef].boost||1,m=0;m<d;m++){var h,g,v,b=c[m],y=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(h=A.idf(this.invertedIndex[b],this.documentCount),r[b]=h):h=r[b],g=h*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[i]))+y),g*=f,g*=p,v=Math.round(1e3*g)/1e3,s.insert(w,v)}e[a]=s}this.fieldVectors=e},A.Builder.prototype.createTokenSet=function(){this.tokenSet=A.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},A.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new A.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},A.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},A.MatchData=function(e,t,n){for(var r=Object.create(null),o=Object.keys(n||{}),a=0;a<o.length;a++){var i=o[a];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},A.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],o=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var a=0;a<o.length;a++){var i=o[a],l=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var s=0;s<l.length;s++){var u=l[s];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},A.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),o=0;o<r.length;o++){var a=r[o];a in this.metadata[e][t]?this.metadata[e][t][a]=this.metadata[e][t][a].concat(n[a]):this.metadata[e][t][a]=n[a]}else this.metadata[e][t]=n},A.Query=function(e){this.clauses=[],this.allFields=e},A.Query.wildcard=new String("*"),A.Query.wildcard.NONE=0,A.Query.wildcard.LEADING=1,A.Query.wildcard.TRAILING=2,A.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},A.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=A.Query.wildcard.NONE),e.wildcard&A.Query.wildcard.LEADING&&e.term.charAt(0)!=A.Query.wildcard&&(e.term="*"+e.term),e.wildcard&A.Query.wildcard.TRAILING&&e.term.slice(-1)!=A.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=A.Query.presence.OPTIONAL),this.clauses.push(e),this},A.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=A.Query.presence.PROHIBITED)return!1;return!0},A.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,A.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},A.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},A.QueryParseError.prototype=new Error,A.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},A.QueryLexer.prototype.run=function(){for(var e=A.QueryLexer.lexText;e;)e=e(this)},A.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},A.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},A.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},A.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return A.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},A.QueryLexer.prototype.width=function(){return this.pos-this.start},A.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},A.QueryLexer.prototype.backup=function(){this.pos-=1},A.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=A.QueryLexer.EOS&&this.backup()},A.QueryLexer.prototype.more=function(){return this.pos<this.length},A.QueryLexer.EOS="EOS",A.QueryLexer.FIELD="FIELD",A.QueryLexer.TERM="TERM",A.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",A.QueryLexer.BOOST="BOOST",A.QueryLexer.PRESENCE="PRESENCE",A.QueryLexer.lexField=function(e){return e.backup(),e.emit(A.QueryLexer.FIELD),e.ignore(),A.QueryLexer.lexText},A.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(A.QueryLexer.TERM)),e.ignore(),e.more())return A.QueryLexer.lexText},A.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(A.QueryLexer.EDIT_DISTANCE),A.QueryLexer.lexText},A.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(A.QueryLexer.BOOST),A.QueryLexer.lexText},A.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(A.QueryLexer.TERM)},A.QueryLexer.termSeparator=A.tokenizer.separator,A.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==A.QueryLexer.EOS)return A.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return A.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(A.QueryLexer.TERM),A.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(A.QueryLexer.TERM),A.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(A.QueryLexer.PRESENCE),A.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(A.QueryLexer.PRESENCE),A.QueryLexer.lexText;if(t.match(A.QueryLexer.termSeparator))return A.QueryLexer.lexTerm}else e.escapeCharacter()}},A.QueryParser=function(e,t){this.lexer=new A.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},A.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=A.QueryParser.parseClause;e;)e=e(this);return this.query},A.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},A.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},A.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},A.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case A.QueryLexer.PRESENCE:return A.QueryParser.parsePresence;case A.QueryLexer.FIELD:return A.QueryParser.parseField;case A.QueryLexer.TERM:return A.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new A.QueryParseError(n,t.start,t.end)}},A.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=A.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=A.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new A.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new A.QueryParseError(n,t.start,t.end)}switch(r.type){case A.QueryLexer.FIELD:return A.QueryParser.parseField;case A.QueryLexer.TERM:return A.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new A.QueryParseError(n,r.start,r.end)}}},A.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new A.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var o=e.peekLexeme();if(null==o){r="expecting term, found nothing";throw new A.QueryParseError(r,t.start,t.end)}if(o.type===A.QueryLexer.TERM)return A.QueryParser.parseTerm;r="expecting term, found '"+o.type+"'";throw new A.QueryParseError(r,o.start,o.end)}},A.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case A.QueryLexer.TERM:return e.nextClause(),A.QueryParser.parseTerm;case A.QueryLexer.FIELD:return e.nextClause(),A.QueryParser.parseField;case A.QueryLexer.EDIT_DISTANCE:return A.QueryParser.parseEditDistance;case A.QueryLexer.BOOST:return A.QueryParser.parseBoost;case A.QueryLexer.PRESENCE:return e.nextClause(),A.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new A.QueryParseError(r,n.start,n.end)}else e.nextClause()}},A.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new A.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case A.QueryLexer.TERM:return e.nextClause(),A.QueryParser.parseTerm;case A.QueryLexer.FIELD:return e.nextClause(),A.QueryParser.parseField;case A.QueryLexer.EDIT_DISTANCE:return A.QueryParser.parseEditDistance;case A.QueryLexer.BOOST:return A.QueryParser.parseBoost;case A.QueryLexer.PRESENCE:return e.nextClause(),A.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new A.QueryParseError(r,o.start,o.end)}else e.nextClause()}},A.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new A.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case A.QueryLexer.TERM:return e.nextClause(),A.QueryParser.parseTerm;case A.QueryLexer.FIELD:return e.nextClause(),A.QueryParser.parseField;case A.QueryLexer.EDIT_DISTANCE:return A.QueryParser.parseEditDistance;case A.QueryLexer.BOOST:return A.QueryParser.parseBoost;case A.QueryLexer.PRESENCE:return e.nextClause(),A.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new A.QueryParseError(r,o.start,o.end)}else e.nextClause()}},void 0===(o="function"==typeof(r=function(){return A})?r.call(t,n,t,e):r)||(e.exports=o)}()},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>a});var r=n(7294);const o=r.createContext(!1);function a(e){let{children:t}=e;const[n,a]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{a(!0)}),[]),r.createElement(o.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),o=n(3935),a=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295),n(2198)];var u=n(723),c=n(6775),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(5742),h=n(2263),g=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(197);function S(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:o}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:o})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),o=function(){const{siteConfig:{url:e}}=(0,h.Z)(),{pathname:t}=(0,c.TH)();return e+(0,g.Z)(t)}(),a=t?`${n}${t}`:o;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:a}),r.createElement("link",{rel:"canonical",href:a}))}function x(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(_,null),r.createElement(S,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const O=new Map;function P(e){if(O.has(e.pathname))return{...e,pathname:O.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return O.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return O.set(e.pathname,t),{...e,pathname:t}}var C=n(8934),T=n(8940);function I(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const o=s.map((t=>{var r;const o=(null==(r=t.default)?void 0:r[e])??t[e];return null==o?void 0:o(...n)}));return()=>o.forEach((e=>null==e?void 0:e()))}const A=function(e){let{children:t,location:n,previousLocation:o}=e;return(0,r.useLayoutEffect)((()=>{o!==n&&(o&&function(e){const{hash:t}=e;if(t){const e=decodeURIComponent(t.substring(1)),n=document.getElementById(e);null==n||n.scrollIntoView()}else window.scrollTo(0,0)}(n),I("onRouteDidUpdate",{previousLocation:o,location:n}))}),[o,n]),t};function L(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class N extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?I("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),L(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(A,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const R=N,D="docusaurus-base-url-issue-banner-container",j="docusaurus-base-url-issue-banner-suggestion-container",M="__DOCUSAURUS_INSERT_BASEURL_BANNER";function F(e){return`\nwindow['${M}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${M}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${j}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${j}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function B(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[M]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,F(e))),r.createElement("div",{id:D}))}function z(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(B,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:o,localeConfigs:a}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=a[o];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var $=n(4763);function q(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement($.Z,null,r.createElement(T.M,null,r.createElement(C.t,null,r.createElement(f,null,r.createElement(U,null),r.createElement(x,null),r.createElement(z,null),r.createElement(R,{location:P(t)},e)))))}var H=n(6887);const G=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{var r;if("undefined"==typeof document)return void n();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),o.onload=()=>t(),o.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??(null==(r=document.getElementsByName("script")[0])?void 0:r.parentNode);null==a||a.appendChild(o)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Q=n(9670);const Z=new Set,V=new Set,W=()=>{var e,t;return(null==(e=navigator.connection)?void 0:e.effectiveType.includes("2g"))||(null==(t=navigator.connection)?void 0:t.saveData)},K={prefetch(e){if(!(e=>!W()&&!V.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(H).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!W()&&!V.has(e))(e)&&(V.add(e),L(e))},Y=Object.freeze(K);if(l.Z.canUseDOM){window.docusaurus=Y;const e=o.hydrate;L(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(a.VK,null,r.createElement(q,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),o=n(6809);const a=JSON.parse('{"@cmfcmf/docusaurus-search-local":{"default":{"titleBoost":5,"contentBoost":1,"tagsBoost":3,"parentCategoriesBoost":2,"indexDocSidebarParentCategories":0,"maxSearchResults":8}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"index","docs":[{"id":"comparison","path":"/docs/comparison","sidebar":"tutorialSidebar"},{"id":"configuration","path":"/docs/configuration","sidebar":"tutorialSidebar"},{"id":"design","path":"/docs/design","sidebar":"tutorialSidebar"},{"id":"development/index","path":"/docs/development/","sidebar":"tutorialSidebar"},{"id":"development/proxying","path":"/docs/development/proxying","sidebar":"tutorialSidebar"},{"id":"development/signaling","path":"/docs/development/signaling","sidebar":"tutorialSidebar"},{"id":"development/todo","path":"/docs/development/todo","sidebar":"tutorialSidebar"},{"id":"features/autocfg","path":"/docs/features/autocfg","sidebar":"tutorialSidebar"},{"id":"features/cfgsync","path":"/docs/features/cfgsync","sidebar":"tutorialSidebar"},{"id":"features/epdisc","path":"/docs/features/epdisc","sidebar":"tutorialSidebar"},{"id":"features/hooks","path":"/docs/features/hooks","sidebar":"tutorialSidebar"},{"id":"features/hsync","path":"/docs/features/hsync","sidebar":"tutorialSidebar"},{"id":"features/pdisc","path":"/docs/features/pdisc","sidebar":"tutorialSidebar"},{"id":"features/pske","path":"/docs/features/pske","sidebar":"tutorialSidebar"},{"id":"features/rtsync","path":"/docs/features/rtsync","sidebar":"tutorialSidebar"},{"id":"index","path":"/docs/","sidebar":"tutorialSidebar"},{"id":"installation","path":"/docs/installation","sidebar":"tutorialSidebar"},{"id":"usage/index","path":"/docs/usage/","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu","path":"/docs/usage/man/","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_addresses","path":"/docs/usage/man/addresses","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion","path":"/docs/usage/man/completion","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_bash","path":"/docs/usage/man/completion/bash","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_fish","path":"/docs/usage/man/completion/fish","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_powershell","path":"/docs/usage/man/completion/powershell","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_zsh","path":"/docs/usage/man/completion/zsh","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_config","path":"/docs/usage/man/config","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_config_get","path":"/docs/usage/man/config/get","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_config_set","path":"/docs/usage/man/config/set","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_daemon","path":"/docs/usage/man/daemon","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_monitor","path":"/docs/usage/man/monitor","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_restart","path":"/docs/usage/man/restart","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_self-update","path":"/docs/usage/man/self-update","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_selfupdate","path":"/docs/usage/man/selfupdate","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_signal","path":"/docs/usage/man/signal","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_status","path":"/docs/usage/man/status","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_stop","path":"/docs/usage/man/stop","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_sync","path":"/docs/usage/man/sync","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_version","path":"/docs/usage/man/version","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg","path":"/docs/usage/man/wg","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_genkey","path":"/docs/usage/man/wg/genkey","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_genpsk","path":"/docs/usage/man/wg/genpsk","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_pubkey","path":"/docs/usage/man/wg/pubkey","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_show","path":"/docs/usage/man/wg/show","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_showconf","path":"/docs/usage/man/wg/showconf","sidebar":"tutorialSidebar"},{"id":"usage/upgrade","path":"/docs/usage/upgrade","sidebar":"tutorialSidebar"},{"id":"usage/usecases","path":"/docs/usage/usecases","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/","label":"index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.1.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.1.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.1.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.1.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.1.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.1.0"},"@cmfcmf/docusaurus-search-local":{"type":"package","name":"@cmfcmf/docusaurus-search-local","version":"0.11.0"},"docusaurus-plugin-matomo":{"type":"package","name":"@gabrielcsapo/docusaurus-plugin-matomo","version":"0.1.2"},"webpack-configuration-plugin":{"type":"local"}}}'),u={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),o=n(412),a=n(5742),i=n(4931);function l(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function s(e){let{error:t,tryAgain:n}=e;return r.createElement(c,{fallback:()=>r.createElement(l,{error:t,tryAgain:n})},r.createElement(a.Z,null,r.createElement("title",null,"Page Error")),r.createElement(i.Z,null,r.createElement(l,{error:t,tryAgain:n})))}const u=e=>r.createElement(s,e);class c extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??u)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(405);function a(e){return r.createElement(o.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),o=n(7294),a=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=o.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){var n;let{isNavLink:f,to:p,href:m,activeClassName:h,isActive:g,"data-noBrokenLinkCheck":v,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:w,baseUrl:k}}=(0,l.Z)(),{withBaseUrl:E}=(0,d.C)(),S=(0,o.useContext)(c),_=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,(()=>_.current));const x=p||m;const O=(0,s.Z)(x),P=null==x?void 0:x.replace("pathname://","");let C=void 0!==P?(T=P,b&&(e=>e.startsWith("/"))(T)?E(T):T):void 0;var T;C&&O&&(C=(0,i.applyTrailingSlash)(C,{trailingSlash:w,baseUrl:k}));const I=(0,o.useRef)(!1),A=f?a.OL:a.rU,L=u.Z.canUseIntersectionObserver,N=(0,o.useRef)();(0,o.useEffect)((()=>(!L&&O&&null!=C&&window.docusaurus.prefetch(C),()=>{L&&N.current&&N.current.disconnect()})),[N,C,L,O]);const R=(null==(n=C)?void 0:n.startsWith("#"))??!1,D=!C||!O||R;return D||v||S.collectLink(C),D?o.createElement("a",(0,r.Z)({ref:_,href:C},x&&!O&&{target:"_blank",rel:"noopener noreferrer"},y)):o.createElement(A,(0,r.Z)({},y,{onMouseEnter:()=>{I.current||null==C||(window.docusaurus.preload(C),I.current=!0)},innerRef:e=>{_.current=e,L&&e&&O&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=C&&window.docusaurus.prefetch(C))}))})),N.current.observe(e))},to:C},f&&{isActive:g,activeClassName:h}))}const p=o.forwardRef(f)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=null==t?void 0:t[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var a=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return a[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:a}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,o(l,a))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>a,Z:()=>i});var r=n(2263),o=n(3919);function a(){const{siteConfig:{baseUrl:e,url:t}}=(0,r.Z)();return{withBaseUrl:(n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)}}function i(e,t){void 0===t&&(t={});const{withBaseUrl:n}=a();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>a,eZ:()=>i});var r=n(2263),o=n(9935);function a(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=a(e),i=null==r?void 0:r[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});function r(e){const t={};return function e(n,r){Object.entries(n).forEach((n=>{let[o,a]=n;const i=r?`${r}.${o}`:o;var l;"object"==typeof(l=a)&&l&&Object.keys(l).length>0?e(a,i):t[i]=a}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>a});var r=n(7294);const o=r.createContext(null);function a(e){let{children:t,value:n}=e;const a=r.useContext(o),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...null==n?void 0:n.data};return{plugin:t.plugin,data:r}}({parent:a,value:n})),[a,n]);return r.createElement(o.Provider,{value:i},t)}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>d,WS:()=>f,_r:()=>u,Jo:()=>g,zh:()=>c,yW:()=>m,gB:()=>p});var r=n(6775),o=n(8084);const a=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=a(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function l(e,t){const n=i(e,t),o=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const s={},u=()=>(0,o.OD)("docusaurus-plugin-content-docs")??s,c=e=>(0,o.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function d(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){void 0===e&&(e={});const t=d(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:i(t.pluginData,n)}}function p(e){return c(e).versions}function m(e){const t=c(e);return a(t)}function h(e){const t=c(e),{pathname:n}=(0,r.TH)();return l(t,n)}function g(e){const t=c(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=a(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const o="iconExternalLink_nPIU";function a(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:o},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},4931:(e,t,n)=>{"use strict";n.d(t,{Z:()=>oa});var r=n(7294),o=n(6010),a=n(4763),i=n(1944),l=n(5281),s=n(9727),u=n(5999),c=n(6775),d=n(5936);function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}const p="skipToContent_fXgn";function m(){const{containerRef:e,handleSkip:t}=function(){const e=(0,r.useRef)(null),{action:t}=(0,c.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.querySelector(`.${l.k.wrapper.main}`);t&&f(t)}),[]);return(0,d.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,handleSkip:n}}();return r.createElement("div",{ref:e,role:"region","aria-label":(0,u.I)({id:"theme.common.skipToMainContent"})},r.createElement("a",{href:"#",className:p,onClick:t},r.createElement(u.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))}var h=n(6668),g=n(9689),v=n(7462);function b(e){let{width:t=21,height:n=21,color:o="currentColor",strokeWidth:a=1.2,className:i,...l}=e;return r.createElement("svg",(0,v.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:o,strokeWidth:a},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const y="closeButton_CVFx";function w(e){return r.createElement("button",(0,v.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,o.Z)("clean-btn close",y,e.className)}),r.createElement(b,{width:14,height:14,strokeWidth:3.1}))}const k="content_knG7";function E(e){const{announcementBar:t}=(0,h.L)(),{content:n}=t;return r.createElement("div",(0,v.Z)({},e,{className:(0,o.Z)(k,e.className),dangerouslySetInnerHTML:{__html:n}}))}const S="announcementBar_mb4j",_="announcementBarPlaceholder_vyr4",x="announcementBarClose_gvF7",O="announcementBarContent_xLdY";function P(){const{announcementBar:e}=(0,h.L)(),{isActive:t,close:n}=(0,g.nT)();if(!t)return null;const{backgroundColor:o,textColor:a,isCloseable:i}=e;return r.createElement("div",{className:S,style:{backgroundColor:o,color:a},role:"banner"},i&&r.createElement("div",{className:_}),r.createElement(E,{className:O}),i&&r.createElement(w,{onClick:n,className:x}))}var C=n(2961),T=n(2466);var I=n(902),A=n(3102);const L=r.createContext(null);function N(e){let{children:t}=e;const n=function(){const e=(0,C.e)(),t=(0,A.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,I.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return r.createElement(L.Provider,{value:n},t)}function R(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function D(){const e=(0,r.useContext)(L);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,A.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:R(a)})),[o,a,t])}function j(e){let{header:t,primaryMenu:n,secondaryMenu:a}=e;const{shown:i}=D();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},a)))}var M=n(2949),F=n(2389);function B(e){return r.createElement("svg",(0,v.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function z(e){return r.createElement("svg",(0,v.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function $(e){let{className:t,value:n,onChange:a}=e;const i=(0,F.Z)(),l=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===n?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,o.Z)(U.toggle,t)},r.createElement("button",{className:(0,o.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled),type:"button",onClick:()=>a("dark"===n?"light":"dark"),disabled:!i,title:l,"aria-label":l},r.createElement(B,{className:(0,o.Z)(U.toggleIcon,U.lightToggleIcon)}),r.createElement(z,{className:(0,o.Z)(U.toggleIcon,U.darkToggleIcon)})))}const q=r.memo($);function H(e){let{className:t}=e;const n=(0,h.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,M.I)();return n?null:r.createElement(q,{className:t,value:o,onChange:a})}var G=n(1327);function Q(){return r.createElement(G.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Z(){const e=(0,C.e)();return r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(b,{color:"var(--ifm-color-emphasis-600)"}))}function V(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Q,null),r.createElement(H,{className:"margin-right--md"}),r.createElement(Z,null))}var W=n(9960),K=n(4996),Y=n(3919);function X(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var J=n(9471);function ee(e){let{activeBasePath:t,activeBaseRegex:n,to:o,href:a,label:i,html:l,isDropdownLink:s,prependBaseUrlToHref:u,...c}=e;const d=(0,K.Z)(o),f=(0,K.Z)(t),p=(0,K.Z)(a,{forcePrependBaseUrl:!0}),m=i&&a&&!(0,Y.Z)(a),h=l?{dangerouslySetInnerHTML:{__html:l}}:{children:r.createElement(r.Fragment,null,i,m&&r.createElement(J.Z,s&&{width:12,height:12}))};return a?r.createElement(W.Z,(0,v.Z)({href:u?p:a},c,h)):r.createElement(W.Z,(0,v.Z)({to:d,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?X(n,t.pathname):t.pathname.startsWith(f)},c,h))}function te(e){let{className:t,isDropdownItem:n=!1,...a}=e;const i=r.createElement(ee,(0,v.Z)({className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},a));return n?r.createElement("li",null,i):i}function ne(e){let{className:t,isDropdownItem:n,...a}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ee,(0,v.Z)({className:(0,o.Z)("menu__link",t)},a)))}function re(e){let{mobile:t=!1,position:n,...o}=e;const a=t?ne:te;return r.createElement(a,(0,v.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var oe=n(6043),ae=n(8596),ie=n(2263);function le(e,t){return e.some((e=>function(e,t){return!!(0,ae.Mg)(e.to,t)||!!X(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function se(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,c]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&c(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[s]),r.createElement("div",{ref:s,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ee,(0,v.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,o.Z)("navbar__link",a)},l,{onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),c(!u))}}),l.children??l.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(yo,(0,v.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),c(!1);const t=s.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function ue(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const s=function(){const{siteConfig:{baseUrl:e}}=(0,ie.Z)(),{pathname:t}=(0,c.TH)();return t.replace(e,"/")}(),u=le(t,s),{collapsed:d,toggleCollapsed:f,setCollapsed:p}=(0,oe.u)({initialState:()=>!u});return(0,r.useEffect)((()=>{u&&p(!u)}),[s,u,p]),r.createElement("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":d})},r.createElement(ee,(0,v.Z)({role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},l,{onClick:e=>{e.preventDefault(),f()}}),l.children??l.label),r.createElement(oe.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:d},t.map(((e,t)=>r.createElement(yo,(0,v.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function ce(e){let{mobile:t=!1,...n}=e;const o=t?ue:se;return r.createElement(o,n)}var de=n(4711);function fe(e){let{width:t=20,height:n=20,...o}=e;return r.createElement("svg",(0,v.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},o),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const pe="iconLanguage_nlXk";var me=n(3935);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ge(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ve(e,t,n){var r,o=t.initialState;return{getState:function(){return o},dispatch:function(r,a){var i=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){ge(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},o);o=e(o,{type:r,props:t,payload:a}),n({state:o,prevState:i})},pendingRequests:(r=[],{add:function(e){return r.push(e),e.finally((function(){r=r.filter((function(t){return t!==e}))}))},cancelAll:function(){r.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===r.length}})}}function be(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function we(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(n),!0).forEach((function(t){ke(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var Se=0;function _e(){return"autocomplete-".concat(Se++)}var xe=function(){};function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ce(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){Pe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:xe},e);return Promise.resolve(t)})))}))}function Te(e){return function(e){if(Array.isArray(e))return Ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ie(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ie(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){Ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function De(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Re(Object(n),!0).forEach((function(t){je(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Me(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Me(Object(n),!0).forEach((function(t){Be(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Me(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ze(e){return function(e){if(Array.isArray(e))return Ue(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ue(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ue(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function qe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach((function(t){He(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function He(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ge(e){return Boolean(e.execute)}function Qe(e,t){return n=e,Boolean(null==n?void 0:n.execute)?qe(qe({},e),{},{requests:e.queries.map((function(n){return{query:n,sourceId:t,transformResponse:e.transformResponse}}))}):{items:e,sourceId:t};var n}function Ze(e){var t=e.reduce((function(e,t){if(!Ge(t))return e.push(t),e;var n=t.searchClient,r=t.execute,o=t.requesterId,a=t.requests,i=e.find((function(e){return Ge(t)&&Ge(e)&&e.searchClient===n&&Boolean(o)&&e.requesterId===o}));if(i){var l;(l=i.items).push.apply(l,ze(a))}else{var s={execute:r,requesterId:o,items:a,searchClient:n};e.push(s)}return e}),[]).map((function(e){if(!Ge(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return be(e)}))}function Ve(e,t){return t.map((function(t){var n=e.filter((function(e){return e.sourceId===t.sourceId})),r=n.map((function(e){return e.items})),o=n[0].transformResponse,a=o?o(function(e){var t=e.map((function(e){var t;return Fe(Fe({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return Fe(Fe({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(r)):r;return Array.isArray(a),a.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:a}}))}function We(e,t){var n=t;return{then:function(t,r){return We(e.then(Xe(t,n,e),Xe(r,n,e)),n)},catch:function(t){return We(e.catch(Xe(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),We(e.finally(Xe(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function Ke(e){return We(new Promise((function(t,n){return e(t,n)})),{isCanceled:!1,onCancelList:[]})}function Ye(e){return We(e,{isCanceled:!1,onCancelList:[]})}function Xe(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function Je(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,a=0;!1===r;){var i=t.collections[o];if(i===n){r=!0;break}a+=i.items.length,o++}return t.activeItemId-a}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}Ke.resolve=function(e){return Ye(Promise.resolve(e))},Ke.reject=function(e){return Ye(Promise.reject(e))};var et=["event","nextState","props","query","refresh","store"];function tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tt(Object(n),!0).forEach((function(t){rt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function rt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ot(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var at,it,lt,st=null,ut=(at=-1,it=-1,lt=void 0,function(e){var t=++at;return Promise.resolve(e).then((function(e){return lt&&t<it?lt:(it=t,lt=e,e)}))});function ct(e){var t=e.event,n=e.nextState,r=void 0===n?{}:n,o=e.props,a=e.query,i=e.refresh,l=e.store,s=ot(e,et);st&&o.environment.clearTimeout(st);var u=s.setCollections,c=s.setIsOpen,d=s.setQuery,f=s.setActiveItemId,p=s.setStatus;if(d(a),f(o.defaultActiveItemId),!a&&!1===o.openOnFocus){var m,h=l.getState().collections.map((function(e){return nt(nt({},e),{},{items:[]})}));p("idle"),u(h),c(null!==(m=r.isOpen)&&void 0!==m?m:o.shouldPanelOpen({state:l.getState()}));var g=Ye(ut(h).then((function(){return Promise.resolve()})));return l.pendingRequests.add(g)}p("loading"),st=o.environment.setTimeout((function(){p("stalled")}),o.stallThreshold);var v=Ye(ut(o.getSources(nt({query:a,refresh:i,state:l.getState()},s)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(nt({query:a,refresh:i,state:l.getState()},s))).then((function(t){return Qe(t,e.sourceId)}))}))).then(Ze).then((function(t){return Ve(t,e)})).then((function(e){return function(e){var t=e.collections,n=e.props,r=e.state,o=t.reduce((function(e,t){return De(De({},e),{},je({},t.source.sourceId,De(De({},t.source),{},{getItems:function(){return be(t.items)}})))}),{});return be(n.reshape({sources:Object.values(o),sourcesBySourceId:o,state:r})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:l.getState()})}))})))).then((function(e){var n;p("idle"),u(e);var d=o.shouldPanelOpen({state:l.getState()});c(null!==(n=r.isOpen)&&void 0!==n?n:o.openOnFocus&&!a&&d||d);var f=Je(l.getState());if(null!==l.getState().activeItemId&&f){var m=f.item,h=f.itemInputValue,g=f.itemUrl,v=f.source;v.onActive(nt({event:t,item:m,itemInputValue:h,itemUrl:g,refresh:i,source:v,state:l.getState()},s))}})).finally((function(){p("idle"),st&&o.environment.clearTimeout(st)}));return l.pendingRequests.add(v)}var dt=["event","props","refresh","store"];function ft(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ft(Object(n),!0).forEach((function(t){mt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ft(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function mt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ht(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var gt=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var vt=["props","refresh","store"],bt=["inputElement","formElement","panelElement"],yt=["inputElement"],wt=["inputElement","maxLength"],kt=["item","source"];function Et(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function St(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Et(Object(n),!0).forEach((function(t){_t(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Et(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function _t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xt(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ot(e){var t=e.props,n=e.refresh,r=e.store,o=xt(e,vt);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,a=e.panelElement;function i(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,a].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return St({onTouchStart:i,onMouseDown:i,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},xt(e,bt))},getRootProps:function(e){return St({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return St({action:"",noValidate:!0,role:"search",onSubmit:function(a){var i;a.preventDefault(),t.onSubmit(St({event:a,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(i=e.inputElement)||void 0===i||i.blur()},onReset:function(a){var i;a.preventDefault(),t.onReset(St({event:a,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(i=e.inputElement)||void 0===i||i.focus()}},xt(e,yt))},getLabelProps:function(e){return St({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function i(e){(t.openOnFocus||Boolean(r.getState().query))&&ct(St({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var l=e||{},s=(l.inputElement,l.maxLength),u=void 0===s?512:s,c=xt(l,wt),d=Je(r.getState()),f=function(e){return Boolean(e&&e.match(gt))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),p=null!=d&&d.itemUrl&&!f?"go":"search";return St({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:p,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(e){ct(St({event:e,props:t,query:e.currentTarget.value.slice(0,u),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,a=ht(e,dt);if("ArrowUp"===t.key||"ArrowDown"===t.key){var i=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},l=function(){var e=Je(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,i=e.itemInputValue,l=e.itemUrl,s=e.source;s.onActive(pt({event:t,item:n,itemInputValue:i,itemUrl:l,refresh:r,source:s,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?ct(pt({event:t,props:n,query:o.getState().query,refresh:r,store:o},a)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),l(),setTimeout(i,0)})):(o.dispatch(t.key,{}),l(),i())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var s=Je(o.getState()),u=s.item,c=s.itemInputValue,d=s.itemUrl,f=s.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a)),n.navigator.navigateNewTab({itemUrl:d,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==d&&(f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a)),n.navigator.navigateNewWindow({itemUrl:d,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==d)return f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a)),void n.navigator.navigate({itemUrl:d,item:u,state:o.getState()});ct(pt({event:t,nextState:{isOpen:!1},props:n,query:c,refresh:r,store:o},a)).then((function(){f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a))}))}}}(St({event:e,props:t,refresh:n,store:r},o))},onFocus:i,onBlur:xe,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(n)}},c)},getPanelProps:function(e){return St({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return St({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,i=e.source,l=xt(e,kt);return St({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",a.__autocomplete_id);var t=Je(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,l=t.itemInputValue,s=t.itemUrl,u=t.source;u.onActive(St({event:e,item:i,itemInputValue:l,itemUrl:s,refresh:n,source:u,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var l=i.getItemInputValue({item:a,state:r.getState()}),s=i.getItemUrl({item:a,state:r.getState()});(s?Promise.resolve():ct(St({event:e,nextState:{isOpen:!1},props:t,query:l,refresh:n,store:r},o))).then((function(){i.onSelect(St({event:e,item:a,itemInputValue:l,itemUrl:s,refresh:n,source:i,state:r.getState()},o))}))}},l)}}}var Pt="1.7.1",Ct=[{segment:"autocomplete-core",version:Pt}];function Tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function It(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Tt(Object(n),!0).forEach((function(t){At(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function At(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Lt(e){var t,n,r,o,a=e.plugins,i=e.options,l=null===(t=((null===(n=i.__autocomplete_metadata)||void 0===n?void 0:n.userAgents)||[])[0])||void 0===t?void 0:t.segment,s=l?At({},l,Object.keys((null===(r=i.__autocomplete_metadata)||void 0===r?void 0:r.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:It({"autocomplete-core":Object.keys(i)},s),ua:Ct.concat((null===(o=i.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function Nt(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=Je(n))||void 0===t?void 0:t.itemInputValue)||null}function Rt(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function Dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function jt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dt(Object(n),!0).forEach((function(t){Mt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Mt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ft=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return jt(jt({},e),{},{activeItemId:t.payload});case"setQuery":return jt(jt({},e),{},{query:t.payload,completion:null});case"setCollections":return jt(jt({},e),{},{collections:t.payload});case"setIsOpen":return jt(jt({},e),{},{isOpen:t.payload});case"setStatus":return jt(jt({},e),{},{status:t.payload});case"setContext":return jt(jt({},e),{},{context:jt(jt({},e.context),t.payload)});case"ArrowDown":var n=jt(jt({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:Rt(1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return jt(jt({},n),{},{completion:Nt({state:n})});case"ArrowUp":var r=jt(jt({},e),{},{activeItemId:Rt(-1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return jt(jt({},r),{},{completion:Nt({state:r})});case"Escape":return e.isOpen?jt(jt({},e),{},{activeItemId:null,isOpen:!1,completion:null}):jt(jt({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return jt(jt({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return jt(jt({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return jt(jt({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:jt(jt({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return jt(jt({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function Bt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bt(Object(n),!0).forEach((function(t){Ut(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $t(e){var t=[],n=function(e,t){var n,r="undefined"!=typeof window?window:{},o=e.plugins||[];return Le(Le({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:r,shouldPanelOpen:function(e){return Ee(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:_e(),plugins:o,initialState:Le({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(Te(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return Ce(e,n)}))).then((function(e){return be(e)})).then((function(e){return e.map((function(e){return Le(Le({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Le({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}(e,t),r=ve(Ft,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(zt({prevState:t,state:r,refresh:i},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return we(we({},e),{},{items:be(e.items).map((function(e){return we(we({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=Ot(zt({props:n,refresh:i,store:r},o));function i(){return ct(zt({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:i,store:r},o))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,zt(zt({},o),{},{refresh:i,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var a=o.document.createElement("meta"),i=o.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(r),i.appendChild(a)}),0)}}({metadata:Lt({plugins:n.plugins,options:e}),environment:n.environment}),zt(zt({refresh:i},a),o)}function qt(e){return{current:e}}function Ht(e,t){var n=void 0;return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,o)}),t)}}var Gt=function(e,t,n,r){var o;t[0]=0;for(var a=1;a<t.length;a++){var i=t[a++],l=t[a]?(t[0]|=i?1:2,n[t[a++]]):t[++a];3===i?r[0]=l:4===i?r[1]=Object.assign(r[1]||{},l):5===i?(r[1]=r[1]||{})[t[++a]]=l:6===i?r[1][t[++a]]+=l+"":i?(o=e.apply(l,Gt(e,l,n,["",null])),r.push(o),l[0]?t[0]|=2:(t[a-2]=0,t[a]=o)):r.push(l)}return r},Qt=new Map;function Zt(e){var t=Qt.get(this);return t||(t=new Map,Qt.set(this,t)),(t=Gt(this,t.get(e)||(t.set(e,t=function(e){for(var t,n,r=1,o="",a="",i=[0],l=function(e){1===r&&(e||(o=o.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?i.push(0,e,o):3===r&&(e||o)?(i.push(3,e,o),r=2):2===r&&"..."===o&&e?i.push(4,e,0):2===r&&o&&!e?i.push(5,0,!0,o):r>=5&&((o||!e&&5===r)&&(i.push(r,0,o,n),r=6),e&&(i.push(r,e,0,n),r=6)),o=""},s=0;s<e.length;s++){s&&(1===r&&l(),l(s));for(var u=0;u<e[s].length;u++)t=e[s][u],1===r?"<"===t?(l(),i=[i],r=3):o+=t:4===r?"--"===o&&">"===t?(r=1,o=""):o=t+o[0]:a?t===a?a="":o+=t:'"'===t||"'"===t?a=t:">"===t?(l(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[s][u+1])?(l(),3===r&&(i=i[0]),r=i,(i=i[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(l(),r=2):o+=t),3===r&&"!--"===o&&(r=4,i=i[0])}return l(),i}(e)),t),arguments,[])).length>1?t:t[0]}var Vt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-SubmitIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","20"),n.setAttribute("height","20"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"),n.appendChild(r),n},Wt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n},Kt=function(e){var t=e.environment.document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("class","aa-LoadingIcon"),t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("width","20"),t.setAttribute("height","20"),t.innerHTML='<circle\n cx="50"\n cy="50"\n fill="none"\n r="35"\n stroke="currentColor"\n stroke-dasharray="164.93361431346415 56.97787143782138"\n stroke-width="6"\n>\n <animateTransform\n attributeName="transform"\n type="rotate"\n repeatCount="indefinite"\n dur="1s"\n values="0 50 50;90 50 50;180 50 50;360 50 50"\n keyTimes="0;0.40;0.65;1"\n />\n</circle>',t},Yt=["ontouchstart","ontouchend","ontouchmove","ontouchcancel"];function Xt(e,t,n){e[t]=null===n?"":"number"!=typeof n?n:n+"px"}function Jt(e){this._listeners[e.type](e)}function en(e,t,n){var r,o,a=e[t];if("style"===t)if("string"==typeof n)e.style=n;else if(null===n)e.style="";else for(t in n)a&&n[t]===a[t]||Xt(e.style,t,n[t]);else"o"===t[0]&&"n"===t[1]?(r=t!==(t=t.replace(/Capture$/,"")),((o=t.toLowerCase())in e||Yt.includes(o))&&(t=o),t=t.slice(2),e._listeners||(e._listeners={}),e._listeners[t]=n,n?a||e.addEventListener(t,Jt,r):e.removeEventListener(t,Jt,r)):"list"!==t&&"tagName"!==t&&"form"!==t&&"type"!==t&&"size"!==t&&"download"!==t&&"href"!==t&&t in e?e[t]=null==n?"":n:"function"!=typeof n&&"dangerouslySetInnerHTML"!==t&&(null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function tn(e){return"onChange"===e?"onInput":e}function nn(e,t){for(var n in t)en(e,tn(n),t[n])}function rn(e,t){for(var n in t)"o"===n[0]&&"n"===n[1]||en(e,tn(n),t[n])}var on=["children"];function an(e){return function(e){if(Array.isArray(e))return ln(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ln(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ln(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ln(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function sn(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function un(e){return function(t,n){var r=n.children,o=void 0===r?[]:r,a=sn(n,on),i=e.document.createElement(t);return nn(i,a),i.append.apply(i,an(o)),i}}var cn=["autocompleteScopeApi","environment","classNames","getInputProps","getInputPropsCore","isDetached","state"];function dn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function fn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dn(Object(n),!0).forEach((function(t){pn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function pn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function mn(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function hn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function gn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hn(Object(n),!0).forEach((function(t){vn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bn(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.classNames,o=e.environment,a=e.isDetached,i=e.placeholder,l=void 0===i?"Search":i,s=e.propGetters,u=e.setIsModalOpen,c=e.state,d=e.translations,f=un(o),p=s.getRootProps(gn({state:c,props:t.getRootProps({})},n)),m=f("div",gn({class:r.root},p)),h=f("div",{class:r.detachedContainer,onMouseDown:function(e){e.stopPropagation()}}),g=f("div",{class:r.detachedOverlay,children:[h],onMouseDown:function(){u(!1),t.setIsOpen(!1)}}),v=s.getLabelProps(gn({state:c,props:t.getLabelProps({})},n)),b=f("button",{class:r.submitButton,type:"submit",title:d.submitButtonTitle,children:[Vt({environment:o})]}),y=f("label",gn({class:r.label,children:[b]},v)),w=f("button",{class:r.clearButton,type:"reset",title:d.clearButtonTitle,children:[Wt({environment:o})]}),k=f("div",{class:r.loadingIndicator,children:[Kt({environment:o})]}),E=function(e){var t=e.autocompleteScopeApi,n=e.environment,r=(e.classNames,e.getInputProps),o=e.getInputPropsCore,a=e.isDetached,i=e.state,l=mn(e,cn),s=un(n)("input",l),u=r(fn({state:i,props:o({inputElement:s}),inputElement:s},t));return nn(s,fn(fn({},u),{},{onKeyDown:function(e){a&&"Tab"===e.key||u.onKeyDown(e)}})),s}({class:r.input,environment:o,state:c,getInputProps:s.getInputProps,getInputPropsCore:t.getInputProps,autocompleteScopeApi:n,isDetached:a}),S=f("div",{class:r.inputWrapperPrefix,children:[y,k]}),_=f("div",{class:r.inputWrapperSuffix,children:[w]}),x=f("div",{class:r.inputWrapper,children:[E]}),O=s.getFormProps(gn({state:c,props:t.getFormProps({inputElement:E})},n)),P=f("form",gn({class:r.form,children:[S,x,_]},O)),C=s.getPanelProps(gn({state:c,props:t.getPanelProps({})},n)),T=f("div",gn({class:r.panel},C));if(a){var I=f("div",{class:r.detachedSearchButtonIcon,children:[Vt({environment:o})]}),A=f("div",{class:r.detachedSearchButtonPlaceholder,textContent:l}),L=f("button",{type:"button",class:r.detachedSearchButton,onClick:function(){u(!0)},children:[I,A]}),N=f("button",{type:"button",class:r.detachedCancelButton,textContent:d.detachedCancelButtonText,onTouchStart:function(e){e.stopPropagation()},onClick:function(){t.setIsOpen(!1),u(!1)}}),R=f("div",{class:r.detachedFormContainer,children:[P,N]});h.appendChild(R),m.appendChild(L)}else m.appendChild(P);return{detachedContainer:h,detachedOverlay:g,inputWrapper:x,input:E,root:m,form:P,label:y,submitButton:b,clearButton:w,loadingIndicator:k,panel:T}}var yn,wn,kn,En,Sn,_n={},xn=[],On=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Pn(e,t){for(var n in t)e[n]=t[n];return e}function Cn(e){var t=e.parentNode;t&&t.removeChild(e)}function Tn(e,t,n){var r,o,a,i={};for(a in t)"key"==a?r=t[a]:"ref"==a?o=t[a]:i[a]=t[a];if(arguments.length>2&&(i.children=arguments.length>3?yn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===i[a]&&(i[a]=e.defaultProps[a]);return In(e,i,r,o,null)}function In(e,t,n,r,o){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++kn:o};return null==o&&null!=wn.vnode&&wn.vnode(a),a}function An(e){return e.children}function Ln(e,t){this.props=e,this.context=t}function Nn(e,t){if(null==t)return e.__?Nn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?Nn(e):null}function Rn(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return Rn(e)}}function Dn(e){(!e.__d&&(e.__d=!0)&&En.push(e)&&!jn.__r++||Sn!==wn.debounceRendering)&&((Sn=wn.debounceRendering)||setTimeout)(jn)}function jn(){for(var e;jn.__r=En.length;)e=En.sort((function(e,t){return e.__v.__b-t.__v.__b})),En=[],e.some((function(e){var t,n,r,o,a,i;e.__d&&(a=(o=(t=e).__v).__e,(i=t.__P)&&(n=[],(r=Pn({},o)).__v=o.__v+1,Hn(i,o,r,t.__n,void 0!==i.ownerSVGElement,null!=o.__h?[a]:null,n,null==a?Nn(o):a,o.__h),Gn(n,o),o.__e!=a&&Rn(o)))}))}function Mn(e,t,n,r,o,a,i,l,s,u){var c,d,f,p,m,h,g,v=r&&r.__k||xn,b=v.length;for(n.__k=[],c=0;c<t.length;c++)if(null!=(p=n.__k[c]=null==(p=t[c])||"boolean"==typeof p?null:"string"==typeof p||"number"==typeof p||"bigint"==typeof p?In(null,p,null,null,p):Array.isArray(p)?In(An,{children:p},null,null,null):p.__b>0?In(p.type,p.props,p.key,null,p.__v):p)){if(p.__=n,p.__b=n.__b+1,null===(f=v[c])||f&&p.key==f.key&&p.type===f.type)v[c]=void 0;else for(d=0;d<b;d++){if((f=v[d])&&p.key==f.key&&p.type===f.type){v[d]=void 0;break}f=null}Hn(e,p,f=f||_n,o,a,i,l,s,u),m=p.__e,(d=p.ref)&&f.ref!=d&&(g||(g=[]),f.ref&&g.push(f.ref,null,p),g.push(d,p.__c||m,p)),null!=m?(null==h&&(h=m),"function"==typeof p.type&&p.__k===f.__k?p.__d=s=Fn(p,s,e):s=Bn(e,p,f,v,m,s),"function"==typeof n.type&&(n.__d=s)):s&&f.__e==s&&s.parentNode!=e&&(s=Nn(f))}for(n.__e=h,c=b;c--;)null!=v[c]&&("function"==typeof n.type&&null!=v[c].__e&&v[c].__e==n.__d&&(n.__d=Nn(r,c+1)),Vn(v[c],v[c]));if(g)for(c=0;c<g.length;c++)Zn(g[c],g[++c],g[++c])}function Fn(e,t,n){for(var r,o=e.__k,a=0;o&&a<o.length;a++)(r=o[a])&&(r.__=e,t="function"==typeof r.type?Fn(r,t,n):Bn(n,r,r,o,r.__e,t));return t}function Bn(e,t,n,r,o,a){var i,l,s;if(void 0!==t.__d)i=t.__d,t.__d=void 0;else if(null==n||o!=a||null==o.parentNode)e:if(null==a||a.parentNode!==e)e.appendChild(o),i=null;else{for(l=a,s=0;(l=l.nextSibling)&&s<r.length;s+=2)if(l==o)break e;e.insertBefore(o,a),i=a}return void 0!==i?i:o.nextSibling}function zn(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||On.test(t)?n:n+"px"}function Un(e,t,n,r,o){var a;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||zn(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||zn(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])a=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+a]=n,n?r||e.addEventListener(t,a?qn:$n,a):e.removeEventListener(t,a?qn:$n,a);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,n):e.removeAttribute(t))}}function $n(e){this.l[e.type+!1](wn.event?wn.event(e):e)}function qn(e){this.l[e.type+!0](wn.event?wn.event(e):e)}function Hn(e,t,n,r,o,a,i,l,s){var u,c,d,f,p,m,h,g,v,b,y,w,k,E=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(s=n.__h,l=t.__e=n.__e,t.__h=null,a=[l]),(u=wn.__b)&&u(t);try{e:if("function"==typeof E){if(g=t.props,v=(u=E.contextType)&&r[u.__c],b=u?v?v.props.value:u.__:r,n.__c?h=(c=t.__c=n.__c).__=c.__E:("prototype"in E&&E.prototype.render?t.__c=c=new E(g,b):(t.__c=c=new Ln(g,b),c.constructor=E,c.render=Wn),v&&v.sub(c),c.props=g,c.state||(c.state={}),c.context=b,c.__n=r,d=c.__d=!0,c.__h=[]),null==c.__s&&(c.__s=c.state),null!=E.getDerivedStateFromProps&&(c.__s==c.state&&(c.__s=Pn({},c.__s)),Pn(c.__s,E.getDerivedStateFromProps(g,c.__s))),f=c.props,p=c.state,d)null==E.getDerivedStateFromProps&&null!=c.componentWillMount&&c.componentWillMount(),null!=c.componentDidMount&&c.__h.push(c.componentDidMount);else{if(null==E.getDerivedStateFromProps&&g!==f&&null!=c.componentWillReceiveProps&&c.componentWillReceiveProps(g,b),!c.__e&&null!=c.shouldComponentUpdate&&!1===c.shouldComponentUpdate(g,c.__s,b)||t.__v===n.__v){c.props=g,c.state=c.__s,t.__v!==n.__v&&(c.__d=!1),c.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),c.__h.length&&i.push(c);break e}null!=c.componentWillUpdate&&c.componentWillUpdate(g,c.__s,b),null!=c.componentDidUpdate&&c.__h.push((function(){c.componentDidUpdate(f,p,m)}))}if(c.context=b,c.props=g,c.__v=t,c.__P=e,y=wn.__r,w=0,"prototype"in E&&E.prototype.render)c.state=c.__s,c.__d=!1,y&&y(t),u=c.render(c.props,c.state,c.context);else do{c.__d=!1,y&&y(t),u=c.render(c.props,c.state,c.context),c.state=c.__s}while(c.__d&&++w<25);c.state=c.__s,null!=c.getChildContext&&(r=Pn(Pn({},r),c.getChildContext())),d||null==c.getSnapshotBeforeUpdate||(m=c.getSnapshotBeforeUpdate(f,p)),k=null!=u&&u.type===An&&null==u.key?u.props.children:u,Mn(e,Array.isArray(k)?k:[k],t,n,r,o,a,i,l,s),c.base=t.__e,t.__h=null,c.__h.length&&i.push(c),h&&(c.__E=c.__=null),c.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=Qn(n.__e,t,n,r,o,a,i,s);(u=wn.diffed)&&u(t)}catch(e){t.__v=null,(s||null!=a)&&(t.__e=l,t.__h=!!s,a[a.indexOf(l)]=null),wn.__e(e,t,n)}}function Gn(e,t){wn.__c&&wn.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){wn.__e(e,t.__v)}}))}function Qn(e,t,n,r,o,a,i,l){var s,u,c,d=n.props,f=t.props,p=t.type,m=0;if("svg"===p&&(o=!0),null!=a)for(;m<a.length;m++)if((s=a[m])&&"setAttribute"in s==!!p&&(p?s.localName===p:3===s.nodeType)){e=s,a[m]=null;break}if(null==e){if(null===p)return document.createTextNode(f);e=o?document.createElementNS("http://www.w3.org/2000/svg",p):document.createElement(p,f.is&&f),a=null,l=!1}if(null===p)d===f||l&&e.data===f||(e.data=f);else{if(a=a&&yn.call(e.childNodes),u=(d=n.props||_n).dangerouslySetInnerHTML,c=f.dangerouslySetInnerHTML,!l){if(null!=a)for(d={},m=0;m<e.attributes.length;m++)d[e.attributes[m].name]=e.attributes[m].value;(c||u)&&(c&&(u&&c.__html==u.__html||c.__html===e.innerHTML)||(e.innerHTML=c&&c.__html||""))}if(function(e,t,n,r,o){var a;for(a in n)"children"===a||"key"===a||a in t||Un(e,a,null,n[a],r);for(a in t)o&&"function"!=typeof t[a]||"children"===a||"key"===a||"value"===a||"checked"===a||n[a]===t[a]||Un(e,a,t[a],n[a],r)}(e,f,d,o,l),c)t.__k=[];else if(m=t.props.children,Mn(e,Array.isArray(m)?m:[m],t,n,r,o&&"foreignObject"!==p,a,i,a?a[0]:n.__k&&Nn(n,0),l),null!=a)for(m=a.length;m--;)null!=a[m]&&Cn(a[m]);l||("value"in f&&void 0!==(m=f.value)&&(m!==e.value||"progress"===p&&!m||"option"===p&&m!==d.value)&&Un(e,"value",m,d.value,!1),"checked"in f&&void 0!==(m=f.checked)&&m!==e.checked&&Un(e,"checked",m,d.checked,!1))}return e}function Zn(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){wn.__e(e,n)}}function Vn(e,t,n){var r,o;if(wn.unmount&&wn.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||Zn(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){wn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Vn(r[o],t,"function"!=typeof e.type);n||null==e.__e||Cn(e.__e),e.__e=e.__d=void 0}function Wn(e,t,n){return this.constructor(e,n)}function Kn(e,t,n){var r,o,a;wn.__&&wn.__(e,t),o=(r="function"==typeof n)?null:n&&n.__k||t.__k,a=[],Hn(t,e=(!r&&n||t).__k=Tn(An,null,[e]),o||_n,_n,void 0!==t.ownerSVGElement,!r&&n?[n]:o?null:t.firstChild?yn.call(t.childNodes):null,a,!r&&n?n:o?o.__e:t.firstChild,r),Gn(a,e)}function Yn(e,t){return t.reduce((function(e,t){return e&&e[t]}),e)}yn=xn.slice,wn={__e:function(e,t,n,r){for(var o,a,i;t=t.__;)if((o=t.__c)&&!o.__)try{if((a=o.constructor)&&null!=a.getDerivedStateFromError&&(o.setState(a.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),i=o.__d),i)return o.__E=o}catch(t){e=t}throw e}},kn=0,Ln.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=Pn({},this.state),"function"==typeof e&&(e=e(Pn({},n),this.props)),e&&Pn(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),Dn(this))},Ln.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Dn(this))},Ln.prototype.render=An,En=[],jn.__r=0;function Xn(e){var t=e.highlightedValue.split("__aa-highlight__"),n=t.shift(),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split("__/aa-highlight__");r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Jn(e){return function(e){if(Array.isArray(e))return er(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return er(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return er(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function er(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function tr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],o=Yn(t,["_highlightResult"].concat(Jn(r),["value"]));return"string"!=typeof o&&(o=Yn(t,r)||""),Xn({highlightedValue:o})}function nr(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,o=e.attribute,a=e.tagName,i=void 0===a?"mark":a;return t(n,{},tr({hit:r,attribute:o}).map((function(e,n){return e.isHighlighted?t(i,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Highlight",r}var rr={"&":"&","<":"<",">":">",""":'"',"'":"'"},or=new RegExp(/\w/i),ar=/&(amp|quot|lt|gt|#39);/g,ir=RegExp(ar.source);function lr(e,t){var n,r,o,a=e[t],i=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,l=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return or.test((o=a.value)&&ir.test(o)?o.replace(ar,(function(e){return rr[e]})):o)||l!==i?a.isHighlighted:l}function sr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ur(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?sr(Object(n),!0).forEach((function(t){cr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):sr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function cr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function dr(e){return e.some((function(e){return e.isHighlighted}))?e.map((function(t,n){return ur(ur({},t),{},{isHighlighted:!lr(e,n)})})):e.map((function(e){return ur(ur({},e),{},{isHighlighted:!1})}))}function fr(e){var t=e.createElement,n=e.Fragment;function r(e){var r,o=e.hit,a=e.attribute,i=e.tagName,l=void 0===i?"mark":i;return t(n,{},(r={hit:o,attribute:a},dr(tr(r))).map((function(e,n){return e.isHighlighted?t(l,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseHighlight",r}function pr(e){return function(e){if(Array.isArray(e))return mr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return mr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return mr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function mr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function hr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],o=Yn(t,["_snippetResult"].concat(pr(r),["value"]));return"string"!=typeof o&&(o=Yn(t,r)||""),Xn({highlightedValue:o})}function gr(e){var t=e.createElement,n=e.Fragment;function r(e){var r,o=e.hit,a=e.attribute,i=e.tagName,l=void 0===i?"mark":i;return t(n,{},(r={hit:o,attribute:a},dr(hr(r))).map((function(e,n){return e.isHighlighted?t(l,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseSnippet",r}function vr(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,o=e.attribute,a=e.tagName,i=void 0===a?"mark":a;return t(n,{},hr({hit:r,attribute:o}).map((function(e,n){return e.isHighlighted?t(i,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Snippet",r}function br(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function yr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],o=t[n];r!==o&&(e[n]=[r,o].filter(Boolean).join(" "))})),e}),{})}var wr=["classNames","container","getEnvironmentProps","getFormProps","getInputProps","getItemProps","getLabelProps","getListProps","getPanelProps","getRootProps","panelContainer","panelPlacement","render","renderNoResults","renderer","detachedMediaQuery","components","translations"];function kr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Er(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kr(Object(n),!0).forEach((function(t){Sr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Sr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _r(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var xr={clearButton:"aa-ClearButton",detachedCancelButton:"aa-DetachedCancelButton",detachedContainer:"aa-DetachedContainer",detachedFormContainer:"aa-DetachedFormContainer",detachedOverlay:"aa-DetachedOverlay",detachedSearchButton:"aa-DetachedSearchButton",detachedSearchButtonIcon:"aa-DetachedSearchButtonIcon",detachedSearchButtonPlaceholder:"aa-DetachedSearchButtonPlaceholder",form:"aa-Form",input:"aa-Input",inputWrapper:"aa-InputWrapper",inputWrapperPrefix:"aa-InputWrapperPrefix",inputWrapperSuffix:"aa-InputWrapperSuffix",item:"aa-Item",label:"aa-Label",list:"aa-List",loadingIndicator:"aa-LoadingIndicator",panel:"aa-Panel",panelLayout:"aa-PanelLayout aa-Panel--scrollable",root:"aa-Autocomplete",source:"aa-Source",sourceFooter:"aa-SourceFooter",sourceHeader:"aa-SourceHeader",sourceNoResults:"aa-SourceNoResults",submitButton:"aa-SubmitButton"},Or=function(e,t){var n=e.children;(0,e.render)(n,t)},Pr={createElement:Tn,Fragment:An,render:Kn};function Cr(e){var t=e.panelPlacement,n=e.container,r=e.form,o=e.environment,a=n.getBoundingClientRect(),i=(o.pageYOffset||o.document.documentElement.scrollTop||o.document.body.scrollTop||0)+a.top+a.height;switch(t){case"start":return{top:i,left:a.left};case"end":return{top:i,right:o.document.documentElement.clientWidth-(a.left+a.width)};case"full-width":return{top:i,left:0,right:0,width:"unset",maxWidth:"unset"};case"input-wrapper-width":var l=r.getBoundingClientRect();return{top:i,left:l.left,right:o.document.documentElement.clientWidth-(l.left+l.width),width:"unset",maxWidth:"unset"};default:throw new Error("[Autocomplete] The `panelPlacement` value ".concat(JSON.stringify(t)," is not valid."))}}function Tr(){return Tr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Tr.apply(this,arguments)}function Ir(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ir(Object(n),!0).forEach((function(t){Lr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ir(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Lr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Nr=[{segment:"autocomplete-js",version:Pt}];function Rr(e){return function(e){if(Array.isArray(e))return Dr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Dr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function jr(e){return jr="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},jr(e)}var Mr=function(e){return e&&"object"===jr(e)&&"[object Object]"===Object.prototype.toString.call(e)};function Fr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],o=t[n];Array.isArray(r)&&Array.isArray(o)?e[n]=r.concat.apply(r,Rr(o)):Mr(r)&&Mr(o)?e[n]=Fr(r,o):e[n]=o})),e}),{})}function Br(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Br(Object(n),!0).forEach((function(t){Ur(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Br(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ur(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(s){l=!0,o=s}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return qr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Hr(e,t){return Object.entries(e).reduce((function(e,n){var r=$r(n,2),o=r[0],a=r[1];return t({key:o,value:a})?zr(zr({},e),{},Ur({},o,a)):e}),{})}var Gr=["components"];function Qr(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Zr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Vr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zr(Object(n),!0).forEach((function(t){Wr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Wr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Kr(e){var t,n=function(){var e=[],t=[];function n(n){e.push(n);var r=n();t.push(r)}return{runEffect:n,cleanupEffects:function(){var e=t;t=[],e.forEach((function(e){e()}))},runEffects:function(){var t=e;e=[],t.forEach((function(e){n(e)}))}}}(),r=n.runEffect,o=n.cleanupEffects,a=n.runEffects,i=(t=[],{reactive:function(e){var n=e(),r={_fn:e,_ref:{current:n},get value(){return this._ref.current},set value(e){this._ref.current=e}};return t.push(r),r},runReactives:function(){t.forEach((function(e){e._ref.current=e._fn()}))}}),l=i.reactive,s=i.runReactives,u=qt(!1),c=qt(e),d=qt(void 0),f=l((function(){return function(e){var t,n=e.classNames,r=e.container,o=e.getEnvironmentProps,a=e.getFormProps,i=e.getInputProps,l=e.getItemProps,s=e.getLabelProps,u=e.getListProps,c=e.getPanelProps,d=e.getRootProps,f=e.panelContainer,p=e.panelPlacement,m=e.render,h=e.renderNoResults,g=e.renderer,v=e.detachedMediaQuery,b=e.components,y=e.translations,w=_r(e,wr),k="undefined"!=typeof window?window:{},E=br(k,r);E.tagName;var S=Er(Er({},Pr),g),_={Highlight:nr(S),ReverseHighlight:fr(S),ReverseSnippet:gr(S),Snippet:vr(S)};return{renderer:{classNames:yr(xr,null!=n?n:{}),container:E,getEnvironmentProps:null!=o?o:function(e){return e.props},getFormProps:null!=a?a:function(e){return e.props},getInputProps:null!=i?i:function(e){return e.props},getItemProps:null!=l?l:function(e){return e.props},getLabelProps:null!=s?s:function(e){return e.props},getListProps:null!=u?u:function(e){return e.props},getPanelProps:null!=c?c:function(e){return e.props},getRootProps:null!=d?d:function(e){return e.props},panelContainer:f?br(k,f):k.document.body,panelPlacement:null!=p?p:"input-wrapper-width",render:null!=m?m:Or,renderNoResults:h,renderer:S,detachedMediaQuery:null!=v?v:getComputedStyle(k.document.documentElement).getPropertyValue("--aa-detached-media-query"),components:Er(Er({},_),b),translations:Er(Er({},{clearButtonTitle:"Clear",detachedCancelButtonText:"Cancel",submitButtonTitle:"Submit"}),y)},core:Er(Er({},w),{},{id:null!==(t=w.id)&&void 0!==t?t:_e(),environment:k})}}(c.current)})),p=l((function(){return f.value.core.environment.matchMedia(f.value.renderer.detachedMediaQuery).matches})),m=l((function(){return $t(Vr(Vr({},f.value.core),{},{onStateChange:function(e){var t,n,r;u.current=e.state.collections.some((function(e){return e.source.templates.noResults})),null===(t=d.current)||void 0===t||t.call(d,e),null===(n=(r=f.value.core).onStateChange)||void 0===n||n.call(r,e)},shouldPanelOpen:c.current.shouldPanelOpen||function(e){var t=e.state;if(p.value)return!0;var n=Ee(t)>0;if(!f.value.core.openOnFocus&&!t.query)return n;var r=Boolean(u.current||f.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:Nr,options:e}}))})),h=qt(Vr({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},f.value.core.initialState)),g={getEnvironmentProps:f.value.renderer.getEnvironmentProps,getFormProps:f.value.renderer.getFormProps,getInputProps:f.value.renderer.getInputProps,getItemProps:f.value.renderer.getItemProps,getLabelProps:f.value.renderer.getLabelProps,getListProps:f.value.renderer.getListProps,getPanelProps:f.value.renderer.getPanelProps,getRootProps:f.value.renderer.getRootProps},v={setActiveItemId:m.value.setActiveItemId,setQuery:m.value.setQuery,setCollections:m.value.setCollections,setIsOpen:m.value.setIsOpen,setStatus:m.value.setStatus,setContext:m.value.setContext,refresh:m.value.refresh},b=l((function(){return Zt.bind(f.value.renderer.renderer.createElement)})),y=l((function(){return bn({autocomplete:m.value,autocompleteScopeApi:v,classNames:f.value.renderer.classNames,environment:f.value.core.environment,isDetached:p.value,placeholder:f.value.core.placeholder,propGetters:g,setIsModalOpen:S,state:h.current,translations:f.value.renderer.translations})}));function w(){nn(y.value.panel,{style:p.value?{}:Cr({panelPlacement:f.value.renderer.panelPlacement,container:y.value.root,form:y.value.form,environment:f.value.core.environment})})}function k(e){h.current=e;var t={autocomplete:m.value,autocompleteScopeApi:v,classNames:f.value.renderer.classNames,components:f.value.renderer.components,container:f.value.renderer.container,html:b.value,dom:y.value,panelContainer:p.value?y.value.detachedContainer:f.value.renderer.panelContainer,propGetters:g,state:h.current,renderer:f.value.renderer.renderer},n=!Ee(e)&&!u.current&&f.value.renderer.renderNoResults||f.value.renderer.render;!function(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.dom,o=e.propGetters,a=e.state;rn(r.root,o.getRootProps(Ar({state:a,props:t.getRootProps({})},n))),rn(r.input,o.getInputProps(Ar({state:a,props:t.getInputProps({inputElement:r.input}),inputElement:r.input},n))),nn(r.label,{hidden:"stalled"===a.status}),nn(r.loadingIndicator,{hidden:"stalled"!==a.status}),nn(r.clearButton,{hidden:!a.query})}(t),function(e,t){var n=t.autocomplete,r=t.autocompleteScopeApi,o=t.classNames,a=t.html,i=t.dom,l=t.panelContainer,s=t.propGetters,u=t.state,c=t.components,d=t.renderer;if(u.isOpen){l.contains(i.panel)||"loading"===u.status||l.appendChild(i.panel),i.panel.classList.toggle("aa-Panel--stalled","stalled"===u.status);var f=u.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var i=e.source,l=e.items;return d.createElement("section",{key:t,className:o.source,"data-autocomplete-source-id":i.sourceId},i.templates.header&&d.createElement("div",{className:o.sourceHeader},i.templates.header({components:c,createElement:d.createElement,Fragment:d.Fragment,items:l,source:i,state:u,html:a})),i.templates.noResults&&0===l.length?d.createElement("div",{className:o.sourceNoResults},i.templates.noResults({components:c,createElement:d.createElement,Fragment:d.Fragment,source:i,state:u,html:a})):d.createElement("ul",Tr({className:o.list},s.getListProps(Ar({state:u,props:n.getListProps({})},r))),l.map((function(e){var t=n.getItemProps({item:e,source:i});return d.createElement("li",Tr({key:t.id,className:o.item},s.getItemProps(Ar({state:u,props:t},r))),i.templates.item({components:c,createElement:d.createElement,Fragment:d.Fragment,item:e,state:u,html:a}))}))),i.templates.footer&&d.createElement("div",{className:o.sourceFooter},i.templates.footer({components:c,createElement:d.createElement,Fragment:d.Fragment,items:l,source:i,state:u,html:a})))})),p=d.createElement(d.Fragment,null,d.createElement("div",{className:o.panelLayout},f),d.createElement("div",{className:"aa-GradientBottom"})),m=f.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(Ar(Ar({children:p,state:u,sections:f,elements:m},d),{},{components:c,html:a},r),i.panel)}else l.contains(i.panel)&&l.removeChild(i.panel)}(n,t)}function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o();var t=f.value.renderer,n=t.components,r=Qr(t,Gr);c.current=Fr(r,f.value.core,{components:Hr(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:h.current},e),s(),a(),m.value.refresh().then((function(){k(h.current)}))}function S(e){requestAnimationFrame((function(){var t=f.value.core.environment.document.body.contains(y.value.detachedOverlay);e!==t&&(e?(f.value.core.environment.document.body.appendChild(y.value.detachedOverlay),f.value.core.environment.document.body.classList.add("aa-Detached"),y.value.input.focus()):(f.value.core.environment.document.body.removeChild(y.value.detachedOverlay),f.value.core.environment.document.body.classList.remove("aa-Detached"),m.value.setQuery(""),m.value.refresh()))}))}return r((function(){var e=m.value.getEnvironmentProps({formElement:y.value.form,panelElement:y.value.panel,inputElement:y.value.input});return nn(f.value.core.environment,e),function(){nn(f.value.core.environment,Object.keys(e).reduce((function(e,t){return Vr(Vr({},e),{},Wr({},t,void 0))}),{}))}})),r((function(){var e=p.value?f.value.core.environment.document.body:f.value.renderer.panelContainer,t=p.value?y.value.detachedOverlay:y.value.panel;return p.value&&h.current.isOpen&&S(!0),k(h.current),function(){e.contains(t)&&e.removeChild(t)}})),r((function(){var e=f.value.renderer.container;return e.appendChild(y.value.root),function(){e.removeChild(y.value.root)}})),r((function(){var e=Ht((function(e){k(e.state)}),0);return d.current=function(t){var n=t.state,r=t.prevState;(p.value&&r.isOpen!==n.isOpen&&S(n.isOpen),p.value||!n.isOpen||r.isOpen||w(),n.query!==r.query)&&f.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){d.current=void 0}})),r((function(){var e=Ht((function(){var e=p.value;p.value=f.value.core.environment.matchMedia(f.value.renderer.detachedMediaQuery).matches,e!==p.value?E({}):requestAnimationFrame(w)}),20);return f.value.core.environment.addEventListener("resize",e),function(){f.value.core.environment.removeEventListener("resize",e)}})),r((function(){if(!p.value)return function(){};function e(e){y.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=f.value.core.environment.matchMedia(getComputedStyle(f.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),r((function(){return requestAnimationFrame(w),function(){}})),Vr(Vr({},v),{},{update:E,destroy:function(){o()}})}var Yr=n(5742);const Xr=n(8965),Jr=Xr,eo=(n(8965),e=>Xr.tokenizer(e).map((e=>e.str))),to=Jr;var no=n(813),ro=n.n(no);function oo(){var e;const t=(0,c.TH)(),n=(0,c.k6)(),{siteConfig:{baseUrl:o}}=(0,ie.Z)(),[a,i]=(0,r.useState)({terms:[],isDocsOrBlog:!1});return(0,r.useEffect)((()=>{var e;if(null==(e=t.state)||!e.cmfcmfhighlight||0===t.state.cmfcmfhighlight.terms.length)return;i(t.state.cmfcmfhighlight);const{cmfcmfhighlight:r,...o}=t.state;n.replace({...t,state:o})}),[null==(e=t.state)?void 0:e.cmfcmfhighlight,n,t]),(0,r.useEffect)((()=>{if(0===a.terms.length)return;const e=a.isDocsOrBlog?document.getElementsByTagName("article")[0]:document.getElementsByTagName("main")[0];if(!e)return;const t=new(ro())(e),n={ignoreJoiners:!0};return t.mark(a.terms,n),()=>t.unmark(n)}),[a,o]),null}var ao=n(8084),io=n(3320);function lo(e){let{document:t}=e;const[n,r]=t.sectionRoute.split("#");let o=n;return r&&(o+="#"+r),o}const so={documents:[],index:to((function(){this.ref("id"),this.field("title"),this.field("content")}))};const uo=()=>{const e=(0,F.Z)(),[t,n]=(0,r.useState)((()=>!!e&&"dark"===document.documentElement.getAttribute("data-theme")));(0,r.useEffect)((()=>{const e=new MutationObserver((()=>{n("dark"===document.documentElement.getAttribute("data-theme"))}));return e.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>e.disconnect()}),[]);const{siteConfig:{baseUrl:o}}=(0,ie.Z)(),{titleBoost:a,contentBoost:i,tagsBoost:l,parentCategoriesBoost:s,indexDocSidebarParentCategories:d,maxSearchResults:f}=(0,ao.eZ)("@cmfcmf/docusaurus-search-local"),p=(0,c.k6)(),{tags:m}=(0,io._q)(),h=(0,r.useRef)(m);(0,r.useEffect)((()=>{h.current=m}),[m]);const g=(0,r.useRef)({}),v=async e=>{const t=g.current[e];switch(null==t?void 0:t.state){case"ready":return t;case void 0:{const t=[];g.current[e]={state:"loading",callbacks:t};const n=await async function(e,t){{let r;try{const n=await fetch(`${e}search-index-${t}.json`);if(!n.ok)return so;r=await n.json()}catch(n){return so}return{documents:r.documents,index:to.Index.load(r.index)}}}(o,e);return t.forEach((e=>e(n))),g.current[e]={state:"ready",...n}}case"loading":return new Promise((e=>{t.callbacks.push(e)}))}},b=(0,u.I)({message:"cmfcmf/d-s-l.searchBar.placeholder",description:"Placeholder shown in the searchbar"}),y=(0,r.useRef)(null),w=(0,r.useRef)(null);return(0,r.useEffect)((()=>{if(y.current)return w.current=Kr({container:y.current,placeholder:b,renderer:{createElement:r.createElement,Fragment:r.Fragment},render(e,t){let{children:n}=e;(0,me.render)(n,t)},navigator:{navigate(e){let{item:t,itemUrl:n}=e;p.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},detachedMediaQuery:"",defaultActiveItemId:0,translations:{clearButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.clearButtonTitle",description:"Title of the button to clear the current search input"}),detachedCancelButtonText:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.detachedCancelButtonText",description:"Text of the button to close the detached search window"}),submitButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.submitButtonTitle",description:"Title of the button to submit a new search"})},getSources(e){let{query:t}=e;return[{sourceId:"search-results",templates:{item(e){let{item:t}=e;const n=lo(t);return r.createElement("a",{href:n,className:"aa-ItemLink",onClick:e=>{e.preventDefault(),p.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},r.createElement("div",{className:"aa-ItemContentTitle"},t.document.sectionTitle),t.document.pageTitle!==t.document.sectionTitle&&r.createElement("div",{className:"aa-ItemContentDescription"},t.document.pageTitle))),r.createElement("div",{className:"aa-ItemActions"},r.createElement("button",{className:"aa-ItemActionButton aa-DesktopOnly aa-ActiveOnly",type:"button",title:"Select"},r.createElement("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor"},r.createElement("path",{d:"M18.984 6.984h2.016v6h-15.188l3.609 3.609-1.406 1.406-6-6 6-6 1.406 1.406-3.609 3.609h13.172v-4.031z"})))))},noResults:()=>r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},(0,u.I)({message:"cmfcmf/d-s-l.searchBar.noResults",description:"message shown if no results are found"})))},getItemUrl(e){let{item:t}=e;return lo(t)},async getItems(){const e=h.current,n=await Promise.all(e.map((e=>v(e)))),r=eo(t);return n.flatMap((e=>{let{index:t,documents:n}=e;return t.query((e=>{e.term(r,{fields:["title"],boost:a}),e.term(r,{fields:["title"],boost:a,wildcard:to.Query.wildcard.TRAILING}),e.term(r,{fields:["content"],boost:i}),e.term(r,{fields:["content"],boost:i,wildcard:to.Query.wildcard.TRAILING}),e.term(r,{fields:["tags"],boost:l}),e.term(r,{fields:["tags"],boost:l,wildcard:to.Query.wildcard.TRAILING}),d&&(e.term(r,{fields:["sidebarParentCategories"],boost:s}),e.term(r,{fields:["sidebarParentCategories"],boost:s,wildcard:to.Query.wildcard.TRAILING}))})).slice(0,f).map((e=>({document:n.find((t=>t.id.toString()===e.ref)),score:e.score,terms:r})))})).sort(((e,t)=>t.score-e.score)).slice(0,f)}}]}}),()=>{var e;return null==(e=w.current)?void 0:e.destroy()}}),[f]),r.createElement(r.Fragment,null,r.createElement(Yr.Z,null,r.createElement("body",{"data-theme":t?"dark":"light"})),r.createElement(oo,null),r.createElement("div",{className:"dsla-search-wrapper"},r.createElement("div",{className:"dsla-search-field",ref:y,"data-tags":m.join(",")})))},co="searchBox_ZlJk";function fo(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,o.Z)(n,co)},t)}var po=n(4104),mo=n(2802);var ho=n(373);const go=e=>e.docs.find((t=>t.id===e.mainDocId));const vo={default:re,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:o,...a}=e;const{i18n:{currentLocale:i,locales:l,localeConfigs:s}}=(0,ie.Z)(),c=(0,de.l)(),d=[...n,...l.map((e=>{const n=`pathname://${c.createUrl({locale:e,fullyQualified:!1})}`;return{label:s[e].label,lang:s[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...o],f=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):s[i].label;return r.createElement(ce,(0,v.Z)({},a,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(fe,{className:pe}),f),items:d}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(fo,{className:n},r.createElement(uo,null))},dropdown:ce,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,o.Z)({navbar__item:!a&&!i,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...a}=e;const{activeDoc:i}=(0,po.Iw)(o),l=(0,mo.vY)(t,o);return null===l?null:r.createElement(re,(0,v.Z)({exact:!0},a,{isActive:()=>(null==i?void 0:i.path)===l.path||!(null==i||!i.sidebar)&&i.sidebar===l.sidebar,label:n??l.id,to:l.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...a}=e;const{activeDoc:i}=(0,po.Iw)(o),l=(0,mo.oz)(t,o).link;if(!l)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(re,(0,v.Z)({exact:!0},a,{isActive:()=>(null==i?void 0:i.sidebar)===t,label:n??l.label,to:l.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...a}=e;const i=(0,mo.lO)(o)[0],l=t??i.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(re,(0,v.Z)({},a,{label:l,to:s}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:a,dropdownItemsAfter:i,...l}=e;const s=(0,po.Iw)(n),c=(0,po.gB)(n),{savePreferredVersionName:d}=(0,ho.J)(n),f=c.map((e=>{const t=s.alternateDocVersions[e.name]??go(e);return{label:e.label,to:t.path,isActive:()=>e===s.activeVersion,onClick:()=>d(e.name)}})),p=[...a,...f,...i],m=(0,mo.lO)(n)[0],h=t&&p.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,g=t&&p.length>1?void 0:go(m).path;return p.length<=1?r.createElement(re,(0,v.Z)({},l,{mobile:t,label:h,to:g,isActive:o?()=>!1:void 0})):r.createElement(ce,(0,v.Z)({},l,{mobile:t,label:h,to:g,items:p,isActive:o?()=>!1:void 0}))}},bo=vo;function yo(e){let{type:t,...n}=e;const o=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=bo[o];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(a,n)}function wo(){const e=(0,C.e)(),t=(0,h.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(yo,(0,v.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function ko(e){return r.createElement("button",(0,v.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Eo(){const e=0===(0,h.L)().navbar.items.length,t=D();return r.createElement(r.Fragment,null,!e&&r.createElement(ko,{onClick:()=>t.hide()}),t.content)}function So(){const e=(0,C.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(j,{header:r.createElement(V,null),primaryMenu:r.createElement(wo,null),secondaryMenu:r.createElement(Eo,null)}):null}const _o="navbarHideable_m1mJ",xo="navbarHidden_jGov";function Oo(e){return r.createElement("div",(0,v.Z)({role:"presentation"},e,{className:(0,o.Z)("navbar-sidebar__backdrop",e.className)}))}function Po(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,h.L)(),i=(0,C.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,T.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(o.current)return void(o.current=!1);const l=null==r?void 0:r.scrollY,s=document.documentElement.scrollHeight-a.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,d.S)((t=>{if(e)return t.location.hash?(o.current=!0,void n(!1)):void n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,className:(0,o.Z)("navbar","navbar--fixed-top",n&&[_o,!s&&xo],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown})},t,r.createElement(Oo,{onClick:i.toggle}),r.createElement(So,null))}function Co(e){let{width:t=30,height:n=30,className:o,...a}=e;return r.createElement("svg",(0,v.Z)({className:o,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},a),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function To(){const e=(0,C.e)();return r.createElement("button",{onClick:e.toggle,onKeyDown:e.toggle,"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0},r.createElement(Co,null))}const Io="colorModeToggle_DEke";function Ao(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(yo,(0,v.Z)({},e,{key:t})))))}function Lo(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function No(){const e=(0,C.e)(),t=(0,h.L)().navbar.items,[n,o]=function(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return r.createElement(Lo,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(To,null),r.createElement(Q,null),r.createElement(Ao,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ao,{items:o}),r.createElement(H,{className:Io}),!a&&r.createElement(fo,null,r.createElement(uo,null)))})}function Ro(){return r.createElement(Po,null,r.createElement(No,null))}function Do(e){let{item:t}=e;const{to:n,href:o,label:a,prependBaseUrlToHref:i,...l}=t,s=(0,K.Z)(n),u=(0,K.Z)(o,{forcePrependBaseUrl:!0});return r.createElement(W.Z,(0,v.Z)({className:"footer__link-item"},o?{href:i?u:o}:{to:s},l),a,o&&!(0,Y.Z)(o)&&r.createElement(J.Z,null))}function jo(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(Do,{item:t}))}function Mo(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(jo,{key:t,item:e})))))}function Fo(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Mo,{key:t,column:e}))))}function Bo(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function zo(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Do,{item:t})}function Uo(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(zo,{item:e}),t.length!==n+1&&r.createElement(Bo,null))))))}function $o(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Fo,{columns:t}):r.createElement(Uo,{links:t})}var qo=n(941);const Ho="footerLogoLink_BH7S";function Go(e){let{logo:t}=e;const{withBaseUrl:n}=(0,K.C)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(qo.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function Qo(e){let{logo:t}=e;return t.href?r.createElement(W.Z,{href:t.href,className:Ho,target:t.target},r.createElement(Go,{logo:t})):r.createElement(Go,{logo:t})}function Zo(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Vo(e){let{style:t,links:n,logo:a,copyright:i}=e;return r.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(a||i)&&r.createElement("div",{className:"footer__bottom text--center"},a&&r.createElement("div",{className:"margin-bottom--sm"},a),i)))}function Wo(){const{footer:e}=(0,h.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:a}=e;return r.createElement(Vo,{style:a,links:n&&n.length>0&&r.createElement($o,{links:n}),logo:o&&r.createElement(Qo,{logo:o}),copyright:t&&r.createElement(Zo,{copyright:t})})}const Ko=r.memo(Wo);var Yo=n(12);const Xo="docusaurus.tab.",Jo=r.createContext(void 0);const ea=(0,I.Qc)([M.S,g.pl,function(e){let{children:t}=e;const n=function(){const[e,t]=(0,r.useState)({}),n=(0,r.useCallback)(((e,t)=>{(0,Yo.W)(`docusaurus.tab.${e}`).set(t)}),[]);(0,r.useEffect)((()=>{try{const e={};(0,Yo._)().forEach((t=>{if(t.startsWith(Xo)){const n=t.substring(Xo.length);e[n]=(0,Yo.W)(t).get()}})),t(e)}catch(e){console.error(e)}}),[]);const o=(0,r.useCallback)(((e,r)=>{t((t=>({...t,[e]:r}))),n(e,r)}),[n]);return(0,r.useMemo)((()=>({tabGroupChoices:e,setTabGroupChoices:o})),[e,o])}();return r.createElement(Jo.Provider,{value:n},t)},T.OC,ho.L5,i.VC,function(e){let{children:t}=e;return r.createElement(A.n2,null,r.createElement(C.M,null,r.createElement(N,null,t)))}]);function ta(e){let{children:t}=e;return r.createElement(ea,null,t)}function na(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const ra="mainWrapper_z2l0";function oa(e){const{children:t,noFooter:n,wrapperClassName:u,title:c,description:d}=e;return(0,s.t)(),r.createElement(ta,null,r.createElement(i.d,{title:c,description:d}),r.createElement(m,null),r.createElement(P,null),r.createElement(Ro,null),r.createElement("div",{className:(0,o.Z)(l.k.wrapper.main,ra,u)},r.createElement(a.Z,{fallback:e=>r.createElement(na,e)},t)),!n&&r.createElement(Ko,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),o=n(7294),a=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=o.createElement(u.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?o.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)((null==u?void 0:u.href)||"/"),h=n?"":t,g=(null==u?void 0:u.alt)??h;return o.createElement(a.Z,(0,r.Z)({to:m},p,(null==u?void 0:u.target)&&{target:u.target}),u&&o.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&o.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(5742);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return r.createElement(o.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),o=n(7294),a=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,p.map((e=>o.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,a.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,z:()=>m});var r=n(7462),o=n(7294),a=n(412);function i(e){let{initialState:t}=e;const[n,r]=(0,o.useState)(t??!1),a=(0,o.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const l={display:"none",overflow:"hidden",height:"0px"},s={display:"block",overflow:"visible",height:"auto"};function u(e,t){const n=t?l:s;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function c(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,o.useRef)(!1);(0,o.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=(null==r?void 0:r.duration)??function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${(null==r?void 0:r.easing)??"ease-in-out"}`,height:`${t}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return u(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function d(e){if(!a.Z.canUseDOM)return e?l:s}function f(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const f=(0,o.useRef)(null);return c({collapsibleRef:f,collapsed:n,animation:a}),o.createElement(t,{ref:f,style:s?void 0:d(n),onTransitionEnd:e=>{"height"===e.propertyName&&(u(f.current,n),null==i||i(n))},className:l},r)}function p(e){let{collapsed:t,...n}=e;const[a,i]=(0,o.useState)(!t),[l,s]=(0,o.useState)(t);return(0,o.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,o.useLayoutEffect)((()=>{a&&s(t)}),[a,t]),a?o.createElement(f,(0,r.Z)({},n,{collapsed:l})):null}function m(e){let{lazy:t,...n}=e;const r=t?p:f;return o.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),o=n(2389),a=n(12),i=n(902),l=n(6668);const s=(0,a.W)("docusaurus.announcement.dismiss"),u=(0,a.W)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{a(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),o=n(412),a=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.W)(u),d="light",f="dark",p=e=>e===f?f:d;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,i]=(0,r.useState)((e=>o.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e))(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const s=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(i(t),o&&(e=>{c.set(p(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f:d:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&s(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,s]);const m=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||m.current?m.current=window.matchMedia("print").matches:s(null)};return e.addListener(r),()=>e.removeListener(r)}),[s,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:s,get isDarkTheme(){return a===f},setLightTheme(){s(d)},setDarkTheme(){s(f)}})),[a,s])}function h(e){let{children:t}=e;const n=m();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>v,Oh:()=>w});var r=n(7294),o=n(4104),a=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,u.W)(c(e),{persistence:t}).set(n)},f=(e,t)=>(0,u.W)(c(e),{persistence:t}).get(),p=(e,t)=>{(0,u.W)(c(e),{persistence:t}).del()};const m=r.createContext(null);function h(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>(e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}]))))(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=f(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return r.createElement(m.Provider,{value:n},t)}function v(e){let{children:t}=e;return l.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,o._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:o}=t[n];return r.versions.find((e=>e.name===o))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),o=n(902);const a=Symbol("EmptyContext"),i=r.createContext(a);function l(e){let{children:t,name:n,items:o}=e;const a=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return r.createElement(i.Provider,{value:a},t)}function s(){const e=(0,r.useContext)(i);if(e===a)throw new o.i6("DocsSidebarProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),o=n(3102),a=n(7524),i=n(6775),l=n(902);function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),o=n(902);const a=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(a.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(a);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(a);if(!i)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,o.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),o=n(412);const a="desktop",i="mobile",l="ssr";function s(){return o.Z.canUseDOM?window.innerWidth>996?a:i:l}function u(){const[e,t]=(0,r.useState)((()=>s()));return(0,r.useEffect)((()=>{function e(){t(s())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},2802:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>f,_F:()=>m,cE:()=>d,hI:()=>w,lO:()=>v,vY:()=>y,oz:()=>b,s1:()=>g});var r=n(7294),o=n(6775),a=n(8790),i=n(4104),l=n(373),s=n(1116);function u(e){return Array.from(new Set(e))}var c=n(8596);const d=!!i._r;function f(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=f(t);if(e)return e}}}const p=(e,t)=>void 0!==e&&(0,c.Mg)(e,t);function m(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||((e,t)=>e.some((e=>m(e,t))))(e.items,t))}function h(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,c.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,c.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function g(){var e;const t=(0,s.V)(),{pathname:n}=(0,o.TH)();return!1!==(null==(e=(0,i.gA)())?void 0:e.pluginData.breadcrumbs)&&t?h({sidebarItems:t.items,pathname:n}):null}function v(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function b(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\n Available sidebar ids are:\n - ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function y(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`DocNavbarItem: couldn't find any doc with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function w(e){let{route:t,versionMetadata:n}=e;const r=(0,o.TH)(),i=t.routes,l=i.find((e=>(0,o.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,a.H)(i),sidebarName:s,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),o=n(6010),a=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:o,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return null!=e&&e.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(a.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),o&&r.createElement("meta",{name:"keywords",content:Array.isArray(o)?o.join(","):o}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,o.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(a.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),a=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,o.Z)(a,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>a});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function a(e){const t=(0,r.useRef)(e);return o((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return o((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r,o;super(),this.name="ReactContextError",this.message=`Hook ${(null==(n=this.stack)||null==(r=n.split("\n")[1])||null==(o=r.match(/at (?:\w+\.)?(?<name>\w+)/))?void 0:o.groups.name)??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>{var t;return null==(t=!e||e.endsWith("/")?e:`${e}/`)?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),o=n(412),a=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(c()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&o<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(o-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>null==e.current?void 0:e.current()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(4104),o=n(2263),a=n(373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,o.Z)(),t=(0,r._r)(),n=(0,r.WS)(),s=(0,a.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=(null==n?void 0:n.activePlugin.pluginId)===e?n.activeVersion:void 0,o=s[e],a=t[e].versions.find((e=>e.isLast));return l(e,(r??o??a).name)}))];return{locale:e.currentLocale,tags:u}}},12:(e,t,n)=>{"use strict";n.d(t,{W:()=>l,_:()=>s});const r="localStorage";function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,a||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),a=!0),null}var t}let a=!1;const i={get:()=>null,set:()=>{},del:()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t}}(e);const n=o(null==t?void 0:t.persistence);return null===n?i:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{n.setItem(e,t)}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{n.removeItem(e)}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}}}}function s(e){void 0===e&&(e=r);const t=o(e);if(!t)return[];const n=[];for(let r=0;r<t.length;r+=1){const e=t.key(r);null!==e&&n.push(e)}return n}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>a});var r=n(2263),o=n(6775);function a(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:a}}=(0,r.Z)(),{pathname:i}=(0,o.TH)(),l=a===n?e:e.replace(`/${a}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:o}=e;return`${o?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6775),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}})},2198:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(412);let o=!0;function a(){const e=window.start||new Date,t=(new Date).getTime()-e.getTime();return 0===t?null:t}const i=r.Z.canUseDOM?{onRouteUpdate(e){let{location:t,prevLocation:n}=e;{if(!window._paq)return;const{_paq:e,dev:r}=window,i=t&&t.pathname+t.search+t.hash,l=n&&n.pathname+n.search+n.hash,s=()=>{const{title:t}=document;l&&e.push(["setReferrerUrl",l]),e.push(["setCustomUrl",i]),e.push(["setDocumentTitle",t]),e.push(["trackPageView"]),e.push(["enableLinkTracking"]),e.push(["trackAllContentImpressions"]),r&&console.debug(`[Matomo] Page view for: ${i} - ${t}`)},u=Math.max(32,0);setTimeout(s,u),o&&(o=!1,e.push(["trackEvent","javascript","load","duration",a()]),r&&console.debug(`[Matomo] Tracking duration for: ${i}`))}return null}}:null},6010:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}n.d(t,{Z:()=>o});const o=function(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>O,ob:()=>p,PP:()=>C,Ep:()=>f});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&o(e),s=t&&o(t),u=l||s;if(e&&o(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?a(i,f):".."===p?(a(i,f),d++):d&&(a(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(2177);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function p(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var v="popstate",b="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,_=void 0===S?6:S,x=e.basename?d(s(e.basename)):"";function O(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return x&&(a=c(a,x)),p(a,r,n)}function P(){return Math.random().toString(36).substr(2,_)}var C=m();function T(e){(0,r.Z)(U,e),U.length=n.length,C.notifyListeners(U.location,U.action)}function I(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||N(O(e.state))}function A(){N(O(y()))}var L=!1;function N(e){if(L)L=!1,T();else{C.confirmTransitionTo(e,"POP",E,(function(t){t?T({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(L=!0,M(o))}(e)}))}}var R=O(y()),D=[R.key];function j(e){return x+f(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(v,I),a&&window.addEventListener(b,A)):0===F&&(window.removeEventListener(v,I),a&&window.removeEventListener(b,A))}var z=!1;var U={length:n.length,action:"POP",location:R,createHref:j,push:function(e,t){var r="PUSH",a=p(e,t,P(),U.location);C.confirmTransitionTo(a,r,E,(function(e){if(e){var t=j(a),i=a.key,l=a.state;if(o)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf(U.location.key),u=D.slice(0,s+1);u.push(a.key),D=u,T({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,P(),U.location);C.confirmTransitionTo(a,r,E,(function(e){if(e){var t=j(a),i=a.key,l=a.state;if(o)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf(U.location.key);-1!==s&&(D[s]=a.key),T({action:r,location:a})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=C.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=C.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function _(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function x(e){window.location.replace(S(window.location.href)+"#"+e)}function O(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?g:o,i=n.hashType,u=void 0===i?"slash":i,v=e.basename?d(s(e.basename)):"",b=E[u],y=b.encodePath,w=b.decodePath;function O(){var e=w(_());return v&&(e=c(e,v)),p(e)}var P=m();function C(e){(0,r.Z)(z,e),z.length=t.length,P.notifyListeners(z.location,z.action)}var T=!1,I=null;function A(){var e,t,n=_(),r=y(n);if(n!==r)x(r);else{var o=O(),i=z.location;if(!T&&(t=o,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(I===f(o))return;I=null,function(e){if(T)T=!1,C();else{var t="POP";P.confirmTransitionTo(e,t,a,(function(n){n?C({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(f(t));-1===n&&(n=0);var r=D.lastIndexOf(f(e));-1===r&&(r=0);var o=n-r;o&&(T=!0,j(o))}(e)}))}}(o)}}var L=_(),N=y(L);L!==N&&x(N);var R=O(),D=[f(R)];function j(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(k,A):0===M&&window.removeEventListener(k,A)}var B=!1;var z={length:t.length,action:"POP",location:R,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(v+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=f(r),o=y(v+t);if(_()!==o){I=t,function(e){window.location.hash=e}(o);var a=D.lastIndexOf(f(z.location)),i=D.slice(0,a+1);i.push(t),D=i,C({action:n,location:r})}else C()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=f(r),o=y(v+t);_()!==o&&(I=t,x(o));var a=D.indexOf(f(z.location));-1!==a&&(D[a]=t),C({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=P.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=P.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function C(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=P(l,0,a.length-1),v=a.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),b=f;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[g],index:g,entries:v,createHref:b,push:function(e,t){var r="PUSH",o=p(e,t,h(),w.location);c.confirmTransitionTo(o,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,h(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=p(n);o&&o!==m&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var v=i[g];if(!(a[v]||r&&r[v]||h&&h[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},813:function(e){e.exports=function(){"use strict";var e="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},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=o,this.iframesTimeout=a}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var o=e.contentWindow;if(r=o.document,!o||!r)throw new Error("iframe inaccessible")}catch(a){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,o=!1,a=null,i=function i(){if(!o){o=!0,clearTimeout(a);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var o=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&a(s)};l||u(),i.forEach((function(t){e.matches(t,o.exclude)?u():o.onIframeReady(t,(function(e){n(t)&&(s++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var o=!1,a=!1;return r.forEach((function(e,t){e.val===n&&(o=t,a=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==o||a?!1===o||a||(r[o].handled=!0):r.push({val:n,handled:!0}),!0):(!1===o&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var o=this;e.forEach((function(e){e.handled||o.getIframeContents(e.val,(function(e){o.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,o){for(var a=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=a.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return a.checkIframeFilter(u,c,e,l)}),(function(t){a.createInstanceOnIframe(t).forEachNode(e,(function(e){return s.push(e)}),r)})),s.push(u);s.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(l,e,n,r),o()}},{key:"forEachNode",value:function(e,t,n){var r=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=this.getContexts(),i=a.length;i||o(),a.forEach((function(a){var l=function(){r.iterateThroughNodes(e,a,t,n,(function(){--i<=0&&o()}))};r.iframes?r.waitForIframes(a,l):l()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var o=!1;return n.every((function(t){return!r.call(e,t)||(o=!0,!1)})),o}return!1}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var o in t)if(t.hasOwnProperty(o)){var a=t[o],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=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"],r=[];return e.split("").forEach((function(o){n.every((function(n){if(-1!==n.indexOf(o)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,o="string"==typeof r?r:r.value,a="string"==typeof r?[]:r.limiters,i="";switch(a.forEach((function(e){i+="|"+t.escapeStr(e)})),o){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var o=t.callNoMatchOnInvalidRanges(e,r),a=o.start,i=o.end;o.valid&&(e.start=a,e.length=i-a,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,o=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?o=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:o}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,o=!0,a=n.length,i=t-a,l=parseInt(e.start,10)-i;return(r=(l=l>a?a:l)+parseInt(e.length,10))>a&&(r=a,this.log("End range automatically set to the max value of "+a)),l<0||r-l<0||l>a||r>a?(o=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(o=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:o}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return o.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",o=e.splitText(t),a=o.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=o.textContent,o.parentNode.replaceChild(i,o),a}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,o){var a=this;e.nodes.every((function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),f=e.value.substr(c+i.start);if(i.node=a.wrapRangeInTextNode(i.node,u,c),e.value=d+f,e.nodes.forEach((function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,o(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,o){var a=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var o=void 0;null!==(o=e.exec(t.textContent))&&""!==o[i];)if(n(o[i],t)){var l=o.index;if(0!==i)for(var s=1;s<i;s++)l+=o[s].length;t=a.wrapRangeInTextNode(t,l,l+o[i].length),r(t.previousSibling),e.lastIndex=0}})),o()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,o){var a=this,i=0===t?0:t+1;this.getTextNodes((function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;a.wrapRangeInMappedTextNode(t,s,c,(function(e){return n(l[i],e)}),(function(t,n){e.lastIndex=n,r(t)}))}o()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var o=this;this.getTextNodes((function(a){var i=a.value.length;e.forEach((function(e,r){var l=o.checkWhitespaceRanges(e,i,a.value),s=l.start,u=l.end;l.valid&&o.wrapRangeInMappedTextNode(a,s,u,(function(n){return t(n,e,a.value.substring(s,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,o="wrapMatches",a=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(o="wrapMatchesAcrossElements"),this[o](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),a,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,o="wrapMatches",a=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=a.keywords,l=a.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var a=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+a+'"'),n[o](a,1,(function(e,o){return n.opt.filter(o,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])}))};this.opt.acrossElements&&(o="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,o=this.checkRanges(e);o&&o.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(o)),this.wrapRangeFromIndex(o,(function(e,t,r,o){return n.opt.filter(e,t,r,o)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=o.matches(e,n),a=t.matchesExclude(e);return!r||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new o(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),a}();function i(e){var t=this,n=new a(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,a){for(var i,l,s=o(e),u=1;u<arguments.length;u++){for(var c in i=Object(arguments[u]))n.call(i,c)&&(s[c]=i[c]);if(t){l=t(i);for(var d=0;d<l.length;d++)r.call(i,l[d])&&(s[l[d]]=i[l[d]])}}return s}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var i in o={},n[a]=o,t)t.hasOwnProperty(i)&&(o[i]=e(t[i],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach((function(t,r){o[r]=e(t,n)})),o);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var o=e.classList;if(o.contains(t))return!0;if(o.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],i={};for(var l in a)if(a.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=a[l])}var u=o[e];return o[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,o,a){a=a||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],o||l);var s=t[l],u=r.util.type(s);"Object"!==u||a[i(s)]?"Array"!==u||a[i(s)]||(a[i(s)]=!0,e(s,n,l,a)):(a[i(s)]=!0,e(s,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",a),a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new l;return s(o,o.head,e),i(e,o,t,o.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,v=!!h.lookbehind,b=!!h.greedy,y=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var _=E.value;if(t.length>e.length)return;if(!(_ instanceof o)){var x,O=1;if(b){if(!(x=a(k,S,e,v))||x.index>=e.length)break;var P=x.index,C=x.index+x[0].length,T=S;for(T+=E.value.length;P>=T;)T+=(E=E.next).value.length;if(S=T-=E.value.length,E.value instanceof o)continue;for(var I=E;I!==t.tail&&(T<C||"string"==typeof I.value);I=I.next)O++,T+=I.value.length;O--,_=e.slice(S,T),x.index-=S}else if(!(x=a(k,0,_,v)))continue;P=x.index;var A=x[0],L=_.slice(0,P),N=_.slice(P+A.length),R=S+_.length;d&&R>d.reach&&(d.reach=R);var D=E.prev;if(L&&(D=s(t,D,L),S+=L.length),u(t,D,O),E=s(t,D,new o(f,g?r.tokenize(A,g):A,y,A)),N&&s(t,E,N),O>1){var j={cause:f+","+m,reach:R};i(e,t,n,E.prev,S,j),d&&j.reach>d.reach&&(d.reach=j.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function u(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach((function(t){o+=e(t,n)})),o}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(a.classes,i):a.classes.push(i)),r.hooks.run("wrap",a);var l="";for(var s in a.attributes)l+=" "+s+'="'+(a.attributes[s]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+l+">"+a.content+"</"+a.tag+">"},r}(),o=r;r.default=r,o.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\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:/<!\[CDATA\[[\s\S]*?\]\]>/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]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:o.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:o.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},o.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(e,t){o.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:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,function(e){var t="\\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},r={bash:n,environment:{pattern:RegExp("\\$"+t),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("(\\{)"+t),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;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{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:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.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 o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,i=0;i<o.length;i++)a[o[i]]=e.languages.bash[o[i]];e.languages.shell=e.languages.bash}(o),o.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.c=o.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|[?:~]|[-+*/%&|^!=<>]=?/}),o.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),o.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},o.languages.c.string],char:o.languages.c.char,comment:o.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:o.languages.c}}}}),o.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 o.languages.c.boolean,function(e){var t=/\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(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.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:t,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+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/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"])}(o),function(e){var t=/(?:"(?:\\(?:\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\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,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"))}(o),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"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=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={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:r,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:o})}(o),o.languages.javascript=o.languages.extend("clike",{"class-name":[o.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}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.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:o.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:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.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:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.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:o.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"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.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")),o.languages.js=o.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,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:t,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}(o),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\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:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(o),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \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("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),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__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\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(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.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(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o=t[n];if("code"===o.type){var a=o.content[1],i=o.content[3];if(a&&i&&"code-language"===a.type&&"code-block"===i.type&&"string"==typeof a.content){var l=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(o.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r],u=/language-(.+)/.exec(a);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(o),o.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:o.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+/},o.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var o=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var a=f(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),o.push(i.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),o.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&o.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var o=1,a=n;a<t.length;a++){var i=t[a],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))o++;else if(r.test(l)&&0===--o)return a}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),o.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var o={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function u(t){var n={};n["interpolation-punctuation"]=o;var a=e.tokenize(t,n);if(3===a.length){var i=[1,1];i.push.apply(i,s(a[1],e.languages.javascript,"javascript")),a.splice.apply(a,i)}return new e.Token("interpolation",a,r.alias,t)}function c(t,n,r){var o=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),i=0,c={},d=s(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=o,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var o=f[i],a="string"==typeof r?r:r.content,l=a.indexOf(o);if(-1!==l){++i;var s=a.substring(0,l),d=u(c[o]),p=a.substring(l+o.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,o=n.length;r<o;r++){var a=n[r];if("string"!=typeof a){var i=a.content;if(Array.isArray(i))if("template-string"===a.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(o),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,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 t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,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:t}}}}),e.languages.ts=e.languages.typescript}(o),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}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:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\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:t(/(\.\s*)#?<ID>/.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"],r=0;r<n.length;r++){var o=n[r],a=e.languages.javascript[o];"RegExp"===e.util.type(a)&&(a=e.languages.javascript[o]={pattern:a});var i=a.inside||{};a.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(o),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return o})),RegExp(e,t)}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<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=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var o=t[r],a=!1;if("string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"===o.content[o.content.length-1].content||n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(o);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}o.content&&"string"!=typeof o.content&&l(o.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(o),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,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:t})}(o),o.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},o.languages.go=o.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/}),o.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete o.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(o>=a.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++o;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(o),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(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(o),o.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"}},o.languages.webmanifest=o.languages.json,o.languages.less=o.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:/[+\-*\/]/}),o.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),o.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:/[:;(){}]/},o.languages.objectivec=o.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 o.languages.objectivec["class-name"],o.languages.objc=o.languages.objectivec,o.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/},o.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:/[{}[\];(),.:]/},o.languages.python["string-interpolation"].inside.interpolation.inside.rest=o.languages.python,o.languages.py=o.languages.python,o.languages.reason=o.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/}),o.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 o.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 t=/\$[-\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:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,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}})}(o),o.languages.scss=o.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]+\}/}}}),o.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}]}),o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.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}}),o.languages.scss.atrule.inside.rest=o.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"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:r.interpolation}},rest:r}},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:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(o),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),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}(o),o.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:/[()]/};const a=o},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},6500:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,a){if(!(r in n)){a.push(r);var i=a.indexOf(r);if(i<a.length-1)throw new Error("Circular dependency: "+a.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;o(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var o,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)o=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));a?o=a(f,(function(){return r(e)})):r(e)}return l[e]=o}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(7418),a=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var o=v.hasOwnProperty(t)?v[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,_=60107,x=60108,O=60114,P=60109,C=60110,T=60112,I=60113,A=60120,L=60115,N=60116,R=60121,D=60128,j=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;E=B("react.element"),S=B("react.portal"),_=B("react.fragment"),x=B("react.strict_mode"),O=B("react.profiler"),P=B("react.provider"),C=B("react.context"),T=B("react.forward_ref"),I=B("react.suspense"),A=B("react.suspense_list"),L=B("react.memo"),N=B("react.lazy"),R=B("react.block"),B("react.scope"),D=B("react.opaque.id"),j=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var o=s.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,l=a.length-1;1<=i&&0<=l&&o[i]!==a[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==a[l]){if(1!==i||1!==l)do{if(i--,0>--l||o[i]!==a[l])return"\n"+o[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Q(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function Z(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case _:return"Fragment";case S:return"Portal";case O:return"Profiler";case x:return"StrictMode";case I:return"Suspense";case A:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case C:return(e.displayName||"Context")+".Consumer";case P:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case L:return Z(e.type);case R:return Z(e._render);case N:t=e._payload,e=e._init;try{return Z(e(t))}catch(n){}}return null}function V(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Y(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=V(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=V(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?oe(e,t.type,n):t.hasOwnProperty("defaultValue")&&oe(e,t.type,V(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function oe(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function ae(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+V(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:V(n)}}function ue(e,t){var n=V(t.value),r=V(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de="http://www.w3.org/1999/xhtml",fe="http://www.w3.org/2000/svg";function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function me(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,ge,ve=(ge=function(e,t){if(e.namespaceURI!==fe||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ye={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},we=["Webkit","ms","Moz","O"];function ke(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ye.hasOwnProperty(e)&&ye[e]?(""+t).trim():t+"px"}function Ee(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ke(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(ye).forEach((function(e){we.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ye[t]=ye[e]}))}));var Se=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(Se[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Oe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Pe=null,Ce=null,Te=null;function Ie(e){if(e=ro(e)){if("function"!=typeof Pe)throw Error(i(280));var t=e.stateNode;t&&(t=ao(t),Pe(e.stateNode,e.type,t))}}function Ae(e){Ce?Te?Te.push(e):Te=[e]:Ce=e}function Le(){if(Ce){var e=Ce,t=Te;if(Te=Ce=null,Ie(e),t)for(e=0;e<t.length;e++)Ie(t[e])}}function Ne(e,t){return e(t)}function Re(e,t,n,r,o){return e(t,n,r,o)}function De(){}var je=Ne,Me=!1,Fe=!1;function Be(){null===Ce&&null===Te||(De(),Le())}function ze(e,t){var n=e.stateNode;if(null===n)return null;var r=ao(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var Ue=!1;if(d)try{var $e={};Object.defineProperty($e,"passive",{get:function(){Ue=!0}}),window.addEventListener("test",$e,$e),window.removeEventListener("test",$e,$e)}catch(ge){Ue=!1}function qe(e,t,n,r,o,a,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var He=!1,Ge=null,Qe=!1,Ze=null,Ve={onError:function(e){He=!0,Ge=e}};function We(e,t,n,r,o,a,i,l,s){He=!1,Ge=null,qe.apply(Ve,arguments)}function Ke(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Xe(e){if(Ke(e)!==e)throw Error(i(188))}function Je(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ke(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var a=o.alternate;if(null===a){if(null!==(r=o.return)){n=r;continue}break}if(o.child===a.child){for(a=o.child;a;){if(a===n)return Xe(o),e;if(a===r)return Xe(o),t;a=a.sibling}throw Error(i(188))}if(n.return!==r.return)n=o,r=a;else{for(var l=!1,s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l){for(s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function et(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var tt,nt,rt,ot,at=!1,it=[],lt=null,st=null,ut=null,ct=new Map,dt=new Map,ft=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function mt(e,t,n,r,o){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:o,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":lt=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":ut=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":dt.delete(t.pointerId)}}function gt(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e=mt(t,n,r,o,a),null!==t&&(null!==(t=ro(t))&&nt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function vt(e){var t=no(e.target);if(null!==t){var n=Ke(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void ot(e.lanePriority,(function(){a.unstable_runWithPriority(e.priority,(function(){rt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ro(n))&&nt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){bt(e)&&n.delete(t)}function wt(){for(at=!1;0<it.length;){var e=it[0];if(null!==e.blockedOn){null!==(e=ro(e.blockedOn))&&tt(e);break}for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&it.shift()}null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),null!==ut&&bt(ut)&&(ut=null),ct.forEach(yt),dt.forEach(yt)}function kt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,wt)))}function Et(e){function t(t){return kt(t,e)}if(0<it.length){kt(it[0],e);for(var n=1;n<it.length;n++){var r=it[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==lt&&kt(lt,e),null!==st&&kt(st,e),null!==ut&&kt(ut,e),ct.forEach(t),dt.forEach(t),n=0;n<ft.length;n++)(r=ft[n]).blockedOn===e&&(r.blockedOn=null);for(;0<ft.length&&null===(n=ft[0]).blockedOn;)vt(n),null===n.blockedOn&&ft.shift()}function St(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},xt={},Ot={};function Pt(e){if(xt[e])return xt[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ot)return xt[e]=n[t];return e}d&&(Ot=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Ct=Pt("animationend"),Tt=Pt("animationiteration"),It=Pt("animationstart"),At=Pt("transitionend"),Lt=new Map,Nt=new Map,Rt=["abort","abort",Ct,"animationEnd",Tt,"animationIteration",It,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",At,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],o=e[n+1];o="on"+(o[0].toUpperCase()+o.slice(1)),Nt.set(r,t),Lt.set(r,o),u(o,[r])}}(0,a.unstable_now)();var jt=8;function Mt(e){if(0!=(1&e))return jt=15,1;if(0!=(2&e))return jt=14,2;if(0!=(4&e))return jt=13,4;var t=24&e;return 0!==t?(jt=12,t):0!=(32&e)?(jt=11,32):0!==(t=192&e)?(jt=10,t):0!=(256&e)?(jt=9,256):0!==(t=3584&e)?(jt=8,t):0!=(4096&e)?(jt=7,4096):0!==(t=4186112&e)?(jt=6,t):0!==(t=62914560&e)?(jt=5,t):67108864&e?(jt=4,67108864):0!=(134217728&e)?(jt=3,134217728):0!==(t=805306368&e)?(jt=2,t):0!=(1073741824&e)?(jt=1,1073741824):(jt=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return jt=0;var r=0,o=0,a=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==a)r=a,o=jt=15;else if(0!==(a=134217727&n)){var s=a&~i;0!==s?(r=Mt(s),o=jt):0!==(l&=a)&&(r=Mt(l),o=jt)}else 0!==(a=n&~i)?(r=Mt(a),o=jt):0!==l&&(r=Mt(l),o=jt);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),o<=jt)return t;jt=o}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-Ht(t)),r|=e[n],t&=~o;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function zt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=Ut(24&~t))?zt(10,t):e;case 10:return 0===(e=Ut(192&~t))?zt(8,t):e;case 8:return 0===(e=Ut(3584&~t))&&(0===(e=Ut(4186112&~t))&&(e=512)),e;case 2:return 0===(t=Ut(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function Ut(e){return e&-e}function $t(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function qt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Gt(e)/Qt|0)|0},Gt=Math.log,Qt=Math.LN2;var Zt=a.unstable_UserBlockingPriority,Vt=a.unstable_runWithPriority,Wt=!0;function Kt(e,t,n,r){Me||De();var o=Xt,a=Me;Me=!0;try{Re(o,e,t,n,r)}finally{(Me=a)||Be()}}function Yt(e,t,n,r){Vt(Zt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var o;if(Wt)if((o=0==(4&t))&&0<it.length&&-1<pt.indexOf(e))e=mt(null,e,t,n,r),it.push(e);else{var a=Jt(e,t,n,r);if(null===a)o&&ht(e,r);else{if(o){if(-1<pt.indexOf(e))return e=mt(a,e,t,n,r),void it.push(e);if(function(e,t,n,r,o){switch(t){case"focusin":return lt=gt(lt,e,t,n,r,o),!0;case"dragenter":return st=gt(st,e,t,n,r,o),!0;case"mouseover":return ut=gt(ut,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return ct.set(a,gt(ct.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,dt.set(a,gt(dt.get(a)||null,e,t,n,r,o)),!0}return!1}(a,e,t,n,r))return;ht(e,r)}Dr(e,t,r,null,n)}}}function Jt(e,t,n,r){var o=Oe(r);if(null!==(o=no(o))){var a=Ke(o);if(null===a)o=null;else{var i=a.tag;if(13===i){if(null!==(o=Ye(a)))return o;o=null}else if(3===i){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;o=null}else a!==o&&(o=null)}}return Dr(e,t,r,o,n),null}var en=null,tn=null,nn=null;function rn(){if(nn)return nn;var e,t,n=tn,r=n.length,o="value"in en?en.value:en.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return nn=o.slice(e,1<t?1-t:void 0)}function on(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function ln(){return!1}function sn(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?an:ln,this.isPropagationStopped=ln,this}return o(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var un,cn,dn,fn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(fn),mn=o({},fn,{view:0,detail:0}),hn=sn(mn),gn=o({},mn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==dn&&(dn&&"mousemove"===e.type?(un=e.screenX-dn.screenX,cn=e.screenY-dn.screenY):cn=un=0,dn=e),un)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),vn=sn(gn),bn=sn(o({},gn,{dataTransfer:0})),yn=sn(o({},mn,{relatedTarget:0})),wn=sn(o({},fn,{animationName:0,elapsedTime:0,pseudoElement:0})),kn=o({},fn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),En=sn(kn),Sn=sn(o({},fn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},On={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Pn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=On[e])&&!!t[e]}function Cn(){return Pn}var Tn=o({},mn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=on(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?on(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?on(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),In=sn(Tn),An=sn(o({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Ln=sn(o({},mn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Nn=sn(o({},fn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Rn=o({},gn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Dn=sn(Rn),jn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,zn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),Un=String.fromCharCode(32),$n=!1;function qn(e,t){switch(e){case"keyup":return-1!==jn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Gn=!1;var Qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Qn[e.type]:"textarea"===t}function Vn(e,t,n,r){Ae(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Kn=null;function Yn(e){Tr(e,0)}function Xn(e){if(Y(oo(e)))return e}function Jn(e,t){if("change"===e)return t}var er=!1;if(d){var tr;if(d){var nr="oninput"in document;if(!nr){var rr=document.createElement("div");rr.setAttribute("oninput","return;"),nr="function"==typeof rr.oninput}tr=nr}else tr=!1;er=tr&&(!document.documentMode||9<document.documentMode)}function or(){Wn&&(Wn.detachEvent("onpropertychange",ar),Kn=Wn=null)}function ar(e){if("value"===e.propertyName&&Xn(Kn)){var t=[];if(Vn(t,Kn,e,Oe(e)),e=Yn,Me)e(t);else{Me=!0;try{Ne(e,t)}finally{Me=!1,Be()}}}}function ir(e,t,n){"focusin"===e?(or(),Kn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&or()}function lr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Kn)}function sr(e,t){if("click"===e)return Xn(t)}function ur(e,t){if("input"===e||"change"===e)return Xn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},dr=Object.prototype.hasOwnProperty;function fr(e,t){if(cr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!dr.call(t,n[r])||!cr(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function mr(e,t){var n,r=pr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pr(r)}}function hr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function gr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function vr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var br=d&&"documentMode"in document&&11>=document.documentMode,yr=null,wr=null,kr=null,Er=!1;function Sr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;Er||null==yr||yr!==X(r)||("selectionStart"in(r=yr)&&vr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},kr&&fr(kr,r)||(kr=r,0<(r=Mr(wr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=yr)))}Dt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Dt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Dt(Rt,2);for(var _r="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<_r.length;xr++)Nt.set(_r[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Or="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Pr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Or));function Cr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,a,l,s,u){if(We.apply(this,arguments),He){if(!He)throw Error(i(198));var c=Ge;He=!1,Ge=null,Qe||(Qe=!0,Ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Tr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==a&&o.isPropagationStopped())break e;Cr(o,l,u),a=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==a&&o.isPropagationStopped())break e;Cr(o,l,u),a=s}}}if(Qe)throw e=Ze,Qe=!1,Ze=null,e}function Ir(e,t){var n=io(t),r=e+"__bubble";n.has(r)||(Rr(t,e,2,!1),n.add(r))}var Ar="_reactListening"+Math.random().toString(36).slice(2);function Lr(e){e[Ar]||(e[Ar]=!0,l.forEach((function(t){Pr.has(t)||Nr(t,!1,e,null),Nr(t,!0,e,null)})))}function Nr(e,t,n,r){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=n;if("selectionchange"===e&&9!==n.nodeType&&(a=n.ownerDocument),null!==r&&!t&&Pr.has(e)){if("scroll"!==e)return;o|=2,a=r}var i=io(a),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(o|=4),Rr(a,e,o,t),i.add(l))}function Rr(e,t,n,r){var o=Nt.get(t);switch(void 0===o?2:o){case 0:o=Kt;break;case 1:o=Yt;break;default:o=Xt}n=o.bind(null,t,n,e),o=void 0,!Ue||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,o){var a=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===o||8===l.nodeType&&l.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===o||8===s.nodeType&&s.parentNode===o))return;i=i.return}for(;null!==l;){if(null===(i=no(l)))return;if(5===(s=i.tag)||6===s){r=a=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{je(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=a,o=Oe(n),i=[];e:{var l=Lt.get(e);if(void 0!==l){var s=pn,u=e;switch(e){case"keypress":if(0===on(n))break e;case"keydown":case"keyup":s=In;break;case"focusin":u="focus",s=yn;break;case"focusout":u="blur",s=yn;break;case"beforeblur":case"afterblur":s=yn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=vn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Ln;break;case Ct:case Tt:case It:s=wn;break;case At:s=Nn;break;case"scroll":s=hn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=En;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=An}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=ze(m,f))&&c.push(jr(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,o),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!no(u)&&!u[eo])&&(s||l)&&(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?no(u):null)&&(u!==(d=Ke(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=vn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=An,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:oo(s),p=null==u?l:oo(u),(l=new c(h,m+"leave",s,n,o)).target=d,l.relatedTarget=p,h=null,no(o)===r&&((c=new c(f,m+"enter",u,n,o)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=Fr(p))m++;for(p=0,h=f;h;h=Fr(h))p++;for(;0<m-p;)c=Fr(c),m--;for(;0<p-m;)f=Fr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=Fr(c),f=Fr(f)}c=null}else c=null;null!==s&&Br(i,l,s,c,!1),null!==u&&null!==d&&Br(i,d,u,c,!0)}if("select"===(s=(l=r?oo(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Jn;else if(Zn(l))if(er)g=ur;else{g=lr;var v=ir}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=sr);switch(g&&(g=g(e,r))?Vn(i,g,n,o):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&oe(l,"number",l.value)),v=r?oo(r):window,e){case"focusin":(Zn(v)||"true"===v.contentEditable)&&(yr=v,wr=r,kr=null);break;case"focusout":kr=wr=yr=null;break;case"mousedown":Er=!0;break;case"contextmenu":case"mouseup":case"dragend":Er=!1,Sr(i,n,o);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Sr(i,n,o)}var b;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Gn?qn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(zn&&"ko"!==n.locale&&(Gn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Gn&&(b=rn()):(tn="value"in(en=o)?en.value:en.textContent,Gn=!0)),0<(v=Mr(r,y)).length&&(y=new Sn(y,e,null,n,o),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=Hn(n))&&(y.data=b))),(b=Bn?function(e,t){switch(e){case"compositionend":return Hn(t);case"keypress":return 32!==t.which?null:($n=!0,Un);case"textInput":return(e=t.data)===Un&&$n?null:e;default:return null}}(e,n):function(e,t){if(Gn)return"compositionend"===e||!Mn&&qn(e,t)?(e=rn(),nn=tn=en=null,Gn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return zn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(o=new Sn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=b))}Tr(i,t)}))}function jr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=ze(e,n))&&r.unshift(jr(e,a,o)),null!=(a=ze(e,t))&&r.push(jr(e,a,o))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,o?null!=(s=ze(n,a))&&i.unshift(jr(n,s,l)):o||null!=(s=ze(n,a))&&i.push(jr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function zr(){}var Ur=null,$r=null;function qr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Hr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Gr="function"==typeof setTimeout?setTimeout:void 0,Qr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Kr=0;var Yr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Yr,Jr="__reactProps$"+Yr,eo="__reactContainer$"+Yr,to="__reactEvents$"+Yr;function no(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[eo]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Xr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function ro(e){return!(e=e[Xr]||e[eo])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function oo(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function ao(e){return e[Jr]||null}function io(e){var t=e[to];return void 0===t&&(t=e[to]=new Set),t}var lo=[],so=-1;function uo(e){return{current:e}}function co(e){0>so||(e.current=lo[so],lo[so]=null,so--)}function fo(e,t){so++,lo[so]=e.current,e.current=t}var po={},mo=uo(po),ho=uo(!1),go=po;function vo(e,t){var n=e.type.contextTypes;if(!n)return po;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function bo(e){return null!=(e=e.childContextTypes)}function yo(){co(ho),co(mo)}function wo(e,t,n){if(mo.current!==po)throw Error(i(168));fo(mo,t),fo(ho,n)}function ko(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(i(108,Z(t)||"Unknown",a));return o({},n,r)}function Eo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||po,go=mo.current,fo(mo,e),fo(ho,ho.current),!0}function So(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ko(e,t,go),r.__reactInternalMemoizedMergedChildContext=e,co(ho),co(mo),fo(mo,e)):co(ho),fo(ho,n)}var _o=null,xo=null,Oo=a.unstable_runWithPriority,Po=a.unstable_scheduleCallback,Co=a.unstable_cancelCallback,To=a.unstable_shouldYield,Io=a.unstable_requestPaint,Ao=a.unstable_now,Lo=a.unstable_getCurrentPriorityLevel,No=a.unstable_ImmediatePriority,Ro=a.unstable_UserBlockingPriority,Do=a.unstable_NormalPriority,jo=a.unstable_LowPriority,Mo=a.unstable_IdlePriority,Fo={},Bo=void 0!==Io?Io:function(){},zo=null,Uo=null,$o=!1,qo=Ao(),Ho=1e4>qo?Ao:function(){return Ao()-qo};function Go(){switch(Lo()){case No:return 99;case Ro:return 98;case Do:return 97;case jo:return 96;case Mo:return 95;default:throw Error(i(332))}}function Qo(e){switch(e){case 99:return No;case 98:return Ro;case 97:return Do;case 96:return jo;case 95:return Mo;default:throw Error(i(332))}}function Zo(e,t){return e=Qo(e),Oo(e,t)}function Vo(e,t,n){return e=Qo(e),Po(e,t,n)}function Wo(){if(null!==Uo){var e=Uo;Uo=null,Co(e)}Ko()}function Ko(){if(!$o&&null!==zo){$o=!0;var e=0;try{var t=zo;Zo(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),zo=null}catch(n){throw null!==zo&&(zo=zo.slice(e+1)),Po(No,Wo),n}finally{$o=!1}}}var Yo=k.ReactCurrentBatchConfig;function Xo(e,t){if(e&&e.defaultProps){for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Jo=uo(null),ea=null,ta=null,na=null;function ra(){na=ta=ea=null}function oa(e){var t=Jo.current;co(Jo),e.type._context._currentValue=t}function aa(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ia(e,t){ea=e,na=ta=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function la(e,t){if(na!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(na=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ta){if(null===ea)throw Error(i(308));ta=t,ea.dependencies={lanes:0,firstContext:t,responders:null}}else ta=ta.next=t;return e._currentValue}var sa=!1;function ua(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function ca(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function da(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function fa(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function pa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ma(e,t,n,r){var a=e.updateQueue;sa=!1;var i=a.firstBaseUpdate,l=a.lastBaseUpdate,s=a.shared.pending;if(null!==s){a.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=a.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=o({},f,s);break e;case 2:sa=!0}}null!==i.callback&&(e.flags|=32,null===(s=a.effects)?a.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=a.shared.pending))break;i=s.next,s.next=null,a.lastBaseUpdate=s,a.shared.pending=null}}null===d&&(u=f),a.baseState=u,a.firstBaseUpdate=c,a.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function ha(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(i(191,o));o.call(r)}}}var ga=(new r.Component).refs;function va(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ba={isMounted:function(e){return!!(e=e._reactInternals)&&Ke(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),o=ps(e),a=da(r,o);a.payload=t,null!=n&&(a.callback=n),fa(e,a),ms(e,o,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),o=ps(e),a=da(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),fa(e,a),ms(e,o,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),o=da(n,r);o.tag=2,null!=t&&(o.callback=t),fa(e,o),ms(e,r,n)}};function ya(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!fr(n,r)||!fr(o,a))}function wa(e,t,n){var r=!1,o=po,a=t.contextType;return"object"==typeof a&&null!==a?a=la(a):(o=bo(t)?go:mo.current,a=(r=null!=(r=t.contextTypes))?vo(e,o):po),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ba,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function ka(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ba.enqueueReplaceState(t,t.state,null)}function Ea(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=ga,ua(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=la(a):(a=bo(t)?go:mo.current,o.context=vo(e,a)),ma(e,n,o,r),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(va(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&ba.enqueueReplaceState(o,o.state,null),ma(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4)}var Sa=Array.isArray;function _a(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:(t=function(e){var t=r.refs;t===ga&&(t=r.refs={}),null===e?delete t[o]:t[o]=e},t._stringRef=o,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xa(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function Oa(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Qs(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=_a(e,t,n),r.return=e,r):((r=Zs(n.type,n.key,n.props,null,e.mode,r)).ref=_a(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ys(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Vs(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Zs(t.type,t.key,t.props,null,e.mode,n)).ref=_a(e,null,t),n.return=e,n;case S:return(t=Ys(t,e.mode,n)).return=e,t}if(Sa(t)||$(t))return(t=Vs(t,e.mode,n,null)).return=e,t;xa(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===o?n.type===_?d(e,t,n.props.children,r,o):u(e,t,n,r):null;case S:return n.key===o?c(e,t,n,r):null}if(Sa(n)||$(n))return null!==o?null:d(e,t,n,r,null);xa(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===_?d(t,e,r.props.children,o,r.key):u(t,e,r,o);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(Sa(r)||$(r))return d(t,e=e.get(n)||null,r,o,null);xa(t,r)}return null}function h(o,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var v=p(o,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(o,d),i=a(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(o,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(o,l[h],s))&&(i=a(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(o,d);h<l.length;h++)null!==(g=m(d,o,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=a(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(o,e)})),u}function g(o,l,s,u){var c=$(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(o,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(o,h),l=a(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(o,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(o,b.value,u))&&(l=a(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(o,h);!b.done;g++,b=s.next())null!==(b=m(h,o,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=a(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(o,e)})),c}return function(e,r,a,s){var u="object"==typeof a&&null!==a&&a.type===_&&null===a.key;u&&(a=a.props.children);var c="object"==typeof a&&null!==a;if(c)switch(a.$$typeof){case E:e:{for(c=a.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(a.type===_){n(e,u.sibling),(r=o(u,a.props.children)).return=e,e=r;break e}}else if(u.elementType===a.type){n(e,u.sibling),(r=o(u,a.props)).ref=_a(e,u,a),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}a.type===_?((r=Vs(a.props.children,e.mode,s,a.key)).return=e,e=r):((s=Zs(a.type,a.key,a.props,null,e.mode,s)).ref=_a(e,r,a),s.return=e,e=s)}return l(e);case S:e:{for(u=a.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=o(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ys(a,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,a)).return=e,e=r):(n(e,r),(r=Ks(a,e.mode,s)).return=e,e=r),l(e);if(Sa(a))return h(e,r,a,s);if($(a))return g(e,r,a,s);if(c&&xa(e,a),void 0===a&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,Z(e.type)||"Component"))}return n(e,r)}}var Pa=Oa(!0),Ca=Oa(!1),Ta={},Ia=uo(Ta),Aa=uo(Ta),La=uo(Ta);function Na(e){if(e===Ta)throw Error(i(174));return e}function Ra(e,t){switch(fo(La,t),fo(Aa,e),fo(Ia,Ta),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:me(null,"");break;default:t=me(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}co(Ia),fo(Ia,t)}function Da(){co(Ia),co(Aa),co(La)}function ja(e){Na(La.current);var t=Na(Ia.current),n=me(t,e.type);t!==n&&(fo(Aa,e),fo(Ia,n))}function Ma(e){Aa.current===e&&(co(Ia),co(Aa))}var Fa=uo(0);function Ba(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var za=null,Ua=null,$a=!1;function qa(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ha(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ga(e){if($a){var t=Ua;if(t){var n=t;if(!Ha(e,t)){if(!(t=Vr(n.nextSibling))||!Ha(e,t))return e.flags=-1025&e.flags|2,$a=!1,void(za=e);qa(za,n)}za=e,Ua=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,$a=!1,za=e}}function Qa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;za=e}function Za(e){if(e!==za)return!1;if(!$a)return Qa(e),$a=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=Ua;t;)qa(e,t),t=Vr(t.nextSibling);if(Qa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Ua=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Ua=null}}else Ua=za?Vr(e.stateNode.nextSibling):null;return!0}function Va(){Ua=za=null,$a=!1}var Wa=[];function Ka(){for(var e=0;e<Wa.length;e++)Wa[e]._workInProgressVersionPrimary=null;Wa.length=0}var Ya=k.ReactCurrentDispatcher,Xa=k.ReactCurrentBatchConfig,Ja=0,ei=null,ti=null,ni=null,ri=!1,oi=!1;function ai(){throw Error(i(321))}function ii(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function li(e,t,n,r,o,a){if(Ja=a,ei=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ya.current=null===e||null===e.memoizedState?Ni:Ri,e=n(r,o),oi){a=0;do{if(oi=!1,!(25>a))throw Error(i(301));a+=1,ni=ti=null,t.updateQueue=null,Ya.current=Di,e=n(r,o)}while(oi)}if(Ya.current=Li,t=null!==ti&&null!==ti.next,Ja=0,ni=ti=ei=null,ri=!1,t)throw Error(i(300));return e}function si(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ni?ei.memoizedState=ni=e:ni=ni.next=e,ni}function ui(){if(null===ti){var e=ei.alternate;e=null!==e?e.memoizedState:null}else e=ti.next;var t=null===ni?ei.memoizedState:ni.next;if(null!==t)ni=t,ti=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ti=e).memoizedState,baseState:ti.baseState,baseQueue:ti.baseQueue,queue:ti.queue,next:null},null===ni?ei.memoizedState=ni=e:ni=ni.next=e}return ni}function ci(e,t){return"function"==typeof t?t(e):t}function di(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ti,o=r.baseQueue,a=n.pending;if(null!==a){if(null!==o){var l=o.next;o.next=a.next,a.next=l}r.baseQueue=o=a,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var s=l=a=null,u=o;do{var c=u.lane;if((Ja&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,a=r):s=s.next=d,ei.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==o);null===s?a=r:s.next=l,cr(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function fi(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{a=e(a,l.action),l=l.next}while(l!==o);cr(a,t.memoizedState)||(Mi=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var o=t._workInProgressVersionPrimary;if(null!==o?e=o===r:(e=e.mutableReadLanes,(e=(Ja&e)===e)&&(t._workInProgressVersionPrimary=r,Wa.push(t))),e)return n(t._source);throw Wa.push(t),Error(i(350))}function mi(e,t,n,r){var o=Nl;if(null===o)throw Error(i(349));var a=t._getVersion,l=a(t._source),s=Ya.current,u=s.useState((function(){return pi(o,t,n)})),c=u[1],d=u[0];u=ni;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=ei;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=a(t._source);if(!cr(l,e)){e=n(t._source),cr(d,e)||(c(e),e=ps(g),o.mutableReadLanes|=e&o.pendingLanes),e=o.mutableReadLanes,o.entangledLanes|=e;for(var r=o.entanglements,i=e;0<i;){var s=31-Ht(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);o.mutableReadLanes|=r&o.pendingLanes}catch(a){n((function(){throw a}))}}))}),[t,r]),cr(m,n)&&cr(h,t)&&cr(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=c=Ai.bind(null,ei,e),u.queue=e,u.baseQueue=null,d=pi(o,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return mi(ui(),e,t,n)}function gi(e){var t=si();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:e}).dispatch=Ai.bind(null,ei,e),[t.memoizedState,e]}function vi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=ei.updateQueue)?(t={lastEffect:null},ei.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function bi(e){return e={current:e},si().memoizedState=e}function yi(){return ui().memoizedState}function wi(e,t,n,r){var o=si();ei.flags|=e,o.memoizedState=vi(1|t,n,void 0,void 0===r?null:r)}function ki(e,t,n,r){var o=ui();r=void 0===r?null:r;var a=void 0;if(null!==ti){var i=ti.memoizedState;if(a=i.destroy,null!==r&&ii(r,i.deps))return void vi(t,n,a,r)}ei.flags|=e,o.memoizedState=vi(1|t,n,a,r)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return ki(516,4,e,t)}function _i(e,t){return ki(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Oi(e,t,n){return n=null!=n?n.concat([e]):null,ki(4,2,xi.bind(null,t,e),n)}function Pi(){}function Ci(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ii(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ti(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ii(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ii(e,t){var n=Go();Zo(98>n?98:n,(function(){e(!0)})),Zo(97<n?97:n,(function(){var n=Xa.transition;Xa.transition=1;try{e(!1),t()}finally{Xa.transition=n}}))}function Ai(e,t,n){var r=fs(),o=ps(e),a={lane:o,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?a.next=a:(a.next=i.next,i.next=a),t.pending=a,i=e.alternate,e===ei||null!==i&&i===ei)oi=ri=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(a.eagerReducer=i,a.eagerState=s,cr(s,l))return}catch(u){}ms(e,o,r)}}var Li={readContext:la,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ni={readContext:la,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:la,useEffect:Ei,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return wi(4,2,e,t)},useMemo:function(e,t){var n=si();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=si();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ai.bind(null,ei,e),[r.memoizedState,e]},useRef:bi,useState:gi,useDebugValue:Pi,useDeferredValue:function(e){var t=gi(e),n=t[0],r=t[1];return Ei((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=gi(!1),t=e[0];return bi(e=Ii.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=si();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},mi(r,e,t,n)},useOpaqueIdentifier:function(){if($a){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Kr++).toString(36))),Error(i(355))})),n=gi(t)[1];return 0==(2&ei.mode)&&(ei.flags|=516,vi(5,(function(){n("r:"+(Kr++).toString(36))}),void 0,null)),t}return gi(t="r:"+(Kr++).toString(36)),t},unstable_isNewReconciler:!1},Ri={readContext:la,useCallback:Ci,useContext:la,useEffect:Si,useImperativeHandle:Oi,useLayoutEffect:_i,useMemo:Ti,useReducer:di,useRef:yi,useState:function(){return di(ci)},useDebugValue:Pi,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return Si((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=di(ci)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ci)[0]},unstable_isNewReconciler:!1},Di={readContext:la,useCallback:Ci,useContext:la,useEffect:Si,useImperativeHandle:Oi,useLayoutEffect:_i,useMemo:Ti,useReducer:fi,useRef:yi,useState:function(){return fi(ci)},useDebugValue:Pi,useDeferredValue:function(e){var t=fi(ci),n=t[0],r=t[1];return Si((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=fi(ci)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return fi(ci)[0]},unstable_isNewReconciler:!1},ji=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?Ca(t,null,n,r):Pa(t,e.child,n,r)}function Bi(e,t,n,r,o){n=n.render;var a=t.ref;return ia(t,o),r=li(e,t,n,r,a,o),null===e||Mi?(t.flags|=1,Fi(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,al(e,t,o))}function zi(e,t,n,r,o,a){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Zs(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Ui(e,t,i,r,o,a))}return i=e.child,0==(o&a)&&(o=i.memoizedProps,(n=null!==(n=n.compare)?n:fr)(o,r)&&e.ref===t.ref)?al(e,t,a):(t.flags|=1,(e=Qs(i,r)).ref=t.ref,e.return=t,t.child=e)}function Ui(e,t,n,r,o,a){if(null!==e&&fr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(a&o))return t.lanes=e.lanes,al(e,t,a);0!=(16384&e.flags)&&(Mi=!0)}return Hi(e,t,n,r,a)}function $i(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==a?a.baseLanes:n)}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,o,n),t.child}function qi(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Hi(e,t,n,r,o){var a=bo(n)?go:mo.current;return a=vo(t,a),ia(t,o),n=li(e,t,n,r,a,o),null===e||Mi?(t.flags|=1,Fi(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,al(e,t,o))}function Gi(e,t,n,r,o){if(bo(n)){var a=!0;Eo(t)}else a=!1;if(ia(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),wa(t,n,r),Ea(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=la(u):u=vo(t,u=bo(n)?go:mo.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&ka(t,i,r,u),sa=!1;var f=t.memoizedState;i.state=f,ma(t,r,i,o),s=t.memoizedState,l!==r||f!==s||ho.current||sa?("function"==typeof c&&(va(t,n,c,r),s=t.memoizedState),(l=sa||ya(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,ca(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Xo(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=la(s):s=vo(t,s=bo(n)?go:mo.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&ka(t,i,r,s),sa=!1,f=t.memoizedState,i.state=f,ma(t,r,i,o);var m=t.memoizedState;l!==d||f!==m||ho.current||sa?("function"==typeof p&&(va(t,n,p,r),m=t.memoizedState),(u=sa||ya(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Qi(e,t,n,r,a,o)}function Qi(e,t,n,r,o,a){qi(e,t);var i=0!=(64&t.flags);if(!r&&!i)return o&&So(t,n,!1),al(e,t,a);r=t.stateNode,ji.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Pa(t,e.child,null,a),t.child=Pa(t,null,l,a)):Fi(e,t,l,a),t.memoizedState=r.state,o&&So(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?wo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&wo(0,t.context,!1),Ra(e,t.containerInfo)}var Vi,Wi,Ki,Yi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,o=t.pendingProps,a=Fa.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&a)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(a|=1),fo(Fa,1&a),null===e?(void 0!==o.fallback&&Ga(t),e=o.children,a=o.fallback,i?(e=Ji(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,e):"number"==typeof o.unstable_expectedLoadTime?(e=Ji(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,t.lanes=33554432,e):((n=Ws({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(o=tl(e,t,o.children,o.fallback,n),i=t.child,a=e.child.memoizedState,i.memoizedState=null===a?{baseLanes:n}:{baseLanes:a.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Yi,o):(n=el(e,t,o.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var o=e.mode,a=e.child;return t={mode:"hidden",children:t},0==(2&o)&&null!==a?(a.childLanes=0,a.pendingProps=t):a=Ws(t,o,0,null),n=Vs(n,o,r,null),a.return=e,n.return=e,a.sibling=n,e.child=a,n}function el(e,t,n,r){var o=e.child;return e=o.sibling,n=Qs(o,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,o){var a=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&a)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Qs(i,l),null!==e?r=Qs(e,r):(r=Vs(r,a,o,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),aa(e.return,t)}function rl(e,t,n,r,o,a){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o,lastEffect:a}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o,i.lastEffect=a)}function ol(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fa.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(fo(Fa,r),0==(2&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===Ba(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),rl(t,!1,o,n,a,t.lastEffect);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===Ba(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}rl(t,!0,n,null,a,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function al(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Qs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Qs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$a)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return bo(t.type)&&yo(),null;case 3:return Da(),co(ho),co(mo),Ka(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Za(t)?t.flags|=4:r.hydrate||(t.flags|=256)),null;case 5:Ma(t);var a=Na(La.current);if(n=t.type,null!==e&&null!=t.stateNode)Wi(e,t,n,r),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Na(Ia.current),Za(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Jr]=l,n){case"dialog":Ir("cancel",r),Ir("close",r);break;case"iframe":case"object":case"embed":Ir("load",r);break;case"video":case"audio":for(e=0;e<Or.length;e++)Ir(Or[e],r);break;case"source":Ir("error",r);break;case"img":case"image":case"link":Ir("error",r),Ir("load",r);break;case"details":Ir("toggle",r);break;case"input":ee(r,l),Ir("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Ir("invalid",r);break;case"textarea":se(r,l),Ir("invalid",r)}for(var u in _e(n,l),e=null,l)l.hasOwnProperty(u)&&(a=l[u],"children"===u?"string"==typeof a?r.textContent!==a&&(e=["children",a]):"number"==typeof a&&r.textContent!==""+a&&(e=["children",""+a]):s.hasOwnProperty(u)&&null!=a&&"onScroll"===u&&Ir("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=zr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===a.nodeType?a:a.ownerDocument,e===de&&(e=pe(n)),e===de?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Xr]=t,e[Jr]=r,Vi(e,t),t.stateNode=e,u=xe(n,r),n){case"dialog":Ir("cancel",e),Ir("close",e),a=r;break;case"iframe":case"object":case"embed":Ir("load",e),a=r;break;case"video":case"audio":for(a=0;a<Or.length;a++)Ir(Or[a],e);a=r;break;case"source":Ir("error",e),a=r;break;case"img":case"image":case"link":Ir("error",e),Ir("load",e),a=r;break;case"details":Ir("toggle",e),a=r;break;case"input":ee(e,r),a=J(e,r),Ir("invalid",e);break;case"option":a=ae(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=o({},r,{value:void 0}),Ir("invalid",e);break;case"textarea":se(e,r),a=le(e,r),Ir("invalid",e);break;default:a=r}_e(n,a);var c=a;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?Ee(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ve(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Ir("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+V(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=zr)}qr(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Na(La.current),Na(Ia.current),Za(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return co(Fa),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Za(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fa.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Nl||0==(134217727&Ul)&&0==(134217727&$l)||bs(Nl,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Da(),null===e&&Lr(t.stateNode.containerInfo),null;case 10:return oa(t),null;case 19:if(co(Fa),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Ba(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return fo(Fa,1&Fa.current|2),t.child}e=e.sibling}null!==r.tail&&Ho()>Ql&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Ba(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!$a)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ho()-r.renderingStartTime>Ql&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ho(),n.sibling=null,t=Fa.current,fo(Fa,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:bo(e.type)&&yo();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Da(),co(ho),co(mo),Ka(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Ma(e),null;case 13:return co(Fa),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return co(Fa),null;case 4:return Da(),null;case 10:return oa(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Q(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Na(Ia.current);var i,l=null;switch(n){case"input":a=J(e,a),r=J(e,r),l=[];break;case"option":a=ae(e,a),r=ae(e,r),l=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),l=[];break;case"textarea":a=le(e,a),r=le(e,r),l=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=zr)}for(d in _e(n,r),n=null,a)if(!r.hasOwnProperty(d)&&a.hasOwnProperty(d)&&null!=a[d])if("style"===d){var u=a[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=a?a[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Ir("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=da(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Yl=r),cl(0,t)},n}function pl(e,t,n){(n=da(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return cl(0,t),r(o)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Xo(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var o=e;r=o.next,0!=(4&(o=o.tag))&&0!=(1&o)&&(Ms(n,e),js(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Xo(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ha(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}ha(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&qr(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Et(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var o=n.memoizedProps.style;o=null!=o&&o.hasOwnProperty("display")?o.display:null,r.style.display=ke("display",o)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(xo&&"function"==typeof xo.onCommitFiberUnmount)try{xo.onCommitFiberUnmount(_o,t)}catch(a){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,o=r.destroy;if(r=r.tag,void 0!==o)if(0!=(4&r))Ms(t,n);else{r=t;try{o()}catch(a){zs(r,a)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(a){zs(t,a)}break;case 5:hl(t);break;case 4:xl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):_l(e,n,t)}function Sl(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=zr));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function _l(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(_l(e,t,n),e=e.sibling;null!==e;)_l(e,t,n),e=e.sibling}function xl(e,t){for(var n,r,o=t,a=!1;;){if(!a){a=o.return;e:for(;;){if(null===a)throw Error(i(160));switch(n=a.stateNode,a.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}a=a.return}a=!0}if(5===o.tag||6===o.tag){e:for(var l=e,s=o,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=o.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){n=o.stateNode.containerInfo,r=!0,o.child.return=o,o=o.child;continue}}else if(yl(e,o),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(a=!1)}o.sibling.return=o.return,o=o.sibling}}function Ol(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var o=null!==e?e.memoizedProps:r;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[Jr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,o),t=xe(e,r),o=0;o<a.length;o+=2){var l=a[o],s=a[o+1];"style"===l?Ee(n,s):"dangerouslySetInnerHTML"===l?ve(n,s):"children"===l?be(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(a=r.value)?ie(n,!!r.multiple,a,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,Et(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=Ho(),bl(t.child,!0)),void Pl(t);case 19:return void Pl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Pl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Cl(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Tl=Math.ceil,Il=k.ReactCurrentDispatcher,Al=k.ReactCurrentOwner,Ll=0,Nl=null,Rl=null,Dl=0,jl=0,Ml=uo(0),Fl=0,Bl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Ql=1/0;function Zl(){Ql=Ho()+500}var Vl,Wl=null,Kl=!1,Yl=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],os=null,as=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Ll)?Ho():-1!==ls?ls:ls=Ho()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Go()?1:2;if(0===ss&&(ss=zl),0!==Yo.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Go(),0!=(4&Ll)&&98===e?e=zt(12,ss):e=zt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<as)throw as=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;qt(e,t,n),e===Nl&&($l|=t,4===Fl&&bs(e,Dl));var r=Go();1===t?0!=(8&Ll)&&0==(48&Ll)?ys(e):(gs(e,n),0===Ll&&(Zl(),Wo())):(0==(4&Ll)||98!==r&&99!==r||(null===os?os=new Set([e]):os.add(e)),gs(e,n)),Hl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,o=e.pingedLanes,a=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=a[s];if(-1===c){if(0==(u&r)||0!=(u&o)){c=t,Mt(u);var d=jt;a[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Nl?Dl:0),t=jt,0===r)null!==n&&(n!==Fo&&Co(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Fo&&Co(n)}15===t?(n=ys.bind(null,e),null===zo?(zo=[n],Uo=Po(No,Ko)):zo.push(n),n=Fo):14===t?n=Vo(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Vo(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Ll))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=Ft(e,e===Nl?Dl:0);if(0===n)return null;var r=n,o=Ll;Ll|=16;var a=Os();for(Nl===e&&Dl===r||(Zl(),_s(e,r));;)try{Ts();break}catch(s){xs(e,s)}if(ra(),Il.current=a,Ll=o,null!==Rl?r=0:(Nl=null,Dl=0,r=Fl),0!=(zl&$l))_s(e,0);else if(0!==r){if(2===r&&(Ll|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=Ps(e,n))),1===r)throw t=Bl,_s(e,0),bs(e,n),gs(e,Ho()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ls(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=Gl+500-Ho())){if(0!==Ft(e,0))break;if(((o=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=Gr(Ls.bind(null,e),r);break}Ls(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,o=-1;0<n;){var l=31-Ht(n);a=1<<l,(l=r[l])>o&&(o=l),n&=~a}if(n=o,10<(n=(120>(n=Ho()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Tl(n/1960))-n)){e.timeoutHandle=Gr(Ls.bind(null,e),n);break}Ls(e);break;default:throw Error(i(329))}}return gs(e,Ho()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Ll))throw Error(i(327));if(Ds(),e===Nl&&0!=(e.expiredLanes&Dl)){var t=Dl,n=Ps(e,t);0!=(zl&$l)&&(n=Ps(e,t=Ft(e,t)))}else n=Ps(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Ll|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=Ps(e,t))),1===n)throw n=Bl,_s(e,0),bs(e,t),gs(e,Ho()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ls(e),gs(e,Ho()),null}function ws(e,t){var n=Ll;Ll|=1;try{return e(t)}finally{0===(Ll=n)&&(Zl(),Wo())}}function ks(e,t){var n=Ll;Ll&=-2,Ll|=8;try{return e(t)}finally{0===(Ll=n)&&(Zl(),Wo())}}function Es(e,t){fo(Ml,jl),jl|=t,zl|=t}function Ss(){jl=Ml.current,co(Ml)}function _s(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Qr(n)),null!==Rl)for(n=Rl.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&yo();break;case 3:Da(),co(ho),co(mo),Ka();break;case 5:Ma(r);break;case 4:Da();break;case 13:case 19:co(Fa);break;case 10:oa(r);break;case 23:case 24:Ss()}n=n.return}Nl=e,Rl=Qs(e.current,null),Dl=jl=zl=t,Fl=0,Bl=null,ql=$l=Ul=0}function xs(e,t){for(;;){var n=Rl;try{if(ra(),Ya.current=Li,ri){for(var r=ei.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ri=!1}if(Ja=0,ni=ti=ei=null,oi=!1,Al.current=null,null===n||null===n.return){Fl=1,Bl=t,Rl=null;break}e:{var a=e,i=n.return,l=n,s=t;if(t=Dl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fa.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=da(-1,1);b.tag=2,fa(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=a.pingCache;if(null===y?(y=a.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=Us.bind(null,a,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((Z(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:a=s,f.flags|=4096,t&=-t,f.lanes|=t,pa(f,fl(0,a,t));break e;case 1:a=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,pa(f,pl(f,a,t));break e}}f=f.return}while(null!==f)}As(n)}catch(S){t=S,Rl===n&&null!==n&&(Rl=n=n.return);continue}break}}function Os(){var e=Il.current;return Il.current=Li,null===e?Li:e}function Ps(e,t){var n=Ll;Ll|=16;var r=Os();for(Nl===e&&Dl===t||_s(e,t);;)try{Cs();break}catch(o){xs(e,o)}if(ra(),Ll=n,Il.current=r,null!==Rl)throw Error(i(261));return Nl=null,Dl=0,Fl}function Cs(){for(;null!==Rl;)Is(Rl)}function Ts(){for(;null!==Rl&&!To();)Is(Rl)}function Is(e){var t=Vl(e.alternate,e,jl);e.memoizedProps=e.pendingProps,null===t?As(e):Rl=t,Al.current=null}function As(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,jl)))return void(Rl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&jl)||0==(4&n.mode)){for(var r=0,o=n.child;null!==o;)r|=o.lanes|o.childLanes,o=o.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Rl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Rl=t);Rl=t=e}while(null!==t);0===Fl&&(Fl=5)}function Ls(e){var t=Go();return Zo(99,Ns.bind(null,e,t)),null}function Ns(e,t){do{Ds()}while(null!==es);if(0!=(48&Ll))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,o=r,a=e.pendingLanes&~o;e.pendingLanes=o,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=o,e.mutableReadLanes&=o,e.entangledLanes&=o,o=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<a;){var u=31-Ht(a),c=1<<u;o[u]=0,l[u]=-1,s[u]=-1,a&=~c}if(null!==os&&0==(24&r)&&os.has(e)&&os.delete(e),e===Nl&&(Rl=Nl=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(o=Ll,Ll|=32,Al.current=null,Ur=Wt,vr(l=gr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,a=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(O){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==a&&3!==g.nodeType||(f=d+a),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++m===a&&(f=d),v===u&&++h===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;$r={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Wl=r;do{try{Rs()}catch(O){if(null===Wl)throw Error(i(330));zs(Wl,O),Wl=Wl.nextEffect}}while(null!==Wl);cs=null,Wl=r;do{try{for(l=e;null!==Wl;){var y=Wl.flags;if(16&y&&be(Wl.stateNode,""),128&y){var w=Wl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Wl),Wl.flags&=-3;break;case 6:El(Wl),Wl.flags&=-3,Ol(Wl.alternate,Wl);break;case 1024:Wl.flags&=-1025;break;case 1028:Wl.flags&=-1025,Ol(Wl.alternate,Wl);break;case 4:Ol(Wl.alternate,Wl);break;case 8:xl(l,s=Wl);var E=s.alternate;wl(s),null!==E&&wl(E)}Wl=Wl.nextEffect}}catch(O){if(null===Wl)throw Error(i(330));zs(Wl,O),Wl=Wl.nextEffect}}while(null!==Wl);if(k=$r,w=gr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&vr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=mr(y,E),a=mr(y,l),s&&a&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==a.node||k.focusOffset!==a.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(a.node,a.offset)):(w.setEnd(a.node,a.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!Ur,$r=Ur=null,e.current=n,Wl=r;do{try{for(y=e;null!==Wl;){var S=Wl.flags;if(36&S&&vl(y,Wl.alternate,Wl),128&S){w=void 0;var _=Wl.ref;if(null!==_){var x=Wl.stateNode;Wl.tag,w=x,"function"==typeof _?_(w):_.current=w}}Wl=Wl.nextEffect}}catch(O){if(null===Wl)throw Error(i(330));zs(Wl,O),Wl=Wl.nextEffect}}while(null!==Wl);Wl=null,Bo(),Ll=o}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Wl=r;null!==Wl;)t=Wl.nextEffect,Wl.nextEffect=null,8&Wl.flags&&((S=Wl).sibling=null,S.stateNode=null),Wl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?as++:(as=0,is=e):as=0,n=n.stateNode,xo&&"function"==typeof xo.onCommitFiberRoot)try{xo.onCommitFiberRoot(_o,n,void 0,64==(64&n.current.flags))}catch(O){}if(gs(e,Ho()),Kl)throw Kl=!1,e=Yl,Yl=null,e;return 0!=(8&Ll)||Wo(),null}function Rs(){for(;null!==Wl;){var e=Wl.alternate;ds||null===cs||(0!=(8&Wl.flags)?et(Wl,cs)&&(ds=!0):13===Wl.tag&&Cl(e,Wl)&&et(Wl,cs)&&(ds=!0));var t=Wl.flags;0!=(256&t)&&gl(e,Wl),0==(512&t)||Jl||(Jl=!0,Vo(97,(function(){return Ds(),null}))),Wl=Wl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Zo(e,Fs)}return!1}function js(e,t){ns.push(t,e),Jl||(Jl=!0,Vo(97,(function(){return Ds(),null})))}function Ms(e,t){rs.push(t,e),Jl||(Jl=!0,Vo(97,(function(){return Ds(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Ll))throw Error(i(331));var t=Ll;Ll|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var o=n[r],a=n[r+1],l=o.destroy;if(o.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===a)throw Error(i(330));zs(a,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){o=n[r],a=n[r+1];try{var s=o.create;o.destroy=s()}catch(u){if(null===a)throw Error(i(330));zs(a,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Ll=t,Wo(),!0}function Bs(e,t,n){fa(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&(qt(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var o=pl(n,e=ul(t,e),1);if(fa(n,o),o=fs(),null!==(n=hs(n,1)))qt(n,1,o),gs(n,o);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(a){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Nl===e&&(Dl&n)===n&&(4===Fl||3===Fl&&(62914560&Dl)===Dl&&500>Ho()-Gl?_s(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Go()?1:2:(0===ss&&(ss=zl),0===(t=Ut(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&(qt(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Qs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Zs(e,t,n,r,o,a){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case _:return Vs(n.children,o,a,t);case j:l=8,o|=16;break;case x:l=8,o|=1;break;case O:return(e=Hs(12,n,t,8|o)).elementType=O,e.type=O,e.lanes=a,e;case I:return(e=Hs(13,n,t,o)).type=I,e.elementType=I,e.lanes=a,e;case A:return(e=Hs(19,n,t,o)).elementType=A,e.lanes=a,e;case M:return Ws(n,o,a,t);case F:return(e=Hs(24,n,t,o)).elementType=F,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case P:l=10;break e;case C:l=9;break e;case T:l=11;break e;case L:l=14;break e;case N:l=16,r=null;break e;case R:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function Vs(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ws(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=M,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Ys(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function eu(e,t,n,r){var o=t.current,a=fs(),l=ps(o);e:if(n){t:{if(Ke(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(bo(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(bo(u)){n=ko(n,u,s);break e}}n=s}else n=po;return null===t.context?t.context=n:t.pendingContext=n,(t=da(a,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),fa(o,t),ms(o,l,a),l}function tu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function nu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function ru(e,t){nu(e,t),(e=e.alternate)&&nu(e,t)}function ou(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,ua(t),e[eo]=n.current,Lr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var o=(t=r[e])._getVersion;o=o(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,o]:n.mutableSourceEagerHydrationData.push(t,o)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function iu(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a._internalRoot;if("function"==typeof o){var l=o;o=function(){var e=tu(i);l.call(e)}}eu(t,i,e,o)}else{if(a=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ou(e,0,t?{hydrate:!0}:void 0)}(n,r),i=a._internalRoot,"function"==typeof o){var s=o;o=function(){var e=tu(i);s.call(e)}}ks((function(){eu(t,i,e,o)}))}return tu(i)}function lu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return Js(e,t,null,n)}Vl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||ho.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Va();break;case 5:ja(t);break;case 1:bo(t.type)&&Eo(t);break;case 4:Ra(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var o=t.type._context;fo(Jo,o._currentValue),o._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(fo(Fa,1&Fa.current),null!==(t=al(e,t,n))?t.sibling:null);fo(Fa,1&Fa.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return ol(e,t,n);t.flags|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),fo(Fa,Fa.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return al(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=vo(t,mo.current),ia(t,n),o=li(null,t,r,e,o,n),t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,bo(r)){var a=!0;Eo(t)}else a=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ua(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&va(t,r,l,e),o.updater=ba,t.stateNode=o,o._reactInternals=t,Ea(t,r,e,n),t=Qi(null,t,r,!0,a,n)}else t.tag=0,Fi(null,t,o,n),t=t.child;return t;case 16:o=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=(a=o._init)(o._payload),t.type=o,a=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===L)return 14}return 2}(o),e=Xo(o,e),a){case 0:t=Hi(null,t,o,e,n);break e;case 1:t=Gi(null,t,o,e,n);break e;case 11:t=Bi(null,t,o,e,n);break e;case 14:t=zi(null,t,o,Xo(o.type,e),r,n);break e}throw Error(i(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Hi(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 1:return r=t.type,o=t.pendingProps,Gi(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,ca(e,t),ma(t,r,null,n),(r=t.memoizedState.element)===o)Va(),t=al(e,t,n);else{if((a=(o=t.stateNode).hydrate)&&(Ua=Vr(t.stateNode.containerInfo.firstChild),za=t,a=$a=!0),a){if(null!=(e=o.mutableSourceEagerHydrationData))for(o=0;o<e.length;o+=2)(a=e[o])._workInProgressVersionPrimary=e[o+1],Wa.push(a);for(n=Ca(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Va();t=t.child}return t;case 5:return ja(t),null===e&&Ga(t),r=t.type,o=t.pendingProps,a=null!==e?e.memoizedProps:null,l=o.children,Hr(r,o)?l=null:null!==a&&Hr(r,a)&&(t.flags|=16),qi(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&Ga(t),null;case 13:return Xi(e,t,n);case 4:return Ra(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Pa(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,Bi(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,l=t.memoizedProps,a=o.value;var s=t.type._context;if(fo(Jo,s._currentValue),s._currentValue=a,null!==l)if(s=l.value,0===(a=cr(s,a)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,a):1073741823))){if(l.children===o.children&&!ho.current){t=al(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&a)){1===s.tag&&((c=da(-1,n&-n)).tag=2,fa(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),aa(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(a=t.pendingProps).children,ia(t,n),r=r(o=la(o,a.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return a=Xo(o=t.type,t.pendingProps),zi(e,t,o,a=Xo(o.type,a),r,n);case 15:return Ui(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xo(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,bo(r)?(e=!0,Eo(t)):e=!1,ia(t,n),wa(t,r,o),Ea(t,r,o,n),Qi(null,t,r,!0,e,n);case 19:return ol(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ou.prototype.render=function(e){eu(e,this._internalRoot,null,null)},ou.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;eu(null,e,null,(function(){t[eo]=null}))},tt=function(e){13===e.tag&&(ms(e,4,fs()),ru(e,4))},nt=function(e){13===e.tag&&(ms(e,67108864,fs()),ru(e,67108864))},rt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),ru(e,n)}},ot=function(e,t){return t()},Pe=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=ao(r);if(!o)throw Error(i(90));Y(r),ne(r,o)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ne=ws,Re=function(e,t,n,r,o){var a=Ll;Ll|=4;try{return Zo(98,e.bind(null,t,n,r,o))}finally{0===(Ll=a)&&(Zl(),Wo())}},De=function(){0==(49&Ll)&&(function(){if(null!==os){var e=os;os=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Ho())}))}Wo()}(),Ds())},je=function(e,t){var n=Ll;Ll|=2;try{return e(t)}finally{0===(Ll=n)&&(Zl(),Wo())}};var su={Events:[ro,oo,ao,Ae,Le,Ds,{current:!1}]},uu={findFiberByHostInstance:no,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},cu={bundleType:uu.bundleType,version:uu.version,rendererPackageName:uu.rendererPackageName,rendererConfig:uu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Je(e))?null:e.stateNode},findFiberByHostInstance:uu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var du=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!du.isDisabled&&du.supportsFiber)try{_o=du.inject(cu),xo=du}catch(ge){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return iu(null,e,t,!0,n)},t.render=function(e,t,n){if(!au(t))throw Error(i(200));return iu(null,e,t,!1,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!a(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!a(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),o=n(5697),a=n.n(o),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={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"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},_=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},x=function(e){return S(e,"onChangeClientState")||function(){}},O=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},P=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},C=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var o={};n.filter((function(e){for(var n,a=Object.keys(e),i=0;i<a.length;i+=1){var l=a[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][u]&&(o[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(o),i=0;i<a.length;i+=1){var l=a[i],s=f({},r[l],o[l]);r[l]=s}return e}),[]).reverse()},T=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},I=function(e){return Array.isArray(e)?e.join(""):e},A=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},L=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},N=[g.NOSCRIPT,g.SCRIPT,g.STYLE],R=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},j=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=j(n,o),[r.createElement(g.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=D(n),a=I(t);return o?"<"+e+' data-rh="true" '+o+">"+R(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+R(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return j(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===N.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=A(e.metaTags,y),a=A(t,v),i=A(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,o.priority),M(g.LINK,a.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,o.priority,r)+" "+F(g.LINK,a.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,a,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Q=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},Z=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===o.indexOf(s)&&o.push(s);var c=a.indexOf(s);-1!==c&&a.splice(c,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},V=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;Z(g.BODY,e.bodyAttributes),Z(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=I(e)),Z(g.TITLE,t)}(c,d);var f={baseTag:Q(g.BASE,n),linkTags:Q(g.LINK,o),metaTags:Q(g.META,a),noscriptTags:Q(g.NOSCRIPT,i),scriptTags:Q(g.SCRIPT,s),styleTags:Q(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},W=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,o=null,a=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:P(["href"],e),bodyAttributes:O("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:O("htmlAttributes",e),linkTags:C(g.LINK,["rel","href"],e),metaTags:C(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:C(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:x(e),scriptTags:C(g.SCRIPT,["src","innerHTML"],e),styleTags:C(g.STYLE,["cssText"],e),title:_(e),titleAttributes:O("titleAttributes",e),prioritizeSeoTags:T(e,"prioritizeSeoTags")});G.canUseDOM?(t=a,W&&cancelAnimationFrame(W),t.defer?W=requestAnimationFrame((function(){V(t,(function(){W=null}))})):(V(t),W=null)):B&&(o=B(a)),r(o)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(L(this.props,"helmetData"),L(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},o,((t={})[r.type]=i,t.titleAttributes=f({},a),t));case g.BODY:return f({},o,{bodyAttributes:f({},a)});case g.HTML:return f({},o,{htmlAttributes:f({},a)});default:return f({},o,((n={})[r.type]=f({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.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+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=h(r,Y),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,a),s){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:l,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),o=f({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof U||(a=new U(a.context,a.instances)),a?r.createElement(K,f({},o,{context:a.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,f({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case a:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case o:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=a,t.Lazy=g,t.Memo=h,t.Portal=o,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return a(o(o(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),a(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}a(g,"propTypes",{report:s.func.isRequired}),a(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6775),o=n(7462),a=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.rs,n,e.map((function(e,n){return a.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.Z)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(6775),o=n(5068),a=n(7294),i=n(9318),l=n(7462),s=n(3366),u=n(2177),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,o.Z)(t,e),t.prototype.render=function(){return a.createElement(r.F0,{history:this.history,children:this.props.children})},t}(a.Component);a.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},m=a.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==m&&t||n,a.createElement("a",c)}));var g=m((function(e,t){var n=e.component,o=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||v:h.innerRef=v,a.createElement(o,h)}))})),v=function(e){return e},b=a.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,_=e.to,x=e.innerRef,O=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(_,n),n),s=i.pathname,P=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),C=P?(0,r.LX)(n.pathname,{path:P,exact:h,sensitive:k,strict:E}):null,T=!!(y?y(C,n):C),I="function"==typeof m?m(T):m,A="function"==typeof S?S(T):S;T&&(I=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(I,c),A=(0,l.Z)({},A,p));var L=(0,l.Z)({"aria-current":T&&o||null,className:I,style:A,to:i},O);return v!==b?L.ref=t||x:L.innerRef=x,a.createElement(g,L)}))}))},6775:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>k,rs:()=>A,s6:()=>w,LX:()=>_,k6:()=>N,TH:()=>R});var r=n(5068),o=n(7294),a=n(9318),i=n(5697),l=n.n(i),s=1073741823,u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};function c(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}var d=o.createContext||function(e,t){var n,a,i="__create-react-context-"+function(){var e="__global_unique_id__";return u[e]=(u[e]||0)+1}()+"__",d=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=c(t.props.value),t}(0,r.Z)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(i=o)?0!==a||1/a==1/i:a!=a&&i!=i)?n=0:(n="function"==typeof t?t(r,o):s,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,i},o.render=function(){return this.props.children},n}(o.Component);d.childContextTypes=((n={})[i]=l().object.isRequired,n);var f=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?s:t},o.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?s:e},o.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},o.getValue=function(){return this.context[i]?this.context[i].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return f.contextTypes=((a={})[i]=l().object,a),{Provider:d,Consumer:f}};const f=d;var p=n(2177),m=n(7462),h=n(9658),g=n.n(h),v=(n(9864),n(3366)),b=(n(8679),function(e){var t=f();return t.displayName=e,t}),y=b("Router-History"),w=b("Router"),k=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.createElement(w.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;o.Component;var E={},S=0;function _(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=E[n]||(E[n]={});if(r[e])return r[e];var o=[],a={regexp:g()(e,o,t),keys:o};return S<1e4&&(r[e]=a,S++),a}(n,{end:a,strict:l,sensitive:u}),o=r.regexp,i=r.keys,s=o.exec(e);if(!s)return null;var c=s[0],d=s.slice(1),f=e===c;return a&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(w.Consumer,null,(function(t){t||(0,p.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?_(n.pathname,e.props):t.match,a=(0,m.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,s=i.component,u=i.render;return Array.isArray(l)&&function(e){return 0===o.Children.count(e)}(l)&&(l=null),o.createElement(w.Provider,{value:a},a.match?l?"function"==typeof l?l(a):l:s?o.createElement(s,a):u?u(a):null:"function"==typeof l?l(a):null)}))},t}(o.Component);function O(e){return"/"===e.charAt(0)?e:"/"+e}function P(e,t){if(!e)return t;var n=O(e);return 0!==t.pathname.indexOf(n)?t:(0,m.Z)({},t,{pathname:t.pathname.substr(n.length)})}function C(e){return"string"==typeof e?e:(0,a.Ep)(e)}function T(e){return function(){(0,p.Z)(!1)}}function I(){}o.Component;var A=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(w.Consumer,null,(function(t){t||(0,p.Z)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,(function(e){if(null==r&&o.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?_(a.pathname,(0,m.Z)({},e.props,{path:i})):t.match}})),r?o.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(o.Component);var L=o.useContext;function N(){return L(y)}function R(){return L(w).location}},9658:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,_=n[2]||c,x=v||b;r.push({name:g||a++,prefix:h||"",delimiter:_,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:x?u(x):w?".*":"[^"+s(_)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var a="",l=t||{},s=(o||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(a+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');a+=c.prefix+d}}else a+=c}return a}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,a=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return o||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=a?"$":o&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(p(e[o],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(a(e,n),t,n)}(e,t,n)}},2408:(e,t,n)=>{"use strict";var r=n(7418),o=60103,a=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;o=d("react.element"),a=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,a={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(a[r]=t[r]);var s=arguments.length-2;if(1===s)a.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];a.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===a[r]&&(a[r]=s[r]);return{$$typeof:o,type:e,key:i,ref:l,props:a,_owner:w.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var x=/\/+/g;function O(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function P(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case o:case a:s=!0}}if(s)return i=i(s=e),e=""===r?"."+O(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(x,"$&/")+"/"),P(i,t,n,"",(function(e){return e}))):null!=i&&(_(i)&&(i=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(x,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+O(l=e[u],u);s+=P(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=P(l=l.value,t,n,c=r+O(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function C(e,t,n){if(null==e)return e;var r=[],o=0;return P(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function T(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var I={current:null};function A(){var e=I.current;if(null===e)throw Error(p(321));return e}var L={ReactCurrentDispatcher:I,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:C,forEach:function(e,t,n){C(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return C(e,(function(){t++})),t},toArray:function(e){return C(e,(function(e){return e}))||[]},only:function(e){if(!_(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=L,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var a=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];a.children=u}return{$$typeof:o,type:e.type,key:i,ref:l,props:a,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:T}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return A().useCallback(e,t)},t.useContext=function(e,t){return A().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return A().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return A().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return A().useLayoutEffect(e,t)},t.useMemo=function(e,t){return A().useMemo(e,t)},t.useReducer=function(e,t,n){return A().useReducer(e,t,n)},t.useRef=function(e){return A().useRef(e)},t.useState=function(e){return A().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,o,a;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},o=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},o=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,o=e[r];if(!(void 0!==o&&0<x(o,t)))break e;e[r]=t,e[n]=o,n=r}}function S(e){return void 0===(e=e[0])?null:e}function _(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r<o;){var a=2*(r+1)-1,i=e[a],l=a+1,s=e[l];if(void 0!==i&&0>x(i,n))void 0!==s&&0>x(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[a]=n,r=a);else{if(!(void 0!==s&&0>x(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var O=[],P=[],C=1,T=null,I=3,A=!1,L=!1,N=!1;function R(e){for(var t=S(P);null!==t;){if(null===t.callback)_(P);else{if(!(t.startTime<=e))break;_(P),t.sortIndex=t.expirationTime,E(O,t)}t=S(P)}}function D(e){if(N=!1,R(e),!L)if(null!==S(O))L=!0,n(j);else{var t=S(P);null!==t&&r(D,t.startTime-e)}}function j(e,n){L=!1,N&&(N=!1,o()),A=!0;var a=I;try{for(R(n),T=S(O);null!==T&&(!(T.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=T.callback;if("function"==typeof i){T.callback=null,I=T.priorityLevel;var l=i(T.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?T.callback=l:T===S(O)&&_(O),R(n)}else _(O);T=S(O)}if(null!==T)var s=!0;else{var u=S(P);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{T=null,I=a,A=!1}}var M=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){L||A||(L=!0,n(j))},t.unstable_getCurrentPriorityLevel=function(){return I},t.unstable_getFirstCallbackNode=function(){return S(O)},t.unstable_next=function(e){switch(I){case 1:case 2:case 3:var t=3;break;default:t=I}var n=I;I=t;try{return e()}finally{I=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=I;I=e;try{return t()}finally{I=n}},t.unstable_scheduleCallback=function(e,a,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:C++,callback:a,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(P,e),null===S(O)&&e===S(P)&&(N?o():N=!0,r(D,i-l))):(e.sortIndex=s,E(O,e),L||A||(L=!0,n(j))),e},t.unstable_wrapCallback=function(e){var t=I;return function(){var n=I;I=t;try{return e.apply(this,arguments)}finally{I=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<a.length;s++){var u=a[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(o=n?n.call(r,c,d,u):void 0)||void 0===o&&c!==d)return!1}return!0}},2177:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r="Invariant failed";function o(e,t){if(!e)throw new Error(r)}},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"cun\u012bcu",tagline:"zeroconf \u2022 p2p \u2022 mesh \u2022 vpn",url:"https://cunicu.li",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.png",trailingSlash:!1,stylesheets:[{href:"https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css",type:"text/css",integrity:"sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM",crossorigin:"anonymous"}],plugins:[["/home/runner/work/cunicu/cunicu/website/node_modules/@cmfcmf/docusaurus-search-local/lib/server/index.js",{}],["/home/runner/work/cunicu/cunicu/website/node_modules/@gabrielcsapo/docusaurus-plugin-matomo/dist/index.js",{siteId:"5",matomoUrl:"https://matomo.0l.de",siteUrl:"https://cunicu.li"}],null],organizationName:"stv0g",projectName:"cunicu",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"/home/runner/work/cunicu/cunicu/website/sidebars.js",editUrl:"https://github.com/stv0g/cunicu/tree/master/website/",remarkPlugins:[null,null],rehypePlugins:[null]},blog:{showReadingTime:!0,editUrl:"https://github.com/stv0g/cunicu/master/website"},theme:{customCss:"/home/runner/work/cunicu/cunicu/website/src/css/custom.css"}}]],themeConfig:{navbar:{title:"cun\u012bcu",logo:{alt:"cun\u012bcu logo",src:"img/cunicu_icon.svg"},items:[{type:"doc",docId:"index",position:"left",label:"Docs"},{to:"/blog",label:"Blog",position:"left"},{href:"https://github.com/stv0g/cunicu",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Docs",items:[{label:"Tutorial",to:"/docs/"}]},{title:"Community",items:[{label:"Slack",href:"https://gophers.slack.com/archives/C036CTEGJFN"},{label:"Twitter",href:"https://twitter.com/cunicuVPN"}]},{title:"More",items:[{label:"Blog",to:"/blog"},{label:"GitHub",href:"https://github.com/stv0g/cunicu"}]}],copyright:"Copyright \xa9 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>o})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}n.d(t,{Z:()=>r})},7529:e=>{"use strict";e.exports=JSON.parse('{"cmfcmf/d-s-l.searchBar.placeholder":"Search...","cmfcmf/d-s-l.searchBar.noResults":"No results found.","cmfcmf/d-s-l.searchBar.clearButtonTitle":"Clear","cmfcmf/d-s-l.searchBar.detachedCancelButtonText":"Cancel","cmfcmf/d-s-l.searchBar.submitButtonTitle":"Submit"}')},6887:e=>{"use strict";e.exports=JSON.parse('{"/blog-6d4":{"__comp":"a6aa9e1f","__context":{"plugin":"6d967f90"},"sidebar":"814f3328","items":[{"content":"1cd45622"}],"metadata":"b2b675dd"},"/blog/archive-1e7":{"__comp":"9e4087bc","__context":{"plugin":"6d967f90"},"archive":"b2f554cd"},"/blog/tags-996":{"__comp":"01a85c17","__context":{"plugin":"6d967f90"},"sidebar":"814f3328","tags":"a7023ddc"},"/blog/tags/hello-bce":{"__comp":"6875c492","__context":{"plugin":"6d967f90"},"sidebar":"814f3328","items":[{"content":"1cd45622"}],"tag":"30a24c52","listMetadata":"66406991"},"/blog/welcome-861":{"__comp":"ccc49370","__context":{"plugin":"6d967f90"},"sidebar":"814f3328","content":"59efbc3d"},"/markdown-page-f0d":{"__comp":"1f391b9e","__context":{"plugin":"a35b52ca"},"content":"393be207"},"/docs-619":{"__comp":"1be78505","__context":{"plugin":"5d77abb4"},"versionMetadata":"935f2afb"},"/docs-f5d":{"__comp":"17896441","content":"c377a04b"},"/docs/comparison-d6c":{"__comp":"17896441","content":"e6ccb422"},"/docs/configuration-725":{"__comp":"17896441","content":"9ed00105"},"/docs/design-e50":{"__comp":"17896441","content":"0aeccac2"},"/docs/development-a60":{"__comp":"17896441","content":"6dcaddc4"},"/docs/development/proxying-17b":{"__comp":"17896441","content":"ec078f8a"},"/docs/development/signaling-4ad":{"__comp":"17896441","content":"c180861d"},"/docs/development/todo-6f9":{"__comp":"17896441","content":"9fc6b440"},"/docs/features/autocfg-e7b":{"__comp":"17896441","content":"8b35e876"},"/docs/features/cfgsync-428":{"__comp":"17896441","content":"5b0ec1e8"},"/docs/features/epdisc-c76":{"__comp":"17896441","content":"5ad9cedd"},"/docs/features/hooks-bd7":{"__comp":"17896441","content":"8d306639"},"/docs/features/hsync-512":{"__comp":"17896441","content":"88554f04"},"/docs/features/pdisc-96b":{"__comp":"17896441","content":"3d976d8d"},"/docs/features/pske-4fb":{"__comp":"17896441","content":"4dda60b2"},"/docs/features/rtsync-ca7":{"__comp":"17896441","content":"c18e783d"},"/docs/installation-001":{"__comp":"17896441","content":"3b8c55ea"},"/docs/usage-428":{"__comp":"17896441","content":"38e469bb"},"/docs/usage/man-d24":{"__comp":"17896441","content":"f98fed9b"},"/docs/usage/man/addresses-057":{"__comp":"17896441","content":"8f24e72b"},"/docs/usage/man/completion-c9b":{"__comp":"17896441","content":"8d5366bf"},"/docs/usage/man/completion/bash-f40":{"__comp":"17896441","content":"83dca9e6"},"/docs/usage/man/completion/fish-9ed":{"__comp":"17896441","content":"61cce660"},"/docs/usage/man/completion/powershell-139":{"__comp":"17896441","content":"4e235874"},"/docs/usage/man/completion/zsh-c5a":{"__comp":"17896441","content":"5c8c1c6c"},"/docs/usage/man/config-b74":{"__comp":"17896441","content":"b88c5a7d"},"/docs/usage/man/config/get-ae6":{"__comp":"17896441","content":"5795ae79"},"/docs/usage/man/config/set-d5a":{"__comp":"17896441","content":"ee91bca0"},"/docs/usage/man/daemon-d8c":{"__comp":"17896441","content":"4d2ed0aa"},"/docs/usage/man/monitor-f48":{"__comp":"17896441","content":"da55d1d1"},"/docs/usage/man/restart-c9c":{"__comp":"17896441","content":"57323276"},"/docs/usage/man/self-update-5a5":{"__comp":"17896441","content":"761a043d"},"/docs/usage/man/selfupdate-634":{"__comp":"17896441","content":"424a2e2a"},"/docs/usage/man/signal-ad6":{"__comp":"17896441","content":"3f8b3b9b"},"/docs/usage/man/status-fe1":{"__comp":"17896441","content":"339ed6ad"},"/docs/usage/man/stop-4f4":{"__comp":"17896441","content":"93c4fd1c"},"/docs/usage/man/sync-0a5":{"__comp":"17896441","content":"7e492805"},"/docs/usage/man/version-7ca":{"__comp":"17896441","content":"7746b56b"},"/docs/usage/man/wg-208":{"__comp":"17896441","content":"e5e144da"},"/docs/usage/man/wg/genkey-f5d":{"__comp":"17896441","content":"76b3d27b"},"/docs/usage/man/wg/genpsk-2c9":{"__comp":"17896441","content":"e432836c"},"/docs/usage/man/wg/pubkey-862":{"__comp":"17896441","content":"020785c0"},"/docs/usage/man/wg/show-7b7":{"__comp":"17896441","content":"68b1f9b5"},"/docs/usage/man/wg/showconf-49d":{"__comp":"17896441","content":"09f02e09"},"/docs/usage/upgrade-7fe":{"__comp":"17896441","content":"3739c031"},"/docs/usage/usecases-d0b":{"__comp":"17896441","content":"39aaac8c"},"/-c35":{"__comp":"c4f5d8e4","__context":{"plugin":"a35b52ca"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=9383,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.d3aebcf9.js b/assets/js/main.d3aebcf9.js new file mode 100644 index 00000000..7b504b07 --- /dev/null +++ b/assets/js/main.d3aebcf9.js @@ -0,0 +1,2 @@ +/*! For license information please see main.d3aebcf9.js.LICENSE.txt */ +(self.webpackChunkwice=self.webpackChunkwice||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),o=n(7462),a=n(8356),i=n.n(a),l=n(6887);const s={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"020785c0":[()=>Promise.all([n.e(8592),n.e(8671)]).then(n.bind(n,2061)),"@site/docs/usage/md/cunicu_wg_pubkey.md",2061],"09f02e09":[()=>Promise.all([n.e(8592),n.e(9146)]).then(n.bind(n,3682)),"@site/docs/usage/md/cunicu_wg_showconf.md",3682],"0aeccac2":[()=>Promise.all([n.e(8592),n.e(414)]).then(n.bind(n,6512)),"@site/docs/design.md",6512],17896441:[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(8490),n.e(7918)]).then(n.bind(n,9055)),"@theme/DocItem",9055],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1f391b9e":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"214ce059":[()=>n.e(1173).then(n.t.bind(n,3769,19)),"/home/stv0g/workspace/cunicu/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"30a24c52":[()=>n.e(453).then(n.t.bind(n,8605,19)),"~blog/default/blog-tags-hello-039.json",8605],"30cd80eb":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(8027)]).then(n.bind(n,3271)),"@site/docs/config-reference.md",3271],"339ed6ad":[()=>Promise.all([n.e(8592),n.e(3060)]).then(n.bind(n,8237)),"@site/docs/usage/md/cunicu_status.md",8237],"35b202a1":[()=>Promise.all([n.e(8592),n.e(2786)]).then(n.bind(n,9230)),"@site/blog/2022-09-15-welcome/index.md?truncated=true",9230],"3739c031":[()=>Promise.all([n.e(8592),n.e(1162)]).then(n.bind(n,8797)),"@site/docs/usage/upgrade.md",8797],"38e469bb":[()=>Promise.all([n.e(8592),n.e(8902)]).then(n.bind(n,952)),"@site/docs/usage/index.md",952],"393be207":[()=>Promise.all([n.e(8592),n.e(7414)]).then(n.bind(n,3123)),"@site/src/pages/markdown-page.md",3123],"39aaac8c":[()=>Promise.all([n.e(8592),n.e(4276)]).then(n.bind(n,8650)),"@site/docs/usage/usecases.md",8650],"3d976d8d":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(2413)]).then(n.bind(n,3125)),"@site/docs/features/pdisc.md",3125],"3f8b3b9b":[()=>Promise.all([n.e(8592),n.e(3816)]).then(n.bind(n,7412)),"@site/docs/usage/md/cunicu_signal.md",7412],"424a2e2a":[()=>Promise.all([n.e(8592),n.e(4902)]).then(n.bind(n,2937)),"@site/docs/usage/md/cunicu_selfupdate.md",2937],"4d2ed0aa":[()=>Promise.all([n.e(8592),n.e(9901)]).then(n.bind(n,1054)),"@site/docs/usage/md/cunicu_daemon.md",1054],"4dda60b2":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(1634)]).then(n.bind(n,4767)),"@site/docs/features/pske.md",4767],"4e235874":[()=>Promise.all([n.e(8592),n.e(5586)]).then(n.bind(n,2682)),"@site/docs/usage/md/cunicu_completion_powershell.md",2682],"52456dd7":[()=>n.e(3872).then(n.t.bind(n,4469,19)),"/home/stv0g/workspace/cunicu/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],57323276:[()=>Promise.all([n.e(8592),n.e(3408)]).then(n.bind(n,535)),"@site/docs/usage/md/cunicu_restart.md",535],"5795ae79":[()=>Promise.all([n.e(8592),n.e(3986)]).then(n.bind(n,5014)),"@site/docs/usage/md/cunicu_config_get.md",5014],"5ad9cedd":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(5439)]).then(n.bind(n,4721)),"@site/docs/features/epdisc.md",4721],"5b0ec1e8":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(1356)]).then(n.bind(n,5820)),"@site/docs/features/cfgsync.md",5820],"5c8c1c6c":[()=>Promise.all([n.e(8592),n.e(2029)]).then(n.bind(n,6151)),"@site/docs/usage/md/cunicu_completion_zsh.md",6151],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"61cce660":[()=>Promise.all([n.e(8592),n.e(155)]).then(n.bind(n,1506)),"@site/docs/usage/md/cunicu_completion_fish.md",1506],"646b41db":[()=>Promise.all([n.e(8592),n.e(209)]).then(n.bind(n,2148)),"@site/docs/usage/md/cunicu_relay.md",2148],66406991:[()=>n.e(110).then(n.t.bind(n,711,19)),"~blog/default/blog-tags-hello-039-list.json",711],"6875c492":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(8490),n.e(6048),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"68b1f9b5":[()=>Promise.all([n.e(8592),n.e(1503)]).then(n.bind(n,8473)),"@site/docs/usage/md/cunicu_wg_show.md",8473],"6dcaddc4":[()=>Promise.all([n.e(8592),n.e(7577)]).then(n.bind(n,6141)),"@site/docs/development/index.md",6141],"761a043d":[()=>Promise.all([n.e(8592),n.e(6909)]).then(n.bind(n,4279)),"@site/docs/usage/md/cunicu_self-update.md",4279],"76b3d27b":[()=>Promise.all([n.e(8592),n.e(2944)]).then(n.bind(n,4140)),"@site/docs/usage/md/cunicu_wg_genkey.md",4140],"7746b56b":[()=>Promise.all([n.e(8592),n.e(5015)]).then(n.bind(n,2154)),"@site/docs/usage/md/cunicu_version.md",2154],"7e492805":[()=>Promise.all([n.e(8592),n.e(9768)]).then(n.bind(n,4562)),"@site/docs/usage/md/cunicu_sync.md",4562],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"83dca9e6":[()=>Promise.all([n.e(8592),n.e(822)]).then(n.bind(n,656)),"@site/docs/usage/md/cunicu_completion_bash.md",656],"88554f04":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(9211)]).then(n.bind(n,3139)),"@site/docs/features/hsync.md",3139],"8b35e876":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(1495)]).then(n.bind(n,8647)),"@site/docs/features/autocfg.md",8647],"8d306639":[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(7833)]).then(n.bind(n,1677)),"@site/docs/features/hooks.md",1677],"8d4ecb14":[()=>Promise.all([n.e(8592),n.e(7335)]).then(n.bind(n,3583)),"@site/docs/usage/md/cunicu_config_reload.md",3583],"8d5366bf":[()=>Promise.all([n.e(8592),n.e(7467)]).then(n.bind(n,161)),"@site/docs/usage/md/cunicu_completion.md",161],"8f24e72b":[()=>Promise.all([n.e(8592),n.e(5734)]).then(n.bind(n,5558)),"@site/docs/usage/md/cunicu_addresses.md",5558],"9225b3a9":[()=>Promise.all([n.e(8592),n.e(4446)]).then(n.bind(n,5142)),"@site/docs/config.md",5142],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"93c4fd1c":[()=>Promise.all([n.e(8592),n.e(3289)]).then(n.bind(n,8249)),"@site/docs/usage/md/cunicu_stop.md",8249],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],"9fc6b440":[()=>Promise.all([n.e(8592),n.e(603)]).then(n.bind(n,4090)),"@site/docs/development/todo.md",4090],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(8490),n.e(6048),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],b88c5a7d:[()=>Promise.all([n.e(8592),n.e(6812)]).then(n.bind(n,4297)),"@site/docs/usage/md/cunicu_config.md",4297],bfed30f4:[()=>Promise.all([n.e(8592),n.e(4883)]).then(n.bind(n,4172)),"@site/docs/usage/md/cunicu_invite.md",4172],c0742808:[()=>Promise.all([n.e(8592),n.e(4015)]).then(n.bind(n,6983)),"@site/docs/features/index.md",6983],c092e03b:[()=>Promise.all([n.e(8592),n.e(5468)]).then(n.bind(n,5484)),"@site/docs/usage/md/cunicu_reload.md",5484],c180861d:[()=>Promise.all([n.e(8592),n.e(3989)]).then(n.bind(n,2731)),"@site/docs/development/signaling.md",2731],c18e783d:[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(6435)]).then(n.bind(n,7746)),"@site/docs/features/rtsync.md",7746],c377a04b:[()=>Promise.all([n.e(8592),n.e(6971)]).then(n.bind(n,1269)),"@site/docs/index.md",1269],c4de80f8:[()=>Promise.all([n.e(8592),n.e(7943)]).then(n.bind(n,7520)),"@site/docs/install.md",7520],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,3261)),"@site/src/pages/index.js",3261],ccc49370:[()=>Promise.all([n.e(532),n.e(8592),n.e(814),n.e(8490),n.e(6048),n.e(6103)]).then(n.bind(n,9178)),"@theme/BlogPostPage",9178],da55d1d1:[()=>Promise.all([n.e(8592),n.e(4398)]).then(n.bind(n,9009)),"@site/docs/usage/md/cunicu_monitor.md",9009],ddfaed6c:[()=>Promise.all([n.e(8592),n.e(7325)]).then(n.bind(n,7686)),"@site/blog/2022-09-15-welcome/index.md",7686],e432836c:[()=>Promise.all([n.e(8592),n.e(8929)]).then(n.bind(n,8236)),"@site/docs/usage/md/cunicu_wg_genpsk.md",8236],e4582cf4:[()=>n.e(7606).then(n.t.bind(n,5745,19)),"/home/stv0g/workspace/cunicu/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],e5e144da:[()=>Promise.all([n.e(8592),n.e(7923)]).then(n.bind(n,5763)),"@site/docs/usage/md/cunicu_wg.md",5763],e6ccb422:[()=>Promise.all([n.e(8592),n.e(621)]).then(n.bind(n,7116)),"@site/docs/comparison.md",7116],ec078f8a:[()=>Promise.all([n.e(8592),n.e(6692)]).then(n.bind(n,3850)),"@site/docs/development/proxying.md",3850],ee91bca0:[()=>Promise.all([n.e(8592),n.e(9151)]).then(n.bind(n,2942)),"@site/docs/usage/md/cunicu_config_set.md",2942],f98fed9b:[()=>Promise.all([n.e(8592),n.e(6929)]).then(n.bind(n,3342)),"@site/docs/usage/md/cunicu.md",3342]};function u(e){let{error:t,retry:n,pastDelay:o}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):o?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const a=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(a);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(a));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let a=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{a=a[e]})),a[l[l.length-1]]=o}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,o.Z)({},i,n)))}})}const p=[{path:"/blog",component:f("/blog","ace"),exact:!0},{path:"/blog/archive",component:f("/blog/archive","0fa"),exact:!0},{path:"/blog/tags",component:f("/blog/tags","95d"),exact:!0},{path:"/blog/tags/hello",component:f("/blog/tags/hello","b0b"),exact:!0},{path:"/blog/welcome",component:f("/blog/welcome","2cd"),exact:!0},{path:"/markdown-page",component:f("/markdown-page","471"),exact:!0},{path:"/docs",component:f("/docs","541"),routes:[{path:"/docs",component:f("/docs","f5d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/comparison",component:f("/docs/comparison","d6c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/config",component:f("/docs/config","79c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/config-reference",component:f("/docs/config-reference","9a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/design",component:f("/docs/design","e50"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development",component:f("/docs/development","a60"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/proxying",component:f("/docs/development/proxying","17b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/signaling",component:f("/docs/development/signaling","4ad"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/todo",component:f("/docs/development/todo","6f9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features",component:f("/docs/features","080"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/autocfg",component:f("/docs/features/autocfg","e7b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/cfgsync",component:f("/docs/features/cfgsync","428"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/epdisc",component:f("/docs/features/epdisc","c76"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/hooks",component:f("/docs/features/hooks","bd7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/hsync",component:f("/docs/features/hsync","512"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/pdisc",component:f("/docs/features/pdisc","96b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/pske",component:f("/docs/features/pske","4fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/features/rtsync",component:f("/docs/features/rtsync","ca7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/install",component:f("/docs/install","65c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage",component:f("/docs/usage","428"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man",component:f("/docs/usage/man","d24"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/addresses",component:f("/docs/usage/man/addresses","057"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion",component:f("/docs/usage/man/completion","c9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/bash",component:f("/docs/usage/man/completion/bash","f40"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/fish",component:f("/docs/usage/man/completion/fish","9ed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/powershell",component:f("/docs/usage/man/completion/powershell","139"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/completion/zsh",component:f("/docs/usage/man/completion/zsh","c5a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/config",component:f("/docs/usage/man/config","b74"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/config/get",component:f("/docs/usage/man/config/get","ae6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/config/reload",component:f("/docs/usage/man/config/reload","bc7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/config/set",component:f("/docs/usage/man/config/set","d5a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/daemon",component:f("/docs/usage/man/daemon","d8c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/invite",component:f("/docs/usage/man/invite","4e5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/monitor",component:f("/docs/usage/man/monitor","f48"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/relay",component:f("/docs/usage/man/relay","fa5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/reload",component:f("/docs/usage/man/reload","b3b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/restart",component:f("/docs/usage/man/restart","c9c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/self-update",component:f("/docs/usage/man/self-update","5a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/selfupdate",component:f("/docs/usage/man/selfupdate","634"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/signal",component:f("/docs/usage/man/signal","ad6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/status",component:f("/docs/usage/man/status","fe1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/stop",component:f("/docs/usage/man/stop","4f4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/sync",component:f("/docs/usage/man/sync","0a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/version",component:f("/docs/usage/man/version","7ca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg",component:f("/docs/usage/man/wg","208"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/genkey",component:f("/docs/usage/man/wg/genkey","f5d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/genpsk",component:f("/docs/usage/man/wg/genpsk","2c9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/pubkey",component:f("/docs/usage/man/wg/pubkey","862"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/show",component:f("/docs/usage/man/wg/show","7b7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/man/wg/showconf",component:f("/docs/usage/man/wg/showconf","49d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/upgrade",component:f("/docs/usage/upgrade","7fe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/usage/usecases",component:f("/docs/usage/usecases","d0b"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","e64"),exact:!0},{path:"*",component:f("*")}]},8965:(e,t,n)=>{var r,o;!function(){var a,i,l,s,u,c,d,f,p,m,h,g,v,b,y,w,k,E,S,_,x,O,P,C,T,I,A=function(e){var t=new A.Builder;return t.pipeline.add(A.trimmer,A.stopWordFilter,A.stemmer),t.searchPipeline.add(A.stemmer),e.call(t,t),t.build()};A.version="2.3.9",A.utils={},A.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),A.utils.asString=function(e){return null==e?"":e.toString()},A.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var o=n[r],a=e[o];if(Array.isArray(a))t[o]=a.slice();else{if("string"!=typeof a&&"number"!=typeof a&&"boolean"!=typeof a)throw new TypeError("clone is not deep and does not support nested objects");t[o]=a}}return t},A.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},A.FieldRef.joiner="/",A.FieldRef.fromString=function(e){var t=e.indexOf(A.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new A.FieldRef(r,n,e)},A.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+A.FieldRef.joiner+this.docRef),this._stringValue},A.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},A.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},A.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},A.Set.prototype.contains=function(e){return!!this.elements[e]},A.Set.prototype.intersect=function(e){var t,n,r,o=[];if(e===A.Set.complete)return this;if(e===A.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var a=0;a<r.length;a++){var i=r[a];i in n.elements&&o.push(i)}return new A.Set(o)},A.Set.prototype.union=function(e){return e===A.Set.complete?A.Set.complete:e===A.Set.empty?this:new A.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},A.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var o=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(o))},A.Token=function(e,t){this.str=e||"",this.metadata=t||{}},A.Token.prototype.toString=function(){return this.str},A.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},A.Token.prototype.clone=function(e){return e=e||function(e){return e},new A.Token(e(this.str,this.metadata),this.metadata)},A.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new A.Token(A.utils.asString(e).toLowerCase(),A.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,o=[],a=0,i=0;a<=r;a++){var l=a-i;if(n.charAt(a).match(A.tokenizer.separator)||a==r){if(l>0){var s=A.utils.clone(t)||{};s.position=[i,l],s.index=o.length,o.push(new A.Token(n.slice(i,a),s))}i=a+1}}return o},A.tokenizer.separator=/[\s\-]+/,A.Pipeline=function(){this._stack=[]},A.Pipeline.registeredFunctions=Object.create(null),A.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&A.utils.warn("Overwriting existing registered function: "+t),e.label=t,A.Pipeline.registeredFunctions[e.label]=e},A.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||A.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},A.Pipeline.load=function(e){var t=new A.Pipeline;return e.forEach((function(e){var n=A.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},A.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){A.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},A.Pipeline.prototype.after=function(e,t){A.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},A.Pipeline.prototype.before=function(e,t){A.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},A.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},A.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],o=[],a=0;a<e.length;a++){var i=r(e[a],a,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)o.push(i[l]);else o.push(i)}e=o}return e},A.Pipeline.prototype.runString=function(e,t){var n=new A.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},A.Pipeline.prototype.reset=function(){this._stack=[]},A.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return A.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},A.Vector=function(e){this._magnitude=0,this.elements=e||[]},A.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,o=Math.floor(r/2),a=this.elements[2*o];r>1&&(a<e&&(t=o),a>e&&(n=o),a!=e);)r=n-t,o=t+Math.floor(r/2),a=this.elements[2*o];return a==e||a>e?2*o:a<e?2*(o+1):void 0},A.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},A.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},A.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},A.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,o=n.length,a=r.length,i=0,l=0,s=0,u=0;s<o&&u<a;)(i=n[s])<(l=r[u])?s+=2:i>l?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},A.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},A.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},A.Vector.prototype.toJSON=function(){return this.elements},A.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},l={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},s="[aeiouy]",u="[^aeiou][^aeiouy]*",c=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),d=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),p=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),m=/^(.+?)(ss|i)es$/,h=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,v=/^(.+?)(ed|ing)$/,b=/.$/,y=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+u+s+"[^aeiouwxy]$"),E=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,_=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,x=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,O=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,C=/ll$/,T=new RegExp("^"+u+s+"[^aeiouwxy]$"),I=function(e){var t,n,r,o,a,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),a=h,(o=m).test(e)?e=e.replace(o,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),a=v,(o=g).test(e)){var I=o.exec(e);(o=c).test(I[1])&&(o=b,e=e.replace(o,""))}else a.test(e)&&(t=(I=a.exec(e))[1],(a=p).test(t)&&(s=w,u=k,(a=y).test(e=t)?e+="e":s.test(e)?(o=b,e=e.replace(o,"")):u.test(e)&&(e+="e")));return(o=E).test(e)&&(e=(t=(I=o.exec(e))[1])+"i"),(o=S).test(e)&&(t=(I=o.exec(e))[1],n=I[2],(o=c).test(t)&&(e=t+i[n])),(o=_).test(e)&&(t=(I=o.exec(e))[1],n=I[2],(o=c).test(t)&&(e=t+l[n])),a=O,(o=x).test(e)?(t=(I=o.exec(e))[1],(o=d).test(t)&&(e=t)):a.test(e)&&(t=(I=a.exec(e))[1]+I[2],(a=d).test(t)&&(e=t)),(o=P).test(e)&&(t=(I=o.exec(e))[1],a=f,s=T,((o=d).test(t)||a.test(t)&&!s.test(t))&&(e=t)),a=d,(o=C).test(e)&&a.test(e)&&(o=b,e=e.replace(o,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(I)}),A.Pipeline.registerFunction(A.stemmer,"stemmer"),A.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},A.stopWordFilter=A.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),A.Pipeline.registerFunction(A.stopWordFilter,"stopWordFilter"),A.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},A.Pipeline.registerFunction(A.trimmer,"trimmer"),A.TokenSet=function(){this.final=!1,this.edges={},this.id=A.TokenSet._nextId,A.TokenSet._nextId+=1},A.TokenSet._nextId=1,A.TokenSet.fromArray=function(e){for(var t=new A.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},A.TokenSet.fromClause=function(e){return"editDistance"in e?A.TokenSet.fromFuzzyString(e.term,e.editDistance):A.TokenSet.fromString(e.term)},A.TokenSet.fromFuzzyString=function(e,t){for(var n=new A.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var o=r.pop();if(o.str.length>0){var a,i=o.str.charAt(0);i in o.node.edges?a=o.node.edges[i]:(a=new A.TokenSet,o.node.edges[i]=a),1==o.str.length&&(a.final=!0),r.push({node:a,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var l=o.node.edges["*"];else{l=new A.TokenSet;o.node.edges["*"]=l}if(0==o.str.length&&(l.final=!0),r.push({node:l,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&r.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var s=o.node.edges["*"];else{s=new A.TokenSet;o.node.edges["*"]=s}1==o.str.length&&(s.final=!0),r.push({node:s,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var u,c=o.str.charAt(0),d=o.str.charAt(1);d in o.node.edges?u=o.node.edges[d]:(u=new A.TokenSet,o.node.edges[d]=u),1==o.str.length&&(u.final=!0),r.push({node:u,editsRemaining:o.editsRemaining-1,str:c+o.str.slice(2)})}}}return n},A.TokenSet.fromString=function(e){for(var t=new A.TokenSet,n=t,r=0,o=e.length;r<o;r++){var a=e[r],i=r==o-1;if("*"==a)t.edges[a]=t,t.final=i;else{var l=new A.TokenSet;l.final=i,t.edges[a]=l,t=l}}return n},A.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),o=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var a=0;a<o;a++){var i=r[a];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},A.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var o=t[r];e=e+o+this.edges[o].id}return e},A.TokenSet.prototype.intersect=function(e){for(var t=new A.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var o=Object.keys(n.qNode.edges),a=o.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<a;s++)for(var u=o[s],c=0;c<l;c++){var d=i[c];if(d==u||"*"==u){var f=n.node.edges[d],p=n.qNode.edges[u],m=f.final&&p.final,h=void 0;d in n.output.edges?(h=n.output.edges[d]).final=h.final||m:((h=new A.TokenSet).final=m,n.output.edges[d]=h),r.push({qNode:p,output:h,node:f})}}}return t},A.TokenSet.Builder=function(){this.previousWord="",this.root=new A.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},A.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var o=new A.TokenSet,a=e[r];t.edges[a]=o,this.uncheckedNodes.push({parent:t,char:a,child:o}),t=o}t.final=!0,this.previousWord=e},A.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},A.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},A.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},A.Index.prototype.search=function(e){return this.query((function(t){new A.QueryParser(e,t).parse()}))},A.Index.prototype.query=function(e){for(var t=new A.Query(this.fields),n=Object.create(null),r=Object.create(null),o=Object.create(null),a=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new A.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=A.Set.empty;u=s.usePipeline?this.pipeline.runString(s.term,{fields:s.fields}):[s.term];for(var d=0;d<u.length;d++){var f=u[d];s.term=f;var p=A.TokenSet.fromClause(s),m=this.tokenSet.intersect(p).toArray();if(0===m.length&&s.presence===A.Query.presence.REQUIRED){for(var h=0;h<s.fields.length;h++){a[L=s.fields[h]]=A.Set.empty}break}for(var g=0;g<m.length;g++){var v=m[g],b=this.invertedIndex[v],y=b._index;for(h=0;h<s.fields.length;h++){var w=b[L=s.fields[h]],k=Object.keys(w),E=v+"/"+L,S=new A.Set(k);if(s.presence==A.Query.presence.REQUIRED&&(c=c.union(S),void 0===a[L]&&(a[L]=A.Set.complete)),s.presence!=A.Query.presence.PROHIBITED){if(r[L].upsert(y,s.boost,(function(e,t){return e+t})),!o[E]){for(var _=0;_<k.length;_++){var x,O=k[_],P=new A.FieldRef(O,L),C=w[O];void 0===(x=n[P])?n[P]=new A.MatchData(v,L,C):x.add(v,L,C)}o[E]=!0}}else void 0===i[L]&&(i[L]=A.Set.empty),i[L]=i[L].union(S)}}}if(s.presence===A.Query.presence.REQUIRED)for(h=0;h<s.fields.length;h++){a[L=s.fields[h]]=a[L].intersect(c)}}var T=A.Set.complete,I=A.Set.empty;for(l=0;l<this.fields.length;l++){var L;a[L=this.fields[l]]&&(T=T.intersect(a[L])),i[L]&&(I=I.union(i[L]))}var N=Object.keys(n),R=[],D=Object.create(null);if(t.isNegated()){N=Object.keys(this.fieldVectors);for(l=0;l<N.length;l++){P=N[l];var j=A.FieldRef.fromString(P);n[P]=new A.MatchData}}for(l=0;l<N.length;l++){var M=(j=A.FieldRef.fromString(N[l])).docRef;if(T.contains(M)&&!I.contains(M)){var F,B=this.fieldVectors[j],z=r[j.fieldName].similarity(B);if(void 0!==(F=D[M]))F.score+=z,F.matchData.combine(n[j]);else{var U={ref:M,score:z,matchData:n[j]};D[M]=U,R.push(U)}}}return R.sort((function(e,t){return t.score-e.score}))},A.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:A.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},A.Index.load=function(e){var t={},n={},r=e.fieldVectors,o=Object.create(null),a=e.invertedIndex,i=new A.TokenSet.Builder,l=A.Pipeline.load(e.pipeline);e.version!=A.version&&A.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+A.version+"' does not match serialized index '"+e.version+"'");for(var s=0;s<r.length;s++){var u=(d=r[s])[0],c=d[1];n[u]=new A.Vector(c)}for(s=0;s<a.length;s++){var d,f=(d=a[s])[0],p=d[1];i.insert(f),o[f]=p}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=o,t.tokenSet=i.root,t.pipeline=l,new A.Index(t)},A.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=A.tokenizer,this.pipeline=new A.Pipeline,this.searchPipeline=new A.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},A.Builder.prototype.ref=function(e){this._ref=e},A.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},A.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},A.Builder.prototype.k1=function(e){this._k1=e},A.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var o=0;o<r.length;o++){var a=r[o],i=this._fields[a].extractor,l=this._fields[a].isLiteral??!1,s=i?i(e):e[a],u=l?[s]:this.tokenizer(s,{fields:[a]}),c=l?u:this.pipeline.run(u),d=new A.FieldRef(n,a),f=Object.create(null);this.fieldTermFrequencies[d]=f,this.fieldLengths[d]=0,this.fieldLengths[d]+=c.length;for(var p=0;p<c.length;p++){var m=c[p];if(null==f[m]&&(f[m]=0),f[m]+=1,null==this.invertedIndex[m]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var g=0;g<r.length;g++)h[r[g]]=Object.create(null);this.invertedIndex[m]=h}null==this.invertedIndex[m][a][n]&&(this.invertedIndex[m][a][n]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var b=this.metadataWhitelist[v],y=m.metadata[b];null==this.invertedIndex[m][a][n][b]&&(this.invertedIndex[m][a][n][b]=[]),this.invertedIndex[m][a][n][b].push(y)}}}},A.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},o=0;o<t;o++){var a=A.FieldRef.fromString(e[o]),i=a.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[a]}var l=Object.keys(this._fields);for(o=0;o<l.length;o++){var s=l[o];n[s]=n[s]/r[s]}this.averageFieldLength=n},A.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),o=0;o<n;o++){for(var a=A.FieldRef.fromString(t[o]),i=a.fieldName,l=this.fieldLengths[a],s=new A.Vector,u=this.fieldTermFrequencies[a],c=Object.keys(u),d=c.length,f=this._fields[i].boost||1,p=this._documents[a.docRef].boost||1,m=0;m<d;m++){var h,g,v,b=c[m],y=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(h=A.idf(this.invertedIndex[b],this.documentCount),r[b]=h):h=r[b],g=h*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[i]))+y),g*=f,g*=p,v=Math.round(1e3*g)/1e3,s.insert(w,v)}e[a]=s}this.fieldVectors=e},A.Builder.prototype.createTokenSet=function(){this.tokenSet=A.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},A.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new A.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},A.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},A.MatchData=function(e,t,n){for(var r=Object.create(null),o=Object.keys(n||{}),a=0;a<o.length;a++){var i=o[a];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},A.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],o=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var a=0;a<o.length;a++){var i=o[a],l=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var s=0;s<l.length;s++){var u=l[s];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},A.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),o=0;o<r.length;o++){var a=r[o];a in this.metadata[e][t]?this.metadata[e][t][a]=this.metadata[e][t][a].concat(n[a]):this.metadata[e][t][a]=n[a]}else this.metadata[e][t]=n},A.Query=function(e){this.clauses=[],this.allFields=e},A.Query.wildcard=new String("*"),A.Query.wildcard.NONE=0,A.Query.wildcard.LEADING=1,A.Query.wildcard.TRAILING=2,A.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},A.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=A.Query.wildcard.NONE),e.wildcard&A.Query.wildcard.LEADING&&e.term.charAt(0)!=A.Query.wildcard&&(e.term="*"+e.term),e.wildcard&A.Query.wildcard.TRAILING&&e.term.slice(-1)!=A.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=A.Query.presence.OPTIONAL),this.clauses.push(e),this},A.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=A.Query.presence.PROHIBITED)return!1;return!0},A.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,A.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},A.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},A.QueryParseError.prototype=new Error,A.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},A.QueryLexer.prototype.run=function(){for(var e=A.QueryLexer.lexText;e;)e=e(this)},A.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},A.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},A.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},A.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return A.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},A.QueryLexer.prototype.width=function(){return this.pos-this.start},A.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},A.QueryLexer.prototype.backup=function(){this.pos-=1},A.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=A.QueryLexer.EOS&&this.backup()},A.QueryLexer.prototype.more=function(){return this.pos<this.length},A.QueryLexer.EOS="EOS",A.QueryLexer.FIELD="FIELD",A.QueryLexer.TERM="TERM",A.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",A.QueryLexer.BOOST="BOOST",A.QueryLexer.PRESENCE="PRESENCE",A.QueryLexer.lexField=function(e){return e.backup(),e.emit(A.QueryLexer.FIELD),e.ignore(),A.QueryLexer.lexText},A.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(A.QueryLexer.TERM)),e.ignore(),e.more())return A.QueryLexer.lexText},A.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(A.QueryLexer.EDIT_DISTANCE),A.QueryLexer.lexText},A.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(A.QueryLexer.BOOST),A.QueryLexer.lexText},A.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(A.QueryLexer.TERM)},A.QueryLexer.termSeparator=A.tokenizer.separator,A.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==A.QueryLexer.EOS)return A.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return A.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(A.QueryLexer.TERM),A.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(A.QueryLexer.TERM),A.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(A.QueryLexer.PRESENCE),A.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(A.QueryLexer.PRESENCE),A.QueryLexer.lexText;if(t.match(A.QueryLexer.termSeparator))return A.QueryLexer.lexTerm}else e.escapeCharacter()}},A.QueryParser=function(e,t){this.lexer=new A.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},A.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=A.QueryParser.parseClause;e;)e=e(this);return this.query},A.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},A.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},A.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},A.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case A.QueryLexer.PRESENCE:return A.QueryParser.parsePresence;case A.QueryLexer.FIELD:return A.QueryParser.parseField;case A.QueryLexer.TERM:return A.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new A.QueryParseError(n,t.start,t.end)}},A.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=A.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=A.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new A.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new A.QueryParseError(n,t.start,t.end)}switch(r.type){case A.QueryLexer.FIELD:return A.QueryParser.parseField;case A.QueryLexer.TERM:return A.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new A.QueryParseError(n,r.start,r.end)}}},A.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new A.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var o=e.peekLexeme();if(null==o){r="expecting term, found nothing";throw new A.QueryParseError(r,t.start,t.end)}if(o.type===A.QueryLexer.TERM)return A.QueryParser.parseTerm;r="expecting term, found '"+o.type+"'";throw new A.QueryParseError(r,o.start,o.end)}},A.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case A.QueryLexer.TERM:return e.nextClause(),A.QueryParser.parseTerm;case A.QueryLexer.FIELD:return e.nextClause(),A.QueryParser.parseField;case A.QueryLexer.EDIT_DISTANCE:return A.QueryParser.parseEditDistance;case A.QueryLexer.BOOST:return A.QueryParser.parseBoost;case A.QueryLexer.PRESENCE:return e.nextClause(),A.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new A.QueryParseError(r,n.start,n.end)}else e.nextClause()}},A.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new A.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case A.QueryLexer.TERM:return e.nextClause(),A.QueryParser.parseTerm;case A.QueryLexer.FIELD:return e.nextClause(),A.QueryParser.parseField;case A.QueryLexer.EDIT_DISTANCE:return A.QueryParser.parseEditDistance;case A.QueryLexer.BOOST:return A.QueryParser.parseBoost;case A.QueryLexer.PRESENCE:return e.nextClause(),A.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new A.QueryParseError(r,o.start,o.end)}else e.nextClause()}},A.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new A.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case A.QueryLexer.TERM:return e.nextClause(),A.QueryParser.parseTerm;case A.QueryLexer.FIELD:return e.nextClause(),A.QueryParser.parseField;case A.QueryLexer.EDIT_DISTANCE:return A.QueryParser.parseEditDistance;case A.QueryLexer.BOOST:return A.QueryParser.parseBoost;case A.QueryLexer.PRESENCE:return e.nextClause(),A.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new A.QueryParseError(r,o.start,o.end)}else e.nextClause()}},void 0===(o="function"==typeof(r=function(){return A})?r.call(t,n,t,e):r)||(e.exports=o)}()},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>a});var r=n(7294);const o=r.createContext(!1);function a(e){let{children:t}=e;const[n,a]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{a(!0)}),[]),r.createElement(o.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),o=n(3935),a=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295),n(2198)];var u=n(723),c=n(6775),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(5742),h=n(2263),g=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(197);function S(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:o}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:o})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),o=function(){const{siteConfig:{url:e}}=(0,h.Z)(),{pathname:t}=(0,c.TH)();return e+(0,g.Z)(t)}(),a=t?`${n}${t}`:o;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:a}),r.createElement("link",{rel:"canonical",href:a}))}function x(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(_,null),r.createElement(S,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const O=new Map;function P(e){if(O.has(e.pathname))return{...e,pathname:O.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return O.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return O.set(e.pathname,t),{...e,pathname:t}}var C=n(8934),T=n(8940);function I(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const o=s.map((t=>{var r;const o=(null==(r=t.default)?void 0:r[e])??t[e];return null==o?void 0:o(...n)}));return()=>o.forEach((e=>null==e?void 0:e()))}const A=function(e){let{children:t,location:n,previousLocation:o}=e;return(0,r.useLayoutEffect)((()=>{o!==n&&(o&&function(e){const{hash:t}=e;if(t){const e=decodeURIComponent(t.substring(1)),n=document.getElementById(e);null==n||n.scrollIntoView()}else window.scrollTo(0,0)}(n),I("onRouteDidUpdate",{previousLocation:o,location:n}))}),[o,n]),t};function L(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class N extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?I("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),L(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(A,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const R=N,D="docusaurus-base-url-issue-banner-container",j="docusaurus-base-url-issue-banner-suggestion-container",M="__DOCUSAURUS_INSERT_BASEURL_BANNER";function F(e){return`\nwindow['${M}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${M}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${j}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${j}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function B(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[M]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,F(e))),r.createElement("div",{id:D}))}function z(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(B,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:o,localeConfigs:a}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=a[o];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var $=n(4763);function q(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement($.Z,null,r.createElement(T.M,null,r.createElement(C.t,null,r.createElement(f,null,r.createElement(U,null),r.createElement(x,null),r.createElement(z,null),r.createElement(R,{location:P(t)},e)))))}var H=n(6887);const G=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{var r;if("undefined"==typeof document)return void n();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),o.onload=()=>t(),o.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??(null==(r=document.getElementsByName("script")[0])?void 0:r.parentNode);null==a||a.appendChild(o)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Q=n(9670);const Z=new Set,V=new Set,W=()=>{var e,t;return(null==(e=navigator.connection)?void 0:e.effectiveType.includes("2g"))||(null==(t=navigator.connection)?void 0:t.saveData)},K={prefetch(e){if(!(e=>!W()&&!V.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(H).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!W()&&!V.has(e))(e)&&(V.add(e),L(e))},Y=Object.freeze(K);if(l.Z.canUseDOM){window.docusaurus=Y;const e=o.hydrate;L(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(a.VK,null,r.createElement(q,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),o=n(6809);const a=JSON.parse('{"@cmfcmf/docusaurus-search-local":{"default":{"titleBoost":5,"contentBoost":1,"tagsBoost":3,"parentCategoriesBoost":2,"indexDocSidebarParentCategories":0,"maxSearchResults":8}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"index","docs":[{"id":"comparison","path":"/docs/comparison","sidebar":"tutorialSidebar"},{"id":"config","path":"/docs/config","sidebar":"tutorialSidebar"},{"id":"config-reference","path":"/docs/config-reference","sidebar":"tutorialSidebar"},{"id":"design","path":"/docs/design","sidebar":"tutorialSidebar"},{"id":"development/index","path":"/docs/development/","sidebar":"tutorialSidebar"},{"id":"development/proxying","path":"/docs/development/proxying","sidebar":"tutorialSidebar"},{"id":"development/signaling","path":"/docs/development/signaling","sidebar":"tutorialSidebar"},{"id":"development/todo","path":"/docs/development/todo","sidebar":"tutorialSidebar"},{"id":"features/autocfg","path":"/docs/features/autocfg","sidebar":"tutorialSidebar"},{"id":"features/cfgsync","path":"/docs/features/cfgsync","sidebar":"tutorialSidebar"},{"id":"features/epdisc","path":"/docs/features/epdisc","sidebar":"tutorialSidebar"},{"id":"features/hooks","path":"/docs/features/hooks","sidebar":"tutorialSidebar"},{"id":"features/hsync","path":"/docs/features/hsync","sidebar":"tutorialSidebar"},{"id":"features/index","path":"/docs/features/","sidebar":"tutorialSidebar"},{"id":"features/pdisc","path":"/docs/features/pdisc","sidebar":"tutorialSidebar"},{"id":"features/pske","path":"/docs/features/pske","sidebar":"tutorialSidebar"},{"id":"features/rtsync","path":"/docs/features/rtsync","sidebar":"tutorialSidebar"},{"id":"index","path":"/docs/","sidebar":"tutorialSidebar"},{"id":"install","path":"/docs/install","sidebar":"tutorialSidebar"},{"id":"usage/index","path":"/docs/usage/","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu","path":"/docs/usage/man/","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_addresses","path":"/docs/usage/man/addresses","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion","path":"/docs/usage/man/completion","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_bash","path":"/docs/usage/man/completion/bash","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_fish","path":"/docs/usage/man/completion/fish","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_powershell","path":"/docs/usage/man/completion/powershell","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_completion_zsh","path":"/docs/usage/man/completion/zsh","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_config","path":"/docs/usage/man/config","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_config_get","path":"/docs/usage/man/config/get","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_config_reload","path":"/docs/usage/man/config/reload","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_config_set","path":"/docs/usage/man/config/set","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_daemon","path":"/docs/usage/man/daemon","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_invite","path":"/docs/usage/man/invite","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_monitor","path":"/docs/usage/man/monitor","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_relay","path":"/docs/usage/man/relay","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_reload","path":"/docs/usage/man/reload","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_restart","path":"/docs/usage/man/restart","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_self-update","path":"/docs/usage/man/self-update","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_selfupdate","path":"/docs/usage/man/selfupdate","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_signal","path":"/docs/usage/man/signal","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_status","path":"/docs/usage/man/status","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_stop","path":"/docs/usage/man/stop","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_sync","path":"/docs/usage/man/sync","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_version","path":"/docs/usage/man/version","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg","path":"/docs/usage/man/wg","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_genkey","path":"/docs/usage/man/wg/genkey","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_genpsk","path":"/docs/usage/man/wg/genpsk","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_pubkey","path":"/docs/usage/man/wg/pubkey","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_show","path":"/docs/usage/man/wg/show","sidebar":"tutorialSidebar"},{"id":"usage/md/cunicu_wg_showconf","path":"/docs/usage/man/wg/showconf","sidebar":"tutorialSidebar"},{"id":"usage/upgrade","path":"/docs/usage/upgrade","sidebar":"tutorialSidebar"},{"id":"usage/usecases","path":"/docs/usage/usecases","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/","label":"index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.1.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.1.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.1.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.1.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.1.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.1.0"},"@cmfcmf/docusaurus-search-local":{"type":"package","name":"@cmfcmf/docusaurus-search-local","version":"0.11.0"},"docusaurus-plugin-matomo":{"type":"package","name":"@gabrielcsapo/docusaurus-plugin-matomo","version":"0.1.2"},"webpack-configuration-plugin":{"type":"local"}}}'),u={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),o=n(412),a=n(5742),i=n(4931);function l(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function s(e){let{error:t,tryAgain:n}=e;return r.createElement(c,{fallback:()=>r.createElement(l,{error:t,tryAgain:n})},r.createElement(a.Z,null,r.createElement("title",null,"Page Error")),r.createElement(i.Z,null,r.createElement(l,{error:t,tryAgain:n})))}const u=e=>r.createElement(s,e);class c extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??u)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(405);function a(e){return r.createElement(o.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),o=n(7294),a=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=o.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){var n;let{isNavLink:f,to:p,href:m,activeClassName:h,isActive:g,"data-noBrokenLinkCheck":v,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:w,baseUrl:k}}=(0,l.Z)(),{withBaseUrl:E}=(0,d.C)(),S=(0,o.useContext)(c),_=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,(()=>_.current));const x=p||m;const O=(0,s.Z)(x),P=null==x?void 0:x.replace("pathname://","");let C=void 0!==P?(T=P,b&&(e=>e.startsWith("/"))(T)?E(T):T):void 0;var T;C&&O&&(C=(0,i.applyTrailingSlash)(C,{trailingSlash:w,baseUrl:k}));const I=(0,o.useRef)(!1),A=f?a.OL:a.rU,L=u.Z.canUseIntersectionObserver,N=(0,o.useRef)();(0,o.useEffect)((()=>(!L&&O&&null!=C&&window.docusaurus.prefetch(C),()=>{L&&N.current&&N.current.disconnect()})),[N,C,L,O]);const R=(null==(n=C)?void 0:n.startsWith("#"))??!1,D=!C||!O||R;return D||v||S.collectLink(C),D?o.createElement("a",(0,r.Z)({ref:_,href:C},x&&!O&&{target:"_blank",rel:"noopener noreferrer"},y)):o.createElement(A,(0,r.Z)({},y,{onMouseEnter:()=>{I.current||null==C||(window.docusaurus.preload(C),I.current=!0)},innerRef:e=>{_.current=e,L&&e&&O&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=C&&window.docusaurus.prefetch(C))}))})),N.current.observe(e))},to:C},f&&{isActive:g,activeClassName:h}))}const p=o.forwardRef(f)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=null==t?void 0:t[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var a=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return a[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:a}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,o(l,a))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>a,Z:()=>i});var r=n(2263),o=n(3919);function a(){const{siteConfig:{baseUrl:e,url:t}}=(0,r.Z)();return{withBaseUrl:(n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)}}function i(e,t){void 0===t&&(t={});const{withBaseUrl:n}=a();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>a,eZ:()=>i});var r=n(2263),o=n(9935);function a(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=a(e),i=null==r?void 0:r[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});function r(e){const t={};return function e(n,r){Object.entries(n).forEach((n=>{let[o,a]=n;const i=r?`${r}.${o}`:o;var l;"object"==typeof(l=a)&&l&&Object.keys(l).length>0?e(a,i):t[i]=a}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>a});var r=n(7294);const o=r.createContext(null);function a(e){let{children:t,value:n}=e;const a=r.useContext(o),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...null==n?void 0:n.data};return{plugin:t.plugin,data:r}}({parent:a,value:n})),[a,n]);return r.createElement(o.Provider,{value:i},t)}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>d,WS:()=>f,_r:()=>u,Jo:()=>g,zh:()=>c,yW:()=>m,gB:()=>p});var r=n(6775),o=n(8084);const a=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=a(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function l(e,t){const n=i(e,t),o=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const s={},u=()=>(0,o.OD)("docusaurus-plugin-content-docs")??s,c=e=>(0,o.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function d(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){void 0===e&&(e={});const t=d(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:i(t.pluginData,n)}}function p(e){return c(e).versions}function m(e){const t=c(e);return a(t)}function h(e){const t=c(e),{pathname:n}=(0,r.TH)();return l(t,n)}function g(e){const t=c(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=a(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const o="iconExternalLink_nPIU";function a(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:o},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},4931:(e,t,n)=>{"use strict";n.d(t,{Z:()=>oa});var r=n(7294),o=n(6010),a=n(4763),i=n(1944),l=n(5281),s=n(9727),u=n(5999),c=n(6775),d=n(5936);function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}const p="skipToContent_fXgn";function m(){const{containerRef:e,handleSkip:t}=function(){const e=(0,r.useRef)(null),{action:t}=(0,c.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.querySelector(`.${l.k.wrapper.main}`);t&&f(t)}),[]);return(0,d.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,handleSkip:n}}();return r.createElement("div",{ref:e,role:"region","aria-label":(0,u.I)({id:"theme.common.skipToMainContent"})},r.createElement("a",{href:"#",className:p,onClick:t},r.createElement(u.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))}var h=n(6668),g=n(9689),v=n(7462);function b(e){let{width:t=21,height:n=21,color:o="currentColor",strokeWidth:a=1.2,className:i,...l}=e;return r.createElement("svg",(0,v.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:o,strokeWidth:a},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const y="closeButton_CVFx";function w(e){return r.createElement("button",(0,v.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,o.Z)("clean-btn close",y,e.className)}),r.createElement(b,{width:14,height:14,strokeWidth:3.1}))}const k="content_knG7";function E(e){const{announcementBar:t}=(0,h.L)(),{content:n}=t;return r.createElement("div",(0,v.Z)({},e,{className:(0,o.Z)(k,e.className),dangerouslySetInnerHTML:{__html:n}}))}const S="announcementBar_mb4j",_="announcementBarPlaceholder_vyr4",x="announcementBarClose_gvF7",O="announcementBarContent_xLdY";function P(){const{announcementBar:e}=(0,h.L)(),{isActive:t,close:n}=(0,g.nT)();if(!t)return null;const{backgroundColor:o,textColor:a,isCloseable:i}=e;return r.createElement("div",{className:S,style:{backgroundColor:o,color:a},role:"banner"},i&&r.createElement("div",{className:_}),r.createElement(E,{className:O}),i&&r.createElement(w,{onClick:n,className:x}))}var C=n(2961),T=n(2466);var I=n(902),A=n(3102);const L=r.createContext(null);function N(e){let{children:t}=e;const n=function(){const e=(0,C.e)(),t=(0,A.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,I.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return r.createElement(L.Provider,{value:n},t)}function R(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function D(){const e=(0,r.useContext)(L);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,A.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:R(a)})),[o,a,t])}function j(e){let{header:t,primaryMenu:n,secondaryMenu:a}=e;const{shown:i}=D();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},a)))}var M=n(2949),F=n(2389);function B(e){return r.createElement("svg",(0,v.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function z(e){return r.createElement("svg",(0,v.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function $(e){let{className:t,value:n,onChange:a}=e;const i=(0,F.Z)(),l=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===n?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,o.Z)(U.toggle,t)},r.createElement("button",{className:(0,o.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled),type:"button",onClick:()=>a("dark"===n?"light":"dark"),disabled:!i,title:l,"aria-label":l},r.createElement(B,{className:(0,o.Z)(U.toggleIcon,U.lightToggleIcon)}),r.createElement(z,{className:(0,o.Z)(U.toggleIcon,U.darkToggleIcon)})))}const q=r.memo($);function H(e){let{className:t}=e;const n=(0,h.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,M.I)();return n?null:r.createElement(q,{className:t,value:o,onChange:a})}var G=n(1327);function Q(){return r.createElement(G.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Z(){const e=(0,C.e)();return r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(b,{color:"var(--ifm-color-emphasis-600)"}))}function V(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Q,null),r.createElement(H,{className:"margin-right--md"}),r.createElement(Z,null))}var W=n(9960),K=n(4996),Y=n(3919);function X(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var J=n(9471);function ee(e){let{activeBasePath:t,activeBaseRegex:n,to:o,href:a,label:i,html:l,isDropdownLink:s,prependBaseUrlToHref:u,...c}=e;const d=(0,K.Z)(o),f=(0,K.Z)(t),p=(0,K.Z)(a,{forcePrependBaseUrl:!0}),m=i&&a&&!(0,Y.Z)(a),h=l?{dangerouslySetInnerHTML:{__html:l}}:{children:r.createElement(r.Fragment,null,i,m&&r.createElement(J.Z,s&&{width:12,height:12}))};return a?r.createElement(W.Z,(0,v.Z)({href:u?p:a},c,h)):r.createElement(W.Z,(0,v.Z)({to:d,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?X(n,t.pathname):t.pathname.startsWith(f)},c,h))}function te(e){let{className:t,isDropdownItem:n=!1,...a}=e;const i=r.createElement(ee,(0,v.Z)({className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},a));return n?r.createElement("li",null,i):i}function ne(e){let{className:t,isDropdownItem:n,...a}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ee,(0,v.Z)({className:(0,o.Z)("menu__link",t)},a)))}function re(e){let{mobile:t=!1,position:n,...o}=e;const a=t?ne:te;return r.createElement(a,(0,v.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var oe=n(6043),ae=n(8596),ie=n(2263);function le(e,t){return e.some((e=>function(e,t){return!!(0,ae.Mg)(e.to,t)||!!X(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function se(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,c]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&c(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[s]),r.createElement("div",{ref:s,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ee,(0,v.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,o.Z)("navbar__link",a)},l,{onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),c(!u))}}),l.children??l.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(yo,(0,v.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),c(!1);const t=s.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function ue(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const s=function(){const{siteConfig:{baseUrl:e}}=(0,ie.Z)(),{pathname:t}=(0,c.TH)();return t.replace(e,"/")}(),u=le(t,s),{collapsed:d,toggleCollapsed:f,setCollapsed:p}=(0,oe.u)({initialState:()=>!u});return(0,r.useEffect)((()=>{u&&p(!u)}),[s,u,p]),r.createElement("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":d})},r.createElement(ee,(0,v.Z)({role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},l,{onClick:e=>{e.preventDefault(),f()}}),l.children??l.label),r.createElement(oe.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:d},t.map(((e,t)=>r.createElement(yo,(0,v.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function ce(e){let{mobile:t=!1,...n}=e;const o=t?ue:se;return r.createElement(o,n)}var de=n(4711);function fe(e){let{width:t=20,height:n=20,...o}=e;return r.createElement("svg",(0,v.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},o),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const pe="iconLanguage_nlXk";var me=n(3935);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ge(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ve(e,t,n){var r,o=t.initialState;return{getState:function(){return o},dispatch:function(r,a){var i=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){ge(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},o);o=e(o,{type:r,props:t,payload:a}),n({state:o,prevState:i})},pendingRequests:(r=[],{add:function(e){return r.push(e),e.finally((function(){r=r.filter((function(t){return t!==e}))}))},cancelAll:function(){r.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===r.length}})}}function be(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function we(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(n),!0).forEach((function(t){ke(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var Se=0;function _e(){return"autocomplete-".concat(Se++)}var xe=function(){};function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ce(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){Pe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:xe},e);return Promise.resolve(t)})))}))}function Te(e){return function(e){if(Array.isArray(e))return Ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ie(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ie(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){Ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function De(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Re(Object(n),!0).forEach((function(t){je(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Me(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Me(Object(n),!0).forEach((function(t){Be(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Me(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ze(e){return function(e){if(Array.isArray(e))return Ue(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ue(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ue(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function qe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach((function(t){He(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function He(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ge(e){return Boolean(e.execute)}function Qe(e,t){return n=e,Boolean(null==n?void 0:n.execute)?qe(qe({},e),{},{requests:e.queries.map((function(n){return{query:n,sourceId:t,transformResponse:e.transformResponse}}))}):{items:e,sourceId:t};var n}function Ze(e){var t=e.reduce((function(e,t){if(!Ge(t))return e.push(t),e;var n=t.searchClient,r=t.execute,o=t.requesterId,a=t.requests,i=e.find((function(e){return Ge(t)&&Ge(e)&&e.searchClient===n&&Boolean(o)&&e.requesterId===o}));if(i){var l;(l=i.items).push.apply(l,ze(a))}else{var s={execute:r,requesterId:o,items:a,searchClient:n};e.push(s)}return e}),[]).map((function(e){if(!Ge(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return be(e)}))}function Ve(e,t){return t.map((function(t){var n=e.filter((function(e){return e.sourceId===t.sourceId})),r=n.map((function(e){return e.items})),o=n[0].transformResponse,a=o?o(function(e){var t=e.map((function(e){var t;return Fe(Fe({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return Fe(Fe({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(r)):r;return Array.isArray(a),a.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:a}}))}function We(e,t){var n=t;return{then:function(t,r){return We(e.then(Xe(t,n,e),Xe(r,n,e)),n)},catch:function(t){return We(e.catch(Xe(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),We(e.finally(Xe(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function Ke(e){return We(new Promise((function(t,n){return e(t,n)})),{isCanceled:!1,onCancelList:[]})}function Ye(e){return We(e,{isCanceled:!1,onCancelList:[]})}function Xe(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function Je(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,a=0;!1===r;){var i=t.collections[o];if(i===n){r=!0;break}a+=i.items.length,o++}return t.activeItemId-a}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}Ke.resolve=function(e){return Ye(Promise.resolve(e))},Ke.reject=function(e){return Ye(Promise.reject(e))};var et=["event","nextState","props","query","refresh","store"];function tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tt(Object(n),!0).forEach((function(t){rt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function rt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ot(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var at,it,lt,st=null,ut=(at=-1,it=-1,lt=void 0,function(e){var t=++at;return Promise.resolve(e).then((function(e){return lt&&t<it?lt:(it=t,lt=e,e)}))});function ct(e){var t=e.event,n=e.nextState,r=void 0===n?{}:n,o=e.props,a=e.query,i=e.refresh,l=e.store,s=ot(e,et);st&&o.environment.clearTimeout(st);var u=s.setCollections,c=s.setIsOpen,d=s.setQuery,f=s.setActiveItemId,p=s.setStatus;if(d(a),f(o.defaultActiveItemId),!a&&!1===o.openOnFocus){var m,h=l.getState().collections.map((function(e){return nt(nt({},e),{},{items:[]})}));p("idle"),u(h),c(null!==(m=r.isOpen)&&void 0!==m?m:o.shouldPanelOpen({state:l.getState()}));var g=Ye(ut(h).then((function(){return Promise.resolve()})));return l.pendingRequests.add(g)}p("loading"),st=o.environment.setTimeout((function(){p("stalled")}),o.stallThreshold);var v=Ye(ut(o.getSources(nt({query:a,refresh:i,state:l.getState()},s)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(nt({query:a,refresh:i,state:l.getState()},s))).then((function(t){return Qe(t,e.sourceId)}))}))).then(Ze).then((function(t){return Ve(t,e)})).then((function(e){return function(e){var t=e.collections,n=e.props,r=e.state,o=t.reduce((function(e,t){return De(De({},e),{},je({},t.source.sourceId,De(De({},t.source),{},{getItems:function(){return be(t.items)}})))}),{});return be(n.reshape({sources:Object.values(o),sourcesBySourceId:o,state:r})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:l.getState()})}))})))).then((function(e){var n;p("idle"),u(e);var d=o.shouldPanelOpen({state:l.getState()});c(null!==(n=r.isOpen)&&void 0!==n?n:o.openOnFocus&&!a&&d||d);var f=Je(l.getState());if(null!==l.getState().activeItemId&&f){var m=f.item,h=f.itemInputValue,g=f.itemUrl,v=f.source;v.onActive(nt({event:t,item:m,itemInputValue:h,itemUrl:g,refresh:i,source:v,state:l.getState()},s))}})).finally((function(){p("idle"),st&&o.environment.clearTimeout(st)}));return l.pendingRequests.add(v)}var dt=["event","props","refresh","store"];function ft(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ft(Object(n),!0).forEach((function(t){mt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ft(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function mt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ht(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var gt=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var vt=["props","refresh","store"],bt=["inputElement","formElement","panelElement"],yt=["inputElement"],wt=["inputElement","maxLength"],kt=["item","source"];function Et(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function St(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Et(Object(n),!0).forEach((function(t){_t(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Et(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function _t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xt(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ot(e){var t=e.props,n=e.refresh,r=e.store,o=xt(e,vt);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,a=e.panelElement;function i(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,a].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return St({onTouchStart:i,onMouseDown:i,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},xt(e,bt))},getRootProps:function(e){return St({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return St({action:"",noValidate:!0,role:"search",onSubmit:function(a){var i;a.preventDefault(),t.onSubmit(St({event:a,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(i=e.inputElement)||void 0===i||i.blur()},onReset:function(a){var i;a.preventDefault(),t.onReset(St({event:a,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(i=e.inputElement)||void 0===i||i.focus()}},xt(e,yt))},getLabelProps:function(e){return St({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function i(e){(t.openOnFocus||Boolean(r.getState().query))&&ct(St({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var l=e||{},s=(l.inputElement,l.maxLength),u=void 0===s?512:s,c=xt(l,wt),d=Je(r.getState()),f=function(e){return Boolean(e&&e.match(gt))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),p=null!=d&&d.itemUrl&&!f?"go":"search";return St({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:p,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(e){ct(St({event:e,props:t,query:e.currentTarget.value.slice(0,u),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,a=ht(e,dt);if("ArrowUp"===t.key||"ArrowDown"===t.key){var i=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},l=function(){var e=Je(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,i=e.itemInputValue,l=e.itemUrl,s=e.source;s.onActive(pt({event:t,item:n,itemInputValue:i,itemUrl:l,refresh:r,source:s,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?ct(pt({event:t,props:n,query:o.getState().query,refresh:r,store:o},a)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),l(),setTimeout(i,0)})):(o.dispatch(t.key,{}),l(),i())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var s=Je(o.getState()),u=s.item,c=s.itemInputValue,d=s.itemUrl,f=s.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a)),n.navigator.navigateNewTab({itemUrl:d,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==d&&(f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a)),n.navigator.navigateNewWindow({itemUrl:d,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==d)return f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a)),void n.navigator.navigate({itemUrl:d,item:u,state:o.getState()});ct(pt({event:t,nextState:{isOpen:!1},props:n,query:c,refresh:r,store:o},a)).then((function(){f.onSelect(pt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:f,state:o.getState()},a))}))}}}(St({event:e,props:t,refresh:n,store:r},o))},onFocus:i,onBlur:xe,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(n)}},c)},getPanelProps:function(e){return St({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return St({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,i=e.source,l=xt(e,kt);return St({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",a.__autocomplete_id);var t=Je(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,l=t.itemInputValue,s=t.itemUrl,u=t.source;u.onActive(St({event:e,item:i,itemInputValue:l,itemUrl:s,refresh:n,source:u,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var l=i.getItemInputValue({item:a,state:r.getState()}),s=i.getItemUrl({item:a,state:r.getState()});(s?Promise.resolve():ct(St({event:e,nextState:{isOpen:!1},props:t,query:l,refresh:n,store:r},o))).then((function(){i.onSelect(St({event:e,item:a,itemInputValue:l,itemUrl:s,refresh:n,source:i,state:r.getState()},o))}))}},l)}}}var Pt="1.7.1",Ct=[{segment:"autocomplete-core",version:Pt}];function Tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function It(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Tt(Object(n),!0).forEach((function(t){At(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function At(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Lt(e){var t,n,r,o,a=e.plugins,i=e.options,l=null===(t=((null===(n=i.__autocomplete_metadata)||void 0===n?void 0:n.userAgents)||[])[0])||void 0===t?void 0:t.segment,s=l?At({},l,Object.keys((null===(r=i.__autocomplete_metadata)||void 0===r?void 0:r.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:It({"autocomplete-core":Object.keys(i)},s),ua:Ct.concat((null===(o=i.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function Nt(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=Je(n))||void 0===t?void 0:t.itemInputValue)||null}function Rt(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function Dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function jt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dt(Object(n),!0).forEach((function(t){Mt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Mt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ft=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return jt(jt({},e),{},{activeItemId:t.payload});case"setQuery":return jt(jt({},e),{},{query:t.payload,completion:null});case"setCollections":return jt(jt({},e),{},{collections:t.payload});case"setIsOpen":return jt(jt({},e),{},{isOpen:t.payload});case"setStatus":return jt(jt({},e),{},{status:t.payload});case"setContext":return jt(jt({},e),{},{context:jt(jt({},e.context),t.payload)});case"ArrowDown":var n=jt(jt({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:Rt(1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return jt(jt({},n),{},{completion:Nt({state:n})});case"ArrowUp":var r=jt(jt({},e),{},{activeItemId:Rt(-1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return jt(jt({},r),{},{completion:Nt({state:r})});case"Escape":return e.isOpen?jt(jt({},e),{},{activeItemId:null,isOpen:!1,completion:null}):jt(jt({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return jt(jt({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return jt(jt({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return jt(jt({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:jt(jt({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return jt(jt({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function Bt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bt(Object(n),!0).forEach((function(t){Ut(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $t(e){var t=[],n=function(e,t){var n,r="undefined"!=typeof window?window:{},o=e.plugins||[];return Le(Le({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:r,shouldPanelOpen:function(e){return Ee(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:_e(),plugins:o,initialState:Le({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(Te(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return Ce(e,n)}))).then((function(e){return be(e)})).then((function(e){return e.map((function(e){return Le(Le({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Le({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}(e,t),r=ve(Ft,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(zt({prevState:t,state:r,refresh:i},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return we(we({},e),{},{items:be(e.items).map((function(e){return we(we({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=Ot(zt({props:n,refresh:i,store:r},o));function i(){return ct(zt({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:i,store:r},o))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,zt(zt({},o),{},{refresh:i,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var a=o.document.createElement("meta"),i=o.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(r),i.appendChild(a)}),0)}}({metadata:Lt({plugins:n.plugins,options:e}),environment:n.environment}),zt(zt({refresh:i},a),o)}function qt(e){return{current:e}}function Ht(e,t){var n=void 0;return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,o)}),t)}}var Gt=function(e,t,n,r){var o;t[0]=0;for(var a=1;a<t.length;a++){var i=t[a++],l=t[a]?(t[0]|=i?1:2,n[t[a++]]):t[++a];3===i?r[0]=l:4===i?r[1]=Object.assign(r[1]||{},l):5===i?(r[1]=r[1]||{})[t[++a]]=l:6===i?r[1][t[++a]]+=l+"":i?(o=e.apply(l,Gt(e,l,n,["",null])),r.push(o),l[0]?t[0]|=2:(t[a-2]=0,t[a]=o)):r.push(l)}return r},Qt=new Map;function Zt(e){var t=Qt.get(this);return t||(t=new Map,Qt.set(this,t)),(t=Gt(this,t.get(e)||(t.set(e,t=function(e){for(var t,n,r=1,o="",a="",i=[0],l=function(e){1===r&&(e||(o=o.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?i.push(0,e,o):3===r&&(e||o)?(i.push(3,e,o),r=2):2===r&&"..."===o&&e?i.push(4,e,0):2===r&&o&&!e?i.push(5,0,!0,o):r>=5&&((o||!e&&5===r)&&(i.push(r,0,o,n),r=6),e&&(i.push(r,e,0,n),r=6)),o=""},s=0;s<e.length;s++){s&&(1===r&&l(),l(s));for(var u=0;u<e[s].length;u++)t=e[s][u],1===r?"<"===t?(l(),i=[i],r=3):o+=t:4===r?"--"===o&&">"===t?(r=1,o=""):o=t+o[0]:a?t===a?a="":o+=t:'"'===t||"'"===t?a=t:">"===t?(l(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[s][u+1])?(l(),3===r&&(i=i[0]),r=i,(i=i[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(l(),r=2):o+=t),3===r&&"!--"===o&&(r=4,i=i[0])}return l(),i}(e)),t),arguments,[])).length>1?t:t[0]}var Vt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-SubmitIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","20"),n.setAttribute("height","20"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"),n.appendChild(r),n},Wt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n},Kt=function(e){var t=e.environment.document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("class","aa-LoadingIcon"),t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("width","20"),t.setAttribute("height","20"),t.innerHTML='<circle\n cx="50"\n cy="50"\n fill="none"\n r="35"\n stroke="currentColor"\n stroke-dasharray="164.93361431346415 56.97787143782138"\n stroke-width="6"\n>\n <animateTransform\n attributeName="transform"\n type="rotate"\n repeatCount="indefinite"\n dur="1s"\n values="0 50 50;90 50 50;180 50 50;360 50 50"\n keyTimes="0;0.40;0.65;1"\n />\n</circle>',t},Yt=["ontouchstart","ontouchend","ontouchmove","ontouchcancel"];function Xt(e,t,n){e[t]=null===n?"":"number"!=typeof n?n:n+"px"}function Jt(e){this._listeners[e.type](e)}function en(e,t,n){var r,o,a=e[t];if("style"===t)if("string"==typeof n)e.style=n;else if(null===n)e.style="";else for(t in n)a&&n[t]===a[t]||Xt(e.style,t,n[t]);else"o"===t[0]&&"n"===t[1]?(r=t!==(t=t.replace(/Capture$/,"")),((o=t.toLowerCase())in e||Yt.includes(o))&&(t=o),t=t.slice(2),e._listeners||(e._listeners={}),e._listeners[t]=n,n?a||e.addEventListener(t,Jt,r):e.removeEventListener(t,Jt,r)):"list"!==t&&"tagName"!==t&&"form"!==t&&"type"!==t&&"size"!==t&&"download"!==t&&"href"!==t&&t in e?e[t]=null==n?"":n:"function"!=typeof n&&"dangerouslySetInnerHTML"!==t&&(null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function tn(e){return"onChange"===e?"onInput":e}function nn(e,t){for(var n in t)en(e,tn(n),t[n])}function rn(e,t){for(var n in t)"o"===n[0]&&"n"===n[1]||en(e,tn(n),t[n])}var on=["children"];function an(e){return function(e){if(Array.isArray(e))return ln(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ln(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ln(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ln(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function sn(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function un(e){return function(t,n){var r=n.children,o=void 0===r?[]:r,a=sn(n,on),i=e.document.createElement(t);return nn(i,a),i.append.apply(i,an(o)),i}}var cn=["autocompleteScopeApi","environment","classNames","getInputProps","getInputPropsCore","isDetached","state"];function dn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function fn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dn(Object(n),!0).forEach((function(t){pn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function pn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function mn(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function hn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function gn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hn(Object(n),!0).forEach((function(t){vn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bn(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.classNames,o=e.environment,a=e.isDetached,i=e.placeholder,l=void 0===i?"Search":i,s=e.propGetters,u=e.setIsModalOpen,c=e.state,d=e.translations,f=un(o),p=s.getRootProps(gn({state:c,props:t.getRootProps({})},n)),m=f("div",gn({class:r.root},p)),h=f("div",{class:r.detachedContainer,onMouseDown:function(e){e.stopPropagation()}}),g=f("div",{class:r.detachedOverlay,children:[h],onMouseDown:function(){u(!1),t.setIsOpen(!1)}}),v=s.getLabelProps(gn({state:c,props:t.getLabelProps({})},n)),b=f("button",{class:r.submitButton,type:"submit",title:d.submitButtonTitle,children:[Vt({environment:o})]}),y=f("label",gn({class:r.label,children:[b]},v)),w=f("button",{class:r.clearButton,type:"reset",title:d.clearButtonTitle,children:[Wt({environment:o})]}),k=f("div",{class:r.loadingIndicator,children:[Kt({environment:o})]}),E=function(e){var t=e.autocompleteScopeApi,n=e.environment,r=(e.classNames,e.getInputProps),o=e.getInputPropsCore,a=e.isDetached,i=e.state,l=mn(e,cn),s=un(n)("input",l),u=r(fn({state:i,props:o({inputElement:s}),inputElement:s},t));return nn(s,fn(fn({},u),{},{onKeyDown:function(e){a&&"Tab"===e.key||u.onKeyDown(e)}})),s}({class:r.input,environment:o,state:c,getInputProps:s.getInputProps,getInputPropsCore:t.getInputProps,autocompleteScopeApi:n,isDetached:a}),S=f("div",{class:r.inputWrapperPrefix,children:[y,k]}),_=f("div",{class:r.inputWrapperSuffix,children:[w]}),x=f("div",{class:r.inputWrapper,children:[E]}),O=s.getFormProps(gn({state:c,props:t.getFormProps({inputElement:E})},n)),P=f("form",gn({class:r.form,children:[S,x,_]},O)),C=s.getPanelProps(gn({state:c,props:t.getPanelProps({})},n)),T=f("div",gn({class:r.panel},C));if(a){var I=f("div",{class:r.detachedSearchButtonIcon,children:[Vt({environment:o})]}),A=f("div",{class:r.detachedSearchButtonPlaceholder,textContent:l}),L=f("button",{type:"button",class:r.detachedSearchButton,onClick:function(){u(!0)},children:[I,A]}),N=f("button",{type:"button",class:r.detachedCancelButton,textContent:d.detachedCancelButtonText,onTouchStart:function(e){e.stopPropagation()},onClick:function(){t.setIsOpen(!1),u(!1)}}),R=f("div",{class:r.detachedFormContainer,children:[P,N]});h.appendChild(R),m.appendChild(L)}else m.appendChild(P);return{detachedContainer:h,detachedOverlay:g,inputWrapper:x,input:E,root:m,form:P,label:y,submitButton:b,clearButton:w,loadingIndicator:k,panel:T}}var yn,wn,kn,En,Sn,_n={},xn=[],On=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Pn(e,t){for(var n in t)e[n]=t[n];return e}function Cn(e){var t=e.parentNode;t&&t.removeChild(e)}function Tn(e,t,n){var r,o,a,i={};for(a in t)"key"==a?r=t[a]:"ref"==a?o=t[a]:i[a]=t[a];if(arguments.length>2&&(i.children=arguments.length>3?yn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===i[a]&&(i[a]=e.defaultProps[a]);return In(e,i,r,o,null)}function In(e,t,n,r,o){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++kn:o};return null==o&&null!=wn.vnode&&wn.vnode(a),a}function An(e){return e.children}function Ln(e,t){this.props=e,this.context=t}function Nn(e,t){if(null==t)return e.__?Nn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?Nn(e):null}function Rn(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return Rn(e)}}function Dn(e){(!e.__d&&(e.__d=!0)&&En.push(e)&&!jn.__r++||Sn!==wn.debounceRendering)&&((Sn=wn.debounceRendering)||setTimeout)(jn)}function jn(){for(var e;jn.__r=En.length;)e=En.sort((function(e,t){return e.__v.__b-t.__v.__b})),En=[],e.some((function(e){var t,n,r,o,a,i;e.__d&&(a=(o=(t=e).__v).__e,(i=t.__P)&&(n=[],(r=Pn({},o)).__v=o.__v+1,Hn(i,o,r,t.__n,void 0!==i.ownerSVGElement,null!=o.__h?[a]:null,n,null==a?Nn(o):a,o.__h),Gn(n,o),o.__e!=a&&Rn(o)))}))}function Mn(e,t,n,r,o,a,i,l,s,u){var c,d,f,p,m,h,g,v=r&&r.__k||xn,b=v.length;for(n.__k=[],c=0;c<t.length;c++)if(null!=(p=n.__k[c]=null==(p=t[c])||"boolean"==typeof p?null:"string"==typeof p||"number"==typeof p||"bigint"==typeof p?In(null,p,null,null,p):Array.isArray(p)?In(An,{children:p},null,null,null):p.__b>0?In(p.type,p.props,p.key,null,p.__v):p)){if(p.__=n,p.__b=n.__b+1,null===(f=v[c])||f&&p.key==f.key&&p.type===f.type)v[c]=void 0;else for(d=0;d<b;d++){if((f=v[d])&&p.key==f.key&&p.type===f.type){v[d]=void 0;break}f=null}Hn(e,p,f=f||_n,o,a,i,l,s,u),m=p.__e,(d=p.ref)&&f.ref!=d&&(g||(g=[]),f.ref&&g.push(f.ref,null,p),g.push(d,p.__c||m,p)),null!=m?(null==h&&(h=m),"function"==typeof p.type&&p.__k===f.__k?p.__d=s=Fn(p,s,e):s=Bn(e,p,f,v,m,s),"function"==typeof n.type&&(n.__d=s)):s&&f.__e==s&&s.parentNode!=e&&(s=Nn(f))}for(n.__e=h,c=b;c--;)null!=v[c]&&("function"==typeof n.type&&null!=v[c].__e&&v[c].__e==n.__d&&(n.__d=Nn(r,c+1)),Vn(v[c],v[c]));if(g)for(c=0;c<g.length;c++)Zn(g[c],g[++c],g[++c])}function Fn(e,t,n){for(var r,o=e.__k,a=0;o&&a<o.length;a++)(r=o[a])&&(r.__=e,t="function"==typeof r.type?Fn(r,t,n):Bn(n,r,r,o,r.__e,t));return t}function Bn(e,t,n,r,o,a){var i,l,s;if(void 0!==t.__d)i=t.__d,t.__d=void 0;else if(null==n||o!=a||null==o.parentNode)e:if(null==a||a.parentNode!==e)e.appendChild(o),i=null;else{for(l=a,s=0;(l=l.nextSibling)&&s<r.length;s+=2)if(l==o)break e;e.insertBefore(o,a),i=a}return void 0!==i?i:o.nextSibling}function zn(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||On.test(t)?n:n+"px"}function Un(e,t,n,r,o){var a;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||zn(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||zn(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])a=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+a]=n,n?r||e.addEventListener(t,a?qn:$n,a):e.removeEventListener(t,a?qn:$n,a);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,n):e.removeAttribute(t))}}function $n(e){this.l[e.type+!1](wn.event?wn.event(e):e)}function qn(e){this.l[e.type+!0](wn.event?wn.event(e):e)}function Hn(e,t,n,r,o,a,i,l,s){var u,c,d,f,p,m,h,g,v,b,y,w,k,E=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(s=n.__h,l=t.__e=n.__e,t.__h=null,a=[l]),(u=wn.__b)&&u(t);try{e:if("function"==typeof E){if(g=t.props,v=(u=E.contextType)&&r[u.__c],b=u?v?v.props.value:u.__:r,n.__c?h=(c=t.__c=n.__c).__=c.__E:("prototype"in E&&E.prototype.render?t.__c=c=new E(g,b):(t.__c=c=new Ln(g,b),c.constructor=E,c.render=Wn),v&&v.sub(c),c.props=g,c.state||(c.state={}),c.context=b,c.__n=r,d=c.__d=!0,c.__h=[]),null==c.__s&&(c.__s=c.state),null!=E.getDerivedStateFromProps&&(c.__s==c.state&&(c.__s=Pn({},c.__s)),Pn(c.__s,E.getDerivedStateFromProps(g,c.__s))),f=c.props,p=c.state,d)null==E.getDerivedStateFromProps&&null!=c.componentWillMount&&c.componentWillMount(),null!=c.componentDidMount&&c.__h.push(c.componentDidMount);else{if(null==E.getDerivedStateFromProps&&g!==f&&null!=c.componentWillReceiveProps&&c.componentWillReceiveProps(g,b),!c.__e&&null!=c.shouldComponentUpdate&&!1===c.shouldComponentUpdate(g,c.__s,b)||t.__v===n.__v){c.props=g,c.state=c.__s,t.__v!==n.__v&&(c.__d=!1),c.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),c.__h.length&&i.push(c);break e}null!=c.componentWillUpdate&&c.componentWillUpdate(g,c.__s,b),null!=c.componentDidUpdate&&c.__h.push((function(){c.componentDidUpdate(f,p,m)}))}if(c.context=b,c.props=g,c.__v=t,c.__P=e,y=wn.__r,w=0,"prototype"in E&&E.prototype.render)c.state=c.__s,c.__d=!1,y&&y(t),u=c.render(c.props,c.state,c.context);else do{c.__d=!1,y&&y(t),u=c.render(c.props,c.state,c.context),c.state=c.__s}while(c.__d&&++w<25);c.state=c.__s,null!=c.getChildContext&&(r=Pn(Pn({},r),c.getChildContext())),d||null==c.getSnapshotBeforeUpdate||(m=c.getSnapshotBeforeUpdate(f,p)),k=null!=u&&u.type===An&&null==u.key?u.props.children:u,Mn(e,Array.isArray(k)?k:[k],t,n,r,o,a,i,l,s),c.base=t.__e,t.__h=null,c.__h.length&&i.push(c),h&&(c.__E=c.__=null),c.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=Qn(n.__e,t,n,r,o,a,i,s);(u=wn.diffed)&&u(t)}catch(e){t.__v=null,(s||null!=a)&&(t.__e=l,t.__h=!!s,a[a.indexOf(l)]=null),wn.__e(e,t,n)}}function Gn(e,t){wn.__c&&wn.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){wn.__e(e,t.__v)}}))}function Qn(e,t,n,r,o,a,i,l){var s,u,c,d=n.props,f=t.props,p=t.type,m=0;if("svg"===p&&(o=!0),null!=a)for(;m<a.length;m++)if((s=a[m])&&"setAttribute"in s==!!p&&(p?s.localName===p:3===s.nodeType)){e=s,a[m]=null;break}if(null==e){if(null===p)return document.createTextNode(f);e=o?document.createElementNS("http://www.w3.org/2000/svg",p):document.createElement(p,f.is&&f),a=null,l=!1}if(null===p)d===f||l&&e.data===f||(e.data=f);else{if(a=a&&yn.call(e.childNodes),u=(d=n.props||_n).dangerouslySetInnerHTML,c=f.dangerouslySetInnerHTML,!l){if(null!=a)for(d={},m=0;m<e.attributes.length;m++)d[e.attributes[m].name]=e.attributes[m].value;(c||u)&&(c&&(u&&c.__html==u.__html||c.__html===e.innerHTML)||(e.innerHTML=c&&c.__html||""))}if(function(e,t,n,r,o){var a;for(a in n)"children"===a||"key"===a||a in t||Un(e,a,null,n[a],r);for(a in t)o&&"function"!=typeof t[a]||"children"===a||"key"===a||"value"===a||"checked"===a||n[a]===t[a]||Un(e,a,t[a],n[a],r)}(e,f,d,o,l),c)t.__k=[];else if(m=t.props.children,Mn(e,Array.isArray(m)?m:[m],t,n,r,o&&"foreignObject"!==p,a,i,a?a[0]:n.__k&&Nn(n,0),l),null!=a)for(m=a.length;m--;)null!=a[m]&&Cn(a[m]);l||("value"in f&&void 0!==(m=f.value)&&(m!==e.value||"progress"===p&&!m||"option"===p&&m!==d.value)&&Un(e,"value",m,d.value,!1),"checked"in f&&void 0!==(m=f.checked)&&m!==e.checked&&Un(e,"checked",m,d.checked,!1))}return e}function Zn(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){wn.__e(e,n)}}function Vn(e,t,n){var r,o;if(wn.unmount&&wn.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||Zn(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){wn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Vn(r[o],t,"function"!=typeof e.type);n||null==e.__e||Cn(e.__e),e.__e=e.__d=void 0}function Wn(e,t,n){return this.constructor(e,n)}function Kn(e,t,n){var r,o,a;wn.__&&wn.__(e,t),o=(r="function"==typeof n)?null:n&&n.__k||t.__k,a=[],Hn(t,e=(!r&&n||t).__k=Tn(An,null,[e]),o||_n,_n,void 0!==t.ownerSVGElement,!r&&n?[n]:o?null:t.firstChild?yn.call(t.childNodes):null,a,!r&&n?n:o?o.__e:t.firstChild,r),Gn(a,e)}function Yn(e,t){return t.reduce((function(e,t){return e&&e[t]}),e)}yn=xn.slice,wn={__e:function(e,t,n,r){for(var o,a,i;t=t.__;)if((o=t.__c)&&!o.__)try{if((a=o.constructor)&&null!=a.getDerivedStateFromError&&(o.setState(a.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),i=o.__d),i)return o.__E=o}catch(t){e=t}throw e}},kn=0,Ln.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=Pn({},this.state),"function"==typeof e&&(e=e(Pn({},n),this.props)),e&&Pn(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),Dn(this))},Ln.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Dn(this))},Ln.prototype.render=An,En=[],jn.__r=0;function Xn(e){var t=e.highlightedValue.split("__aa-highlight__"),n=t.shift(),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split("__/aa-highlight__");r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Jn(e){return function(e){if(Array.isArray(e))return er(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return er(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return er(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function er(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function tr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],o=Yn(t,["_highlightResult"].concat(Jn(r),["value"]));return"string"!=typeof o&&(o=Yn(t,r)||""),Xn({highlightedValue:o})}function nr(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,o=e.attribute,a=e.tagName,i=void 0===a?"mark":a;return t(n,{},tr({hit:r,attribute:o}).map((function(e,n){return e.isHighlighted?t(i,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Highlight",r}var rr={"&":"&","<":"<",">":">",""":'"',"'":"'"},or=new RegExp(/\w/i),ar=/&(amp|quot|lt|gt|#39);/g,ir=RegExp(ar.source);function lr(e,t){var n,r,o,a=e[t],i=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,l=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return or.test((o=a.value)&&ir.test(o)?o.replace(ar,(function(e){return rr[e]})):o)||l!==i?a.isHighlighted:l}function sr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ur(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?sr(Object(n),!0).forEach((function(t){cr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):sr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function cr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function dr(e){return e.some((function(e){return e.isHighlighted}))?e.map((function(t,n){return ur(ur({},t),{},{isHighlighted:!lr(e,n)})})):e.map((function(e){return ur(ur({},e),{},{isHighlighted:!1})}))}function fr(e){var t=e.createElement,n=e.Fragment;function r(e){var r,o=e.hit,a=e.attribute,i=e.tagName,l=void 0===i?"mark":i;return t(n,{},(r={hit:o,attribute:a},dr(tr(r))).map((function(e,n){return e.isHighlighted?t(l,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseHighlight",r}function pr(e){return function(e){if(Array.isArray(e))return mr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return mr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return mr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function mr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function hr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],o=Yn(t,["_snippetResult"].concat(pr(r),["value"]));return"string"!=typeof o&&(o=Yn(t,r)||""),Xn({highlightedValue:o})}function gr(e){var t=e.createElement,n=e.Fragment;function r(e){var r,o=e.hit,a=e.attribute,i=e.tagName,l=void 0===i?"mark":i;return t(n,{},(r={hit:o,attribute:a},dr(hr(r))).map((function(e,n){return e.isHighlighted?t(l,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseSnippet",r}function vr(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,o=e.attribute,a=e.tagName,i=void 0===a?"mark":a;return t(n,{},hr({hit:r,attribute:o}).map((function(e,n){return e.isHighlighted?t(i,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Snippet",r}function br(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function yr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],o=t[n];r!==o&&(e[n]=[r,o].filter(Boolean).join(" "))})),e}),{})}var wr=["classNames","container","getEnvironmentProps","getFormProps","getInputProps","getItemProps","getLabelProps","getListProps","getPanelProps","getRootProps","panelContainer","panelPlacement","render","renderNoResults","renderer","detachedMediaQuery","components","translations"];function kr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Er(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kr(Object(n),!0).forEach((function(t){Sr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Sr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _r(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var xr={clearButton:"aa-ClearButton",detachedCancelButton:"aa-DetachedCancelButton",detachedContainer:"aa-DetachedContainer",detachedFormContainer:"aa-DetachedFormContainer",detachedOverlay:"aa-DetachedOverlay",detachedSearchButton:"aa-DetachedSearchButton",detachedSearchButtonIcon:"aa-DetachedSearchButtonIcon",detachedSearchButtonPlaceholder:"aa-DetachedSearchButtonPlaceholder",form:"aa-Form",input:"aa-Input",inputWrapper:"aa-InputWrapper",inputWrapperPrefix:"aa-InputWrapperPrefix",inputWrapperSuffix:"aa-InputWrapperSuffix",item:"aa-Item",label:"aa-Label",list:"aa-List",loadingIndicator:"aa-LoadingIndicator",panel:"aa-Panel",panelLayout:"aa-PanelLayout aa-Panel--scrollable",root:"aa-Autocomplete",source:"aa-Source",sourceFooter:"aa-SourceFooter",sourceHeader:"aa-SourceHeader",sourceNoResults:"aa-SourceNoResults",submitButton:"aa-SubmitButton"},Or=function(e,t){var n=e.children;(0,e.render)(n,t)},Pr={createElement:Tn,Fragment:An,render:Kn};function Cr(e){var t=e.panelPlacement,n=e.container,r=e.form,o=e.environment,a=n.getBoundingClientRect(),i=(o.pageYOffset||o.document.documentElement.scrollTop||o.document.body.scrollTop||0)+a.top+a.height;switch(t){case"start":return{top:i,left:a.left};case"end":return{top:i,right:o.document.documentElement.clientWidth-(a.left+a.width)};case"full-width":return{top:i,left:0,right:0,width:"unset",maxWidth:"unset"};case"input-wrapper-width":var l=r.getBoundingClientRect();return{top:i,left:l.left,right:o.document.documentElement.clientWidth-(l.left+l.width),width:"unset",maxWidth:"unset"};default:throw new Error("[Autocomplete] The `panelPlacement` value ".concat(JSON.stringify(t)," is not valid."))}}function Tr(){return Tr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Tr.apply(this,arguments)}function Ir(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ir(Object(n),!0).forEach((function(t){Lr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ir(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Lr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Nr=[{segment:"autocomplete-js",version:Pt}];function Rr(e){return function(e){if(Array.isArray(e))return Dr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Dr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function jr(e){return jr="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},jr(e)}var Mr=function(e){return e&&"object"===jr(e)&&"[object Object]"===Object.prototype.toString.call(e)};function Fr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],o=t[n];Array.isArray(r)&&Array.isArray(o)?e[n]=r.concat.apply(r,Rr(o)):Mr(r)&&Mr(o)?e[n]=Fr(r,o):e[n]=o})),e}),{})}function Br(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Br(Object(n),!0).forEach((function(t){Ur(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Br(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ur(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(s){l=!0,o=s}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return qr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Hr(e,t){return Object.entries(e).reduce((function(e,n){var r=$r(n,2),o=r[0],a=r[1];return t({key:o,value:a})?zr(zr({},e),{},Ur({},o,a)):e}),{})}var Gr=["components"];function Qr(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Zr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Vr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zr(Object(n),!0).forEach((function(t){Wr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Wr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Kr(e){var t,n=function(){var e=[],t=[];function n(n){e.push(n);var r=n();t.push(r)}return{runEffect:n,cleanupEffects:function(){var e=t;t=[],e.forEach((function(e){e()}))},runEffects:function(){var t=e;e=[],t.forEach((function(e){n(e)}))}}}(),r=n.runEffect,o=n.cleanupEffects,a=n.runEffects,i=(t=[],{reactive:function(e){var n=e(),r={_fn:e,_ref:{current:n},get value(){return this._ref.current},set value(e){this._ref.current=e}};return t.push(r),r},runReactives:function(){t.forEach((function(e){e._ref.current=e._fn()}))}}),l=i.reactive,s=i.runReactives,u=qt(!1),c=qt(e),d=qt(void 0),f=l((function(){return function(e){var t,n=e.classNames,r=e.container,o=e.getEnvironmentProps,a=e.getFormProps,i=e.getInputProps,l=e.getItemProps,s=e.getLabelProps,u=e.getListProps,c=e.getPanelProps,d=e.getRootProps,f=e.panelContainer,p=e.panelPlacement,m=e.render,h=e.renderNoResults,g=e.renderer,v=e.detachedMediaQuery,b=e.components,y=e.translations,w=_r(e,wr),k="undefined"!=typeof window?window:{},E=br(k,r);E.tagName;var S=Er(Er({},Pr),g),_={Highlight:nr(S),ReverseHighlight:fr(S),ReverseSnippet:gr(S),Snippet:vr(S)};return{renderer:{classNames:yr(xr,null!=n?n:{}),container:E,getEnvironmentProps:null!=o?o:function(e){return e.props},getFormProps:null!=a?a:function(e){return e.props},getInputProps:null!=i?i:function(e){return e.props},getItemProps:null!=l?l:function(e){return e.props},getLabelProps:null!=s?s:function(e){return e.props},getListProps:null!=u?u:function(e){return e.props},getPanelProps:null!=c?c:function(e){return e.props},getRootProps:null!=d?d:function(e){return e.props},panelContainer:f?br(k,f):k.document.body,panelPlacement:null!=p?p:"input-wrapper-width",render:null!=m?m:Or,renderNoResults:h,renderer:S,detachedMediaQuery:null!=v?v:getComputedStyle(k.document.documentElement).getPropertyValue("--aa-detached-media-query"),components:Er(Er({},_),b),translations:Er(Er({},{clearButtonTitle:"Clear",detachedCancelButtonText:"Cancel",submitButtonTitle:"Submit"}),y)},core:Er(Er({},w),{},{id:null!==(t=w.id)&&void 0!==t?t:_e(),environment:k})}}(c.current)})),p=l((function(){return f.value.core.environment.matchMedia(f.value.renderer.detachedMediaQuery).matches})),m=l((function(){return $t(Vr(Vr({},f.value.core),{},{onStateChange:function(e){var t,n,r;u.current=e.state.collections.some((function(e){return e.source.templates.noResults})),null===(t=d.current)||void 0===t||t.call(d,e),null===(n=(r=f.value.core).onStateChange)||void 0===n||n.call(r,e)},shouldPanelOpen:c.current.shouldPanelOpen||function(e){var t=e.state;if(p.value)return!0;var n=Ee(t)>0;if(!f.value.core.openOnFocus&&!t.query)return n;var r=Boolean(u.current||f.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:Nr,options:e}}))})),h=qt(Vr({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},f.value.core.initialState)),g={getEnvironmentProps:f.value.renderer.getEnvironmentProps,getFormProps:f.value.renderer.getFormProps,getInputProps:f.value.renderer.getInputProps,getItemProps:f.value.renderer.getItemProps,getLabelProps:f.value.renderer.getLabelProps,getListProps:f.value.renderer.getListProps,getPanelProps:f.value.renderer.getPanelProps,getRootProps:f.value.renderer.getRootProps},v={setActiveItemId:m.value.setActiveItemId,setQuery:m.value.setQuery,setCollections:m.value.setCollections,setIsOpen:m.value.setIsOpen,setStatus:m.value.setStatus,setContext:m.value.setContext,refresh:m.value.refresh},b=l((function(){return Zt.bind(f.value.renderer.renderer.createElement)})),y=l((function(){return bn({autocomplete:m.value,autocompleteScopeApi:v,classNames:f.value.renderer.classNames,environment:f.value.core.environment,isDetached:p.value,placeholder:f.value.core.placeholder,propGetters:g,setIsModalOpen:S,state:h.current,translations:f.value.renderer.translations})}));function w(){nn(y.value.panel,{style:p.value?{}:Cr({panelPlacement:f.value.renderer.panelPlacement,container:y.value.root,form:y.value.form,environment:f.value.core.environment})})}function k(e){h.current=e;var t={autocomplete:m.value,autocompleteScopeApi:v,classNames:f.value.renderer.classNames,components:f.value.renderer.components,container:f.value.renderer.container,html:b.value,dom:y.value,panelContainer:p.value?y.value.detachedContainer:f.value.renderer.panelContainer,propGetters:g,state:h.current,renderer:f.value.renderer.renderer},n=!Ee(e)&&!u.current&&f.value.renderer.renderNoResults||f.value.renderer.render;!function(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.dom,o=e.propGetters,a=e.state;rn(r.root,o.getRootProps(Ar({state:a,props:t.getRootProps({})},n))),rn(r.input,o.getInputProps(Ar({state:a,props:t.getInputProps({inputElement:r.input}),inputElement:r.input},n))),nn(r.label,{hidden:"stalled"===a.status}),nn(r.loadingIndicator,{hidden:"stalled"!==a.status}),nn(r.clearButton,{hidden:!a.query})}(t),function(e,t){var n=t.autocomplete,r=t.autocompleteScopeApi,o=t.classNames,a=t.html,i=t.dom,l=t.panelContainer,s=t.propGetters,u=t.state,c=t.components,d=t.renderer;if(u.isOpen){l.contains(i.panel)||"loading"===u.status||l.appendChild(i.panel),i.panel.classList.toggle("aa-Panel--stalled","stalled"===u.status);var f=u.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var i=e.source,l=e.items;return d.createElement("section",{key:t,className:o.source,"data-autocomplete-source-id":i.sourceId},i.templates.header&&d.createElement("div",{className:o.sourceHeader},i.templates.header({components:c,createElement:d.createElement,Fragment:d.Fragment,items:l,source:i,state:u,html:a})),i.templates.noResults&&0===l.length?d.createElement("div",{className:o.sourceNoResults},i.templates.noResults({components:c,createElement:d.createElement,Fragment:d.Fragment,source:i,state:u,html:a})):d.createElement("ul",Tr({className:o.list},s.getListProps(Ar({state:u,props:n.getListProps({})},r))),l.map((function(e){var t=n.getItemProps({item:e,source:i});return d.createElement("li",Tr({key:t.id,className:o.item},s.getItemProps(Ar({state:u,props:t},r))),i.templates.item({components:c,createElement:d.createElement,Fragment:d.Fragment,item:e,state:u,html:a}))}))),i.templates.footer&&d.createElement("div",{className:o.sourceFooter},i.templates.footer({components:c,createElement:d.createElement,Fragment:d.Fragment,items:l,source:i,state:u,html:a})))})),p=d.createElement(d.Fragment,null,d.createElement("div",{className:o.panelLayout},f),d.createElement("div",{className:"aa-GradientBottom"})),m=f.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(Ar(Ar({children:p,state:u,sections:f,elements:m},d),{},{components:c,html:a},r),i.panel)}else l.contains(i.panel)&&l.removeChild(i.panel)}(n,t)}function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o();var t=f.value.renderer,n=t.components,r=Qr(t,Gr);c.current=Fr(r,f.value.core,{components:Hr(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:h.current},e),s(),a(),m.value.refresh().then((function(){k(h.current)}))}function S(e){requestAnimationFrame((function(){var t=f.value.core.environment.document.body.contains(y.value.detachedOverlay);e!==t&&(e?(f.value.core.environment.document.body.appendChild(y.value.detachedOverlay),f.value.core.environment.document.body.classList.add("aa-Detached"),y.value.input.focus()):(f.value.core.environment.document.body.removeChild(y.value.detachedOverlay),f.value.core.environment.document.body.classList.remove("aa-Detached"),m.value.setQuery(""),m.value.refresh()))}))}return r((function(){var e=m.value.getEnvironmentProps({formElement:y.value.form,panelElement:y.value.panel,inputElement:y.value.input});return nn(f.value.core.environment,e),function(){nn(f.value.core.environment,Object.keys(e).reduce((function(e,t){return Vr(Vr({},e),{},Wr({},t,void 0))}),{}))}})),r((function(){var e=p.value?f.value.core.environment.document.body:f.value.renderer.panelContainer,t=p.value?y.value.detachedOverlay:y.value.panel;return p.value&&h.current.isOpen&&S(!0),k(h.current),function(){e.contains(t)&&e.removeChild(t)}})),r((function(){var e=f.value.renderer.container;return e.appendChild(y.value.root),function(){e.removeChild(y.value.root)}})),r((function(){var e=Ht((function(e){k(e.state)}),0);return d.current=function(t){var n=t.state,r=t.prevState;(p.value&&r.isOpen!==n.isOpen&&S(n.isOpen),p.value||!n.isOpen||r.isOpen||w(),n.query!==r.query)&&f.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){d.current=void 0}})),r((function(){var e=Ht((function(){var e=p.value;p.value=f.value.core.environment.matchMedia(f.value.renderer.detachedMediaQuery).matches,e!==p.value?E({}):requestAnimationFrame(w)}),20);return f.value.core.environment.addEventListener("resize",e),function(){f.value.core.environment.removeEventListener("resize",e)}})),r((function(){if(!p.value)return function(){};function e(e){y.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=f.value.core.environment.matchMedia(getComputedStyle(f.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),r((function(){return requestAnimationFrame(w),function(){}})),Vr(Vr({},v),{},{update:E,destroy:function(){o()}})}var Yr=n(5742);const Xr=n(8965),Jr=Xr,eo=(n(8965),e=>Xr.tokenizer(e).map((e=>e.str))),to=Jr;var no=n(813),ro=n.n(no);function oo(){var e;const t=(0,c.TH)(),n=(0,c.k6)(),{siteConfig:{baseUrl:o}}=(0,ie.Z)(),[a,i]=(0,r.useState)({terms:[],isDocsOrBlog:!1});return(0,r.useEffect)((()=>{var e;if(null==(e=t.state)||!e.cmfcmfhighlight||0===t.state.cmfcmfhighlight.terms.length)return;i(t.state.cmfcmfhighlight);const{cmfcmfhighlight:r,...o}=t.state;n.replace({...t,state:o})}),[null==(e=t.state)?void 0:e.cmfcmfhighlight,n,t]),(0,r.useEffect)((()=>{if(0===a.terms.length)return;const e=a.isDocsOrBlog?document.getElementsByTagName("article")[0]:document.getElementsByTagName("main")[0];if(!e)return;const t=new(ro())(e),n={ignoreJoiners:!0};return t.mark(a.terms,n),()=>t.unmark(n)}),[a,o]),null}var ao=n(8084),io=n(3320);function lo(e){let{document:t}=e;const[n,r]=t.sectionRoute.split("#");let o=n;return r&&(o+="#"+r),o}const so={documents:[],index:to((function(){this.ref("id"),this.field("title"),this.field("content")}))};const uo=()=>{const e=(0,F.Z)(),[t,n]=(0,r.useState)((()=>!!e&&"dark"===document.documentElement.getAttribute("data-theme")));(0,r.useEffect)((()=>{const e=new MutationObserver((()=>{n("dark"===document.documentElement.getAttribute("data-theme"))}));return e.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>e.disconnect()}),[]);const{siteConfig:{baseUrl:o}}=(0,ie.Z)(),{titleBoost:a,contentBoost:i,tagsBoost:l,parentCategoriesBoost:s,indexDocSidebarParentCategories:d,maxSearchResults:f}=(0,ao.eZ)("@cmfcmf/docusaurus-search-local"),p=(0,c.k6)(),{tags:m}=(0,io._q)(),h=(0,r.useRef)(m);(0,r.useEffect)((()=>{h.current=m}),[m]);const g=(0,r.useRef)({}),v=async e=>{const t=g.current[e];switch(null==t?void 0:t.state){case"ready":return t;case void 0:{const t=[];g.current[e]={state:"loading",callbacks:t};const n=await async function(e,t){{let r;try{const n=await fetch(`${e}search-index-${t}.json`);if(!n.ok)return so;r=await n.json()}catch(n){return so}return{documents:r.documents,index:to.Index.load(r.index)}}}(o,e);return t.forEach((e=>e(n))),g.current[e]={state:"ready",...n}}case"loading":return new Promise((e=>{t.callbacks.push(e)}))}},b=(0,u.I)({message:"cmfcmf/d-s-l.searchBar.placeholder",description:"Placeholder shown in the searchbar"}),y=(0,r.useRef)(null),w=(0,r.useRef)(null);return(0,r.useEffect)((()=>{if(y.current)return w.current=Kr({container:y.current,placeholder:b,renderer:{createElement:r.createElement,Fragment:r.Fragment},render(e,t){let{children:n}=e;(0,me.render)(n,t)},navigator:{navigate(e){let{item:t,itemUrl:n}=e;p.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},detachedMediaQuery:"",defaultActiveItemId:0,translations:{clearButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.clearButtonTitle",description:"Title of the button to clear the current search input"}),detachedCancelButtonText:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.detachedCancelButtonText",description:"Text of the button to close the detached search window"}),submitButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.submitButtonTitle",description:"Title of the button to submit a new search"})},getSources(e){let{query:t}=e;return[{sourceId:"search-results",templates:{item(e){let{item:t}=e;const n=lo(t);return r.createElement("a",{href:n,className:"aa-ItemLink",onClick:e=>{e.preventDefault(),p.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},r.createElement("div",{className:"aa-ItemContentTitle"},t.document.sectionTitle),t.document.pageTitle!==t.document.sectionTitle&&r.createElement("div",{className:"aa-ItemContentDescription"},t.document.pageTitle))),r.createElement("div",{className:"aa-ItemActions"},r.createElement("button",{className:"aa-ItemActionButton aa-DesktopOnly aa-ActiveOnly",type:"button",title:"Select"},r.createElement("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor"},r.createElement("path",{d:"M18.984 6.984h2.016v6h-15.188l3.609 3.609-1.406 1.406-6-6 6-6 1.406 1.406-3.609 3.609h13.172v-4.031z"})))))},noResults:()=>r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},(0,u.I)({message:"cmfcmf/d-s-l.searchBar.noResults",description:"message shown if no results are found"})))},getItemUrl(e){let{item:t}=e;return lo(t)},async getItems(){const e=h.current,n=await Promise.all(e.map((e=>v(e)))),r=eo(t);return n.flatMap((e=>{let{index:t,documents:n}=e;return t.query((e=>{e.term(r,{fields:["title"],boost:a}),e.term(r,{fields:["title"],boost:a,wildcard:to.Query.wildcard.TRAILING}),e.term(r,{fields:["content"],boost:i}),e.term(r,{fields:["content"],boost:i,wildcard:to.Query.wildcard.TRAILING}),e.term(r,{fields:["tags"],boost:l}),e.term(r,{fields:["tags"],boost:l,wildcard:to.Query.wildcard.TRAILING}),d&&(e.term(r,{fields:["sidebarParentCategories"],boost:s}),e.term(r,{fields:["sidebarParentCategories"],boost:s,wildcard:to.Query.wildcard.TRAILING}))})).slice(0,f).map((e=>({document:n.find((t=>t.id.toString()===e.ref)),score:e.score,terms:r})))})).sort(((e,t)=>t.score-e.score)).slice(0,f)}}]}}),()=>{var e;return null==(e=w.current)?void 0:e.destroy()}}),[f]),r.createElement(r.Fragment,null,r.createElement(Yr.Z,null,r.createElement("body",{"data-theme":t?"dark":"light"})),r.createElement(oo,null),r.createElement("div",{className:"dsla-search-wrapper"},r.createElement("div",{className:"dsla-search-field",ref:y,"data-tags":m.join(",")})))},co="searchBox_ZlJk";function fo(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,o.Z)(n,co)},t)}var po=n(4104),mo=n(2802);var ho=n(373);const go=e=>e.docs.find((t=>t.id===e.mainDocId));const vo={default:re,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:o,...a}=e;const{i18n:{currentLocale:i,locales:l,localeConfigs:s}}=(0,ie.Z)(),c=(0,de.l)(),d=[...n,...l.map((e=>{const n=`pathname://${c.createUrl({locale:e,fullyQualified:!1})}`;return{label:s[e].label,lang:s[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...o],f=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):s[i].label;return r.createElement(ce,(0,v.Z)({},a,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(fe,{className:pe}),f),items:d}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(fo,{className:n},r.createElement(uo,null))},dropdown:ce,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,o.Z)({navbar__item:!a&&!i,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...a}=e;const{activeDoc:i}=(0,po.Iw)(o),l=(0,mo.vY)(t,o);return null===l?null:r.createElement(re,(0,v.Z)({exact:!0},a,{isActive:()=>(null==i?void 0:i.path)===l.path||!(null==i||!i.sidebar)&&i.sidebar===l.sidebar,label:n??l.id,to:l.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...a}=e;const{activeDoc:i}=(0,po.Iw)(o),l=(0,mo.oz)(t,o).link;if(!l)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(re,(0,v.Z)({exact:!0},a,{isActive:()=>(null==i?void 0:i.sidebar)===t,label:n??l.label,to:l.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...a}=e;const i=(0,mo.lO)(o)[0],l=t??i.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(re,(0,v.Z)({},a,{label:l,to:s}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:a,dropdownItemsAfter:i,...l}=e;const s=(0,po.Iw)(n),c=(0,po.gB)(n),{savePreferredVersionName:d}=(0,ho.J)(n),f=c.map((e=>{const t=s.alternateDocVersions[e.name]??go(e);return{label:e.label,to:t.path,isActive:()=>e===s.activeVersion,onClick:()=>d(e.name)}})),p=[...a,...f,...i],m=(0,mo.lO)(n)[0],h=t&&p.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,g=t&&p.length>1?void 0:go(m).path;return p.length<=1?r.createElement(re,(0,v.Z)({},l,{mobile:t,label:h,to:g,isActive:o?()=>!1:void 0})):r.createElement(ce,(0,v.Z)({},l,{mobile:t,label:h,to:g,items:p,isActive:o?()=>!1:void 0}))}},bo=vo;function yo(e){let{type:t,...n}=e;const o=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=bo[o];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(a,n)}function wo(){const e=(0,C.e)(),t=(0,h.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(yo,(0,v.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function ko(e){return r.createElement("button",(0,v.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Eo(){const e=0===(0,h.L)().navbar.items.length,t=D();return r.createElement(r.Fragment,null,!e&&r.createElement(ko,{onClick:()=>t.hide()}),t.content)}function So(){const e=(0,C.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(j,{header:r.createElement(V,null),primaryMenu:r.createElement(wo,null),secondaryMenu:r.createElement(Eo,null)}):null}const _o="navbarHideable_m1mJ",xo="navbarHidden_jGov";function Oo(e){return r.createElement("div",(0,v.Z)({role:"presentation"},e,{className:(0,o.Z)("navbar-sidebar__backdrop",e.className)}))}function Po(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,h.L)(),i=(0,C.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,T.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(o.current)return void(o.current=!1);const l=null==r?void 0:r.scrollY,s=document.documentElement.scrollHeight-a.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,d.S)((t=>{if(e)return t.location.hash?(o.current=!0,void n(!1)):void n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,className:(0,o.Z)("navbar","navbar--fixed-top",n&&[_o,!s&&xo],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown})},t,r.createElement(Oo,{onClick:i.toggle}),r.createElement(So,null))}function Co(e){let{width:t=30,height:n=30,className:o,...a}=e;return r.createElement("svg",(0,v.Z)({className:o,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},a),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function To(){const e=(0,C.e)();return r.createElement("button",{onClick:e.toggle,onKeyDown:e.toggle,"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0},r.createElement(Co,null))}const Io="colorModeToggle_DEke";function Ao(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(yo,(0,v.Z)({},e,{key:t})))))}function Lo(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function No(){const e=(0,C.e)(),t=(0,h.L)().navbar.items,[n,o]=function(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return r.createElement(Lo,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(To,null),r.createElement(Q,null),r.createElement(Ao,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ao,{items:o}),r.createElement(H,{className:Io}),!a&&r.createElement(fo,null,r.createElement(uo,null)))})}function Ro(){return r.createElement(Po,null,r.createElement(No,null))}function Do(e){let{item:t}=e;const{to:n,href:o,label:a,prependBaseUrlToHref:i,...l}=t,s=(0,K.Z)(n),u=(0,K.Z)(o,{forcePrependBaseUrl:!0});return r.createElement(W.Z,(0,v.Z)({className:"footer__link-item"},o?{href:i?u:o}:{to:s},l),a,o&&!(0,Y.Z)(o)&&r.createElement(J.Z,null))}function jo(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(Do,{item:t}))}function Mo(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(jo,{key:t,item:e})))))}function Fo(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Mo,{key:t,column:e}))))}function Bo(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function zo(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Do,{item:t})}function Uo(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(zo,{item:e}),t.length!==n+1&&r.createElement(Bo,null))))))}function $o(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Fo,{columns:t}):r.createElement(Uo,{links:t})}var qo=n(941);const Ho="footerLogoLink_BH7S";function Go(e){let{logo:t}=e;const{withBaseUrl:n}=(0,K.C)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(qo.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function Qo(e){let{logo:t}=e;return t.href?r.createElement(W.Z,{href:t.href,className:Ho,target:t.target},r.createElement(Go,{logo:t})):r.createElement(Go,{logo:t})}function Zo(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Vo(e){let{style:t,links:n,logo:a,copyright:i}=e;return r.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(a||i)&&r.createElement("div",{className:"footer__bottom text--center"},a&&r.createElement("div",{className:"margin-bottom--sm"},a),i)))}function Wo(){const{footer:e}=(0,h.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:a}=e;return r.createElement(Vo,{style:a,links:n&&n.length>0&&r.createElement($o,{links:n}),logo:o&&r.createElement(Qo,{logo:o}),copyright:t&&r.createElement(Zo,{copyright:t})})}const Ko=r.memo(Wo);var Yo=n(12);const Xo="docusaurus.tab.",Jo=r.createContext(void 0);const ea=(0,I.Qc)([M.S,g.pl,function(e){let{children:t}=e;const n=function(){const[e,t]=(0,r.useState)({}),n=(0,r.useCallback)(((e,t)=>{(0,Yo.W)(`docusaurus.tab.${e}`).set(t)}),[]);(0,r.useEffect)((()=>{try{const e={};(0,Yo._)().forEach((t=>{if(t.startsWith(Xo)){const n=t.substring(Xo.length);e[n]=(0,Yo.W)(t).get()}})),t(e)}catch(e){console.error(e)}}),[]);const o=(0,r.useCallback)(((e,r)=>{t((t=>({...t,[e]:r}))),n(e,r)}),[n]);return(0,r.useMemo)((()=>({tabGroupChoices:e,setTabGroupChoices:o})),[e,o])}();return r.createElement(Jo.Provider,{value:n},t)},T.OC,ho.L5,i.VC,function(e){let{children:t}=e;return r.createElement(A.n2,null,r.createElement(C.M,null,r.createElement(N,null,t)))}]);function ta(e){let{children:t}=e;return r.createElement(ea,null,t)}function na(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const ra="mainWrapper_z2l0";function oa(e){const{children:t,noFooter:n,wrapperClassName:u,title:c,description:d}=e;return(0,s.t)(),r.createElement(ta,null,r.createElement(i.d,{title:c,description:d}),r.createElement(m,null),r.createElement(P,null),r.createElement(Ro,null),r.createElement("div",{className:(0,o.Z)(l.k.wrapper.main,ra,u)},r.createElement(a.Z,{fallback:e=>r.createElement(na,e)},t)),!n&&r.createElement(Ko,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),o=n(7294),a=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=o.createElement(u.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?o.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)((null==u?void 0:u.href)||"/"),h=n?"":t,g=(null==u?void 0:u.alt)??h;return o.createElement(a.Z,(0,r.Z)({to:m},p,(null==u?void 0:u.target)&&{target:u.target}),u&&o.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&o.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(5742);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return r.createElement(o.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),o=n(7294),a=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,p.map((e=>o.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,a.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,z:()=>m});var r=n(7462),o=n(7294),a=n(412);function i(e){let{initialState:t}=e;const[n,r]=(0,o.useState)(t??!1),a=(0,o.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const l={display:"none",overflow:"hidden",height:"0px"},s={display:"block",overflow:"visible",height:"auto"};function u(e,t){const n=t?l:s;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function c(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,o.useRef)(!1);(0,o.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=(null==r?void 0:r.duration)??function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${(null==r?void 0:r.easing)??"ease-in-out"}`,height:`${t}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return u(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function d(e){if(!a.Z.canUseDOM)return e?l:s}function f(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const f=(0,o.useRef)(null);return c({collapsibleRef:f,collapsed:n,animation:a}),o.createElement(t,{ref:f,style:s?void 0:d(n),onTransitionEnd:e=>{"height"===e.propertyName&&(u(f.current,n),null==i||i(n))},className:l},r)}function p(e){let{collapsed:t,...n}=e;const[a,i]=(0,o.useState)(!t),[l,s]=(0,o.useState)(t);return(0,o.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,o.useLayoutEffect)((()=>{a&&s(t)}),[a,t]),a?o.createElement(f,(0,r.Z)({},n,{collapsed:l})):null}function m(e){let{lazy:t,...n}=e;const r=t?p:f;return o.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),o=n(2389),a=n(12),i=n(902),l=n(6668);const s=(0,a.W)("docusaurus.announcement.dismiss"),u=(0,a.W)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{a(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),o=n(412),a=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.W)(u),d="light",f="dark",p=e=>e===f?f:d;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,i]=(0,r.useState)((e=>o.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e))(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const s=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(i(t),o&&(e=>{c.set(p(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f:d:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&s(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,s]);const m=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||m.current?m.current=window.matchMedia("print").matches:s(null)};return e.addListener(r),()=>e.removeListener(r)}),[s,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:s,get isDarkTheme(){return a===f},setLightTheme(){s(d)},setDarkTheme(){s(f)}})),[a,s])}function h(e){let{children:t}=e;const n=m();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>v,Oh:()=>w});var r=n(7294),o=n(4104),a=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,u.W)(c(e),{persistence:t}).set(n)},f=(e,t)=>(0,u.W)(c(e),{persistence:t}).get(),p=(e,t)=>{(0,u.W)(c(e),{persistence:t}).del()};const m=r.createContext(null);function h(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>(e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}]))))(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=f(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return r.createElement(m.Provider,{value:n},t)}function v(e){let{children:t}=e;return l.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,o._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:o}=t[n];return r.versions.find((e=>e.name===o))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),o=n(902);const a=Symbol("EmptyContext"),i=r.createContext(a);function l(e){let{children:t,name:n,items:o}=e;const a=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return r.createElement(i.Provider,{value:a},t)}function s(){const e=(0,r.useContext)(i);if(e===a)throw new o.i6("DocsSidebarProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),o=n(3102),a=n(7524),i=n(6775),l=n(902);function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),o=n(902);const a=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(a.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(a);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(a);if(!i)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,o.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),o=n(412);const a="desktop",i="mobile",l="ssr";function s(){return o.Z.canUseDOM?window.innerWidth>996?a:i:l}function u(){const[e,t]=(0,r.useState)((()=>s()));return(0,r.useEffect)((()=>{function e(){t(s())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},2802:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>f,_F:()=>m,cE:()=>d,hI:()=>w,lO:()=>v,vY:()=>y,oz:()=>b,s1:()=>g});var r=n(7294),o=n(6775),a=n(8790),i=n(4104),l=n(373),s=n(1116);function u(e){return Array.from(new Set(e))}var c=n(8596);const d=!!i._r;function f(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=f(t);if(e)return e}}}const p=(e,t)=>void 0!==e&&(0,c.Mg)(e,t);function m(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||((e,t)=>e.some((e=>m(e,t))))(e.items,t))}function h(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,c.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,c.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function g(){var e;const t=(0,s.V)(),{pathname:n}=(0,o.TH)();return!1!==(null==(e=(0,i.gA)())?void 0:e.pluginData.breadcrumbs)&&t?h({sidebarItems:t.items,pathname:n}):null}function v(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function b(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\n Available sidebar ids are:\n - ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function y(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`DocNavbarItem: couldn't find any doc with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function w(e){let{route:t,versionMetadata:n}=e;const r=(0,o.TH)(),i=t.routes,l=i.find((e=>(0,o.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,a.H)(i),sidebarName:s,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),o=n(6010),a=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:o,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return null!=e&&e.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(a.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),o&&r.createElement("meta",{name:"keywords",content:Array.isArray(o)?o.join(","):o}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,o.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(a.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),a=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,o.Z)(a,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>a});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function a(e){const t=(0,r.useRef)(e);return o((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return o((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r,o;super(),this.name="ReactContextError",this.message=`Hook ${(null==(n=this.stack)||null==(r=n.split("\n")[1])||null==(o=r.match(/at (?:\w+\.)?(?<name>\w+)/))?void 0:o.groups.name)??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>{var t;return null==(t=!e||e.endsWith("/")?e:`${e}/`)?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),o=n(412),a=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(c()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&o<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(o-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>null==e.current?void 0:e.current()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(4104),o=n(2263),a=n(373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,o.Z)(),t=(0,r._r)(),n=(0,r.WS)(),s=(0,a.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=(null==n?void 0:n.activePlugin.pluginId)===e?n.activeVersion:void 0,o=s[e],a=t[e].versions.find((e=>e.isLast));return l(e,(r??o??a).name)}))];return{locale:e.currentLocale,tags:u}}},12:(e,t,n)=>{"use strict";n.d(t,{W:()=>l,_:()=>s});const r="localStorage";function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,a||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),a=!0),null}var t}let a=!1;const i={get:()=>null,set:()=>{},del:()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t}}(e);const n=o(null==t?void 0:t.persistence);return null===n?i:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{n.setItem(e,t)}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{n.removeItem(e)}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}}}}function s(e){void 0===e&&(e=r);const t=o(e);if(!t)return[];const n=[];for(let r=0;r<t.length;r+=1){const e=t.key(r);null!==e&&n.push(e)}return n}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>a});var r=n(2263),o=n(6775);function a(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:a}}=(0,r.Z)(),{pathname:i}=(0,o.TH)(),l=a===n?e:e.replace(`/${a}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:o}=e;return`${o?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6775),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}})},2198:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(412);let o=!0;function a(){const e=window.start||new Date,t=(new Date).getTime()-e.getTime();return 0===t?null:t}const i=r.Z.canUseDOM?{onRouteUpdate(e){let{location:t,prevLocation:n}=e;{if(!window._paq)return;const{_paq:e,dev:r}=window,i=t&&t.pathname+t.search+t.hash,l=n&&n.pathname+n.search+n.hash,s=()=>{const{title:t}=document;l&&e.push(["setReferrerUrl",l]),e.push(["setCustomUrl",i]),e.push(["setDocumentTitle",t]),e.push(["trackPageView"]),e.push(["enableLinkTracking"]),e.push(["trackAllContentImpressions"]),r&&console.debug(`[Matomo] Page view for: ${i} - ${t}`)},u=Math.max(32,0);setTimeout(s,u),o&&(o=!1,e.push(["trackEvent","javascript","load","duration",a()]),r&&console.debug(`[Matomo] Tracking duration for: ${i}`))}return null}}:null},6010:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}n.d(t,{Z:()=>o});const o=function(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>O,ob:()=>p,PP:()=>C,Ep:()=>f});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&o(e),s=t&&o(t),u=l||s;if(e&&o(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?a(i,f):".."===p?(a(i,f),d++):d&&(a(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(2177);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function p(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var v="popstate",b="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,_=void 0===S?6:S,x=e.basename?d(s(e.basename)):"";function O(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return x&&(a=c(a,x)),p(a,r,n)}function P(){return Math.random().toString(36).substr(2,_)}var C=m();function T(e){(0,r.Z)(U,e),U.length=n.length,C.notifyListeners(U.location,U.action)}function I(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||N(O(e.state))}function A(){N(O(y()))}var L=!1;function N(e){if(L)L=!1,T();else{C.confirmTransitionTo(e,"POP",E,(function(t){t?T({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(L=!0,M(o))}(e)}))}}var R=O(y()),D=[R.key];function j(e){return x+f(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(v,I),a&&window.addEventListener(b,A)):0===F&&(window.removeEventListener(v,I),a&&window.removeEventListener(b,A))}var z=!1;var U={length:n.length,action:"POP",location:R,createHref:j,push:function(e,t){var r="PUSH",a=p(e,t,P(),U.location);C.confirmTransitionTo(a,r,E,(function(e){if(e){var t=j(a),i=a.key,l=a.state;if(o)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf(U.location.key),u=D.slice(0,s+1);u.push(a.key),D=u,T({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,P(),U.location);C.confirmTransitionTo(a,r,E,(function(e){if(e){var t=j(a),i=a.key,l=a.state;if(o)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf(U.location.key);-1!==s&&(D[s]=a.key),T({action:r,location:a})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=C.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=C.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function _(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function x(e){window.location.replace(S(window.location.href)+"#"+e)}function O(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?g:o,i=n.hashType,u=void 0===i?"slash":i,v=e.basename?d(s(e.basename)):"",b=E[u],y=b.encodePath,w=b.decodePath;function O(){var e=w(_());return v&&(e=c(e,v)),p(e)}var P=m();function C(e){(0,r.Z)(z,e),z.length=t.length,P.notifyListeners(z.location,z.action)}var T=!1,I=null;function A(){var e,t,n=_(),r=y(n);if(n!==r)x(r);else{var o=O(),i=z.location;if(!T&&(t=o,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(I===f(o))return;I=null,function(e){if(T)T=!1,C();else{var t="POP";P.confirmTransitionTo(e,t,a,(function(n){n?C({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(f(t));-1===n&&(n=0);var r=D.lastIndexOf(f(e));-1===r&&(r=0);var o=n-r;o&&(T=!0,j(o))}(e)}))}}(o)}}var L=_(),N=y(L);L!==N&&x(N);var R=O(),D=[f(R)];function j(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(k,A):0===M&&window.removeEventListener(k,A)}var B=!1;var z={length:t.length,action:"POP",location:R,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(v+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=f(r),o=y(v+t);if(_()!==o){I=t,function(e){window.location.hash=e}(o);var a=D.lastIndexOf(f(z.location)),i=D.slice(0,a+1);i.push(t),D=i,C({action:n,location:r})}else C()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=f(r),o=y(v+t);_()!==o&&(I=t,x(o));var a=D.indexOf(f(z.location));-1!==a&&(D[a]=t),C({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=P.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=P.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function C(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=P(l,0,a.length-1),v=a.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),b=f;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[g],index:g,entries:v,createHref:b,push:function(e,t){var r="PUSH",o=p(e,t,h(),w.location);c.confirmTransitionTo(o,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,h(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=p(n);o&&o!==m&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var v=i[g];if(!(a[v]||r&&r[v]||h&&h[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},813:function(e){e.exports=function(){"use strict";var e="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},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=o,this.iframesTimeout=a}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var o=e.contentWindow;if(r=o.document,!o||!r)throw new Error("iframe inaccessible")}catch(a){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,o=!1,a=null,i=function i(){if(!o){o=!0,clearTimeout(a);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var o=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&a(s)};l||u(),i.forEach((function(t){e.matches(t,o.exclude)?u():o.onIframeReady(t,(function(e){n(t)&&(s++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var o=!1,a=!1;return r.forEach((function(e,t){e.val===n&&(o=t,a=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==o||a?!1===o||a||(r[o].handled=!0):r.push({val:n,handled:!0}),!0):(!1===o&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var o=this;e.forEach((function(e){e.handled||o.getIframeContents(e.val,(function(e){o.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,o){for(var a=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=a.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return a.checkIframeFilter(u,c,e,l)}),(function(t){a.createInstanceOnIframe(t).forEachNode(e,(function(e){return s.push(e)}),r)})),s.push(u);s.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(l,e,n,r),o()}},{key:"forEachNode",value:function(e,t,n){var r=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=this.getContexts(),i=a.length;i||o(),a.forEach((function(a){var l=function(){r.iterateThroughNodes(e,a,t,n,(function(){--i<=0&&o()}))};r.iframes?r.waitForIframes(a,l):l()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var o=!1;return n.every((function(t){return!r.call(e,t)||(o=!0,!1)})),o}return!1}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var o in t)if(t.hasOwnProperty(o)){var a=t[o],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=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"],r=[];return e.split("").forEach((function(o){n.every((function(n){if(-1!==n.indexOf(o)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,o="string"==typeof r?r:r.value,a="string"==typeof r?[]:r.limiters,i="";switch(a.forEach((function(e){i+="|"+t.escapeStr(e)})),o){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var o=t.callNoMatchOnInvalidRanges(e,r),a=o.start,i=o.end;o.valid&&(e.start=a,e.length=i-a,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,o=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?o=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:o}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,o=!0,a=n.length,i=t-a,l=parseInt(e.start,10)-i;return(r=(l=l>a?a:l)+parseInt(e.length,10))>a&&(r=a,this.log("End range automatically set to the max value of "+a)),l<0||r-l<0||l>a||r>a?(o=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(o=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:o}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return o.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",o=e.splitText(t),a=o.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=o.textContent,o.parentNode.replaceChild(i,o),a}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,o){var a=this;e.nodes.every((function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),f=e.value.substr(c+i.start);if(i.node=a.wrapRangeInTextNode(i.node,u,c),e.value=d+f,e.nodes.forEach((function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,o(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,o){var a=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var o=void 0;null!==(o=e.exec(t.textContent))&&""!==o[i];)if(n(o[i],t)){var l=o.index;if(0!==i)for(var s=1;s<i;s++)l+=o[s].length;t=a.wrapRangeInTextNode(t,l,l+o[i].length),r(t.previousSibling),e.lastIndex=0}})),o()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,o){var a=this,i=0===t?0:t+1;this.getTextNodes((function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;a.wrapRangeInMappedTextNode(t,s,c,(function(e){return n(l[i],e)}),(function(t,n){e.lastIndex=n,r(t)}))}o()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var o=this;this.getTextNodes((function(a){var i=a.value.length;e.forEach((function(e,r){var l=o.checkWhitespaceRanges(e,i,a.value),s=l.start,u=l.end;l.valid&&o.wrapRangeInMappedTextNode(a,s,u,(function(n){return t(n,e,a.value.substring(s,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,o="wrapMatches",a=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(o="wrapMatchesAcrossElements"),this[o](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),a,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,o="wrapMatches",a=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=a.keywords,l=a.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var a=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+a+'"'),n[o](a,1,(function(e,o){return n.opt.filter(o,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])}))};this.opt.acrossElements&&(o="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,o=this.checkRanges(e);o&&o.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(o)),this.wrapRangeFromIndex(o,(function(e,t,r,o){return n.opt.filter(e,t,r,o)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=o.matches(e,n),a=t.matchesExclude(e);return!r||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new o(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),a}();function i(e){var t=this,n=new a(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,a){for(var i,l,s=o(e),u=1;u<arguments.length;u++){for(var c in i=Object(arguments[u]))n.call(i,c)&&(s[c]=i[c]);if(t){l=t(i);for(var d=0;d<l.length;d++)r.call(i,l[d])&&(s[l[d]]=i[l[d]])}}return s}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var i in o={},n[a]=o,t)t.hasOwnProperty(i)&&(o[i]=e(t[i],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach((function(t,r){o[r]=e(t,n)})),o);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var o=e.classList;if(o.contains(t))return!0;if(o.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],i={};for(var l in a)if(a.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=a[l])}var u=o[e];return o[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,o,a){a=a||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],o||l);var s=t[l],u=r.util.type(s);"Object"!==u||a[i(s)]?"Array"!==u||a[i(s)]||(a[i(s)]=!0,e(s,n,l,a)):(a[i(s)]=!0,e(s,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",a),a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new l;return s(o,o.head,e),i(e,o,t,o.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,v=!!h.lookbehind,b=!!h.greedy,y=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var _=E.value;if(t.length>e.length)return;if(!(_ instanceof o)){var x,O=1;if(b){if(!(x=a(k,S,e,v))||x.index>=e.length)break;var P=x.index,C=x.index+x[0].length,T=S;for(T+=E.value.length;P>=T;)T+=(E=E.next).value.length;if(S=T-=E.value.length,E.value instanceof o)continue;for(var I=E;I!==t.tail&&(T<C||"string"==typeof I.value);I=I.next)O++,T+=I.value.length;O--,_=e.slice(S,T),x.index-=S}else if(!(x=a(k,0,_,v)))continue;P=x.index;var A=x[0],L=_.slice(0,P),N=_.slice(P+A.length),R=S+_.length;d&&R>d.reach&&(d.reach=R);var D=E.prev;if(L&&(D=s(t,D,L),S+=L.length),u(t,D,O),E=s(t,D,new o(f,g?r.tokenize(A,g):A,y,A)),N&&s(t,E,N),O>1){var j={cause:f+","+m,reach:R};i(e,t,n,E.prev,S,j),d&&j.reach>d.reach&&(d.reach=j.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function u(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach((function(t){o+=e(t,n)})),o}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(a.classes,i):a.classes.push(i)),r.hooks.run("wrap",a);var l="";for(var s in a.attributes)l+=" "+s+'="'+(a.attributes[s]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+l+">"+a.content+"</"+a.tag+">"},r}(),o=r;r.default=r,o.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\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:/<!\[CDATA\[[\s\S]*?\]\]>/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]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:o.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:o.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},o.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(e,t){o.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:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,function(e){var t="\\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},r={bash:n,environment:{pattern:RegExp("\\$"+t),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("(\\{)"+t),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;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{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:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.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 o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,i=0;i<o.length;i++)a[o[i]]=e.languages.bash[o[i]];e.languages.shell=e.languages.bash}(o),o.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.c=o.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|[?:~]|[-+*/%&|^!=<>]=?/}),o.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),o.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},o.languages.c.string],char:o.languages.c.char,comment:o.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:o.languages.c}}}}),o.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 o.languages.c.boolean,function(e){var t=/\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(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.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:t,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+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/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"])}(o),function(e){var t=/(?:"(?:\\(?:\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\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,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"))}(o),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"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=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={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:r,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:o})}(o),o.languages.javascript=o.languages.extend("clike",{"class-name":[o.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}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.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:o.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:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.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:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.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:o.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"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.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")),o.languages.js=o.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,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:t,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}(o),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\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:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(o),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \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("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),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__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\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(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.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(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o=t[n];if("code"===o.type){var a=o.content[1],i=o.content[3];if(a&&i&&"code-language"===a.type&&"code-block"===i.type&&"string"==typeof a.content){var l=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(o.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r],u=/language-(.+)/.exec(a);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(o),o.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:o.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+/},o.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var o=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var a=f(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),o.push(i.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),o.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&o.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var o=1,a=n;a<t.length;a++){var i=t[a],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))o++;else if(r.test(l)&&0===--o)return a}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),o.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var o={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function u(t){var n={};n["interpolation-punctuation"]=o;var a=e.tokenize(t,n);if(3===a.length){var i=[1,1];i.push.apply(i,s(a[1],e.languages.javascript,"javascript")),a.splice.apply(a,i)}return new e.Token("interpolation",a,r.alias,t)}function c(t,n,r){var o=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),i=0,c={},d=s(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=o,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var o=f[i],a="string"==typeof r?r:r.content,l=a.indexOf(o);if(-1!==l){++i;var s=a.substring(0,l),d=u(c[o]),p=a.substring(l+o.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,o=n.length;r<o;r++){var a=n[r];if("string"!=typeof a){var i=a.content;if(Array.isArray(i))if("template-string"===a.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(o),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,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 t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,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:t}}}}),e.languages.ts=e.languages.typescript}(o),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}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:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\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:t(/(\.\s*)#?<ID>/.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"],r=0;r<n.length;r++){var o=n[r],a=e.languages.javascript[o];"RegExp"===e.util.type(a)&&(a=e.languages.javascript[o]={pattern:a});var i=a.inside||{};a.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(o),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return o})),RegExp(e,t)}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<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=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var o=t[r],a=!1;if("string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"===o.content[o.content.length-1].content||n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(o);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}o.content&&"string"!=typeof o.content&&l(o.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(o),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,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:t})}(o),o.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},o.languages.go=o.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/}),o.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete o.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(o>=a.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++o;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(o),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(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(o),o.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"}},o.languages.webmanifest=o.languages.json,o.languages.less=o.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:/[+\-*\/]/}),o.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),o.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:/[:;(){}]/},o.languages.objectivec=o.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 o.languages.objectivec["class-name"],o.languages.objc=o.languages.objectivec,o.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/},o.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:/[{}[\];(),.:]/},o.languages.python["string-interpolation"].inside.interpolation.inside.rest=o.languages.python,o.languages.py=o.languages.python,o.languages.reason=o.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/}),o.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 o.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 t=/\$[-\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:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,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}})}(o),o.languages.scss=o.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]+\}/}}}),o.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}]}),o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.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}}),o.languages.scss.atrule.inside.rest=o.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"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:r.interpolation}},rest:r}},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:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(o),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),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}(o),o.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:/[()]/};const a=o},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},6500:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,a){if(!(r in n)){a.push(r);var i=a.indexOf(r);if(i<a.length-1)throw new Error("Circular dependency: "+a.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;o(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var o,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)o=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));a?o=a(f,(function(){return r(e)})):r(e)}return l[e]=o}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(7418),a=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var o=v.hasOwnProperty(t)?v[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,_=60107,x=60108,O=60114,P=60109,C=60110,T=60112,I=60113,A=60120,L=60115,N=60116,R=60121,D=60128,j=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;E=B("react.element"),S=B("react.portal"),_=B("react.fragment"),x=B("react.strict_mode"),O=B("react.profiler"),P=B("react.provider"),C=B("react.context"),T=B("react.forward_ref"),I=B("react.suspense"),A=B("react.suspense_list"),L=B("react.memo"),N=B("react.lazy"),R=B("react.block"),B("react.scope"),D=B("react.opaque.id"),j=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var o=s.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,l=a.length-1;1<=i&&0<=l&&o[i]!==a[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==a[l]){if(1!==i||1!==l)do{if(i--,0>--l||o[i]!==a[l])return"\n"+o[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Q(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function Z(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case _:return"Fragment";case S:return"Portal";case O:return"Profiler";case x:return"StrictMode";case I:return"Suspense";case A:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case C:return(e.displayName||"Context")+".Consumer";case P:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case L:return Z(e.type);case R:return Z(e._render);case N:t=e._payload,e=e._init;try{return Z(e(t))}catch(n){}}return null}function V(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Y(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=V(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=V(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?oe(e,t.type,n):t.hasOwnProperty("defaultValue")&&oe(e,t.type,V(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function oe(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function ae(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+V(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:V(n)}}function ue(e,t){var n=V(t.value),r=V(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de="http://www.w3.org/1999/xhtml",fe="http://www.w3.org/2000/svg";function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function me(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,ge,ve=(ge=function(e,t){if(e.namespaceURI!==fe||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ye={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},we=["Webkit","ms","Moz","O"];function ke(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ye.hasOwnProperty(e)&&ye[e]?(""+t).trim():t+"px"}function Ee(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ke(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(ye).forEach((function(e){we.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ye[t]=ye[e]}))}));var Se=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(Se[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Oe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Pe=null,Ce=null,Te=null;function Ie(e){if(e=ro(e)){if("function"!=typeof Pe)throw Error(i(280));var t=e.stateNode;t&&(t=ao(t),Pe(e.stateNode,e.type,t))}}function Ae(e){Ce?Te?Te.push(e):Te=[e]:Ce=e}function Le(){if(Ce){var e=Ce,t=Te;if(Te=Ce=null,Ie(e),t)for(e=0;e<t.length;e++)Ie(t[e])}}function Ne(e,t){return e(t)}function Re(e,t,n,r,o){return e(t,n,r,o)}function De(){}var je=Ne,Me=!1,Fe=!1;function Be(){null===Ce&&null===Te||(De(),Le())}function ze(e,t){var n=e.stateNode;if(null===n)return null;var r=ao(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var Ue=!1;if(d)try{var $e={};Object.defineProperty($e,"passive",{get:function(){Ue=!0}}),window.addEventListener("test",$e,$e),window.removeEventListener("test",$e,$e)}catch(ge){Ue=!1}function qe(e,t,n,r,o,a,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var He=!1,Ge=null,Qe=!1,Ze=null,Ve={onError:function(e){He=!0,Ge=e}};function We(e,t,n,r,o,a,i,l,s){He=!1,Ge=null,qe.apply(Ve,arguments)}function Ke(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Xe(e){if(Ke(e)!==e)throw Error(i(188))}function Je(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ke(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var a=o.alternate;if(null===a){if(null!==(r=o.return)){n=r;continue}break}if(o.child===a.child){for(a=o.child;a;){if(a===n)return Xe(o),e;if(a===r)return Xe(o),t;a=a.sibling}throw Error(i(188))}if(n.return!==r.return)n=o,r=a;else{for(var l=!1,s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l){for(s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function et(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var tt,nt,rt,ot,at=!1,it=[],lt=null,st=null,ut=null,ct=new Map,dt=new Map,ft=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function mt(e,t,n,r,o){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:o,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":lt=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":ut=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":dt.delete(t.pointerId)}}function gt(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e=mt(t,n,r,o,a),null!==t&&(null!==(t=ro(t))&&nt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function vt(e){var t=no(e.target);if(null!==t){var n=Ke(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void ot(e.lanePriority,(function(){a.unstable_runWithPriority(e.priority,(function(){rt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ro(n))&&nt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){bt(e)&&n.delete(t)}function wt(){for(at=!1;0<it.length;){var e=it[0];if(null!==e.blockedOn){null!==(e=ro(e.blockedOn))&&tt(e);break}for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&it.shift()}null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),null!==ut&&bt(ut)&&(ut=null),ct.forEach(yt),dt.forEach(yt)}function kt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,wt)))}function Et(e){function t(t){return kt(t,e)}if(0<it.length){kt(it[0],e);for(var n=1;n<it.length;n++){var r=it[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==lt&&kt(lt,e),null!==st&&kt(st,e),null!==ut&&kt(ut,e),ct.forEach(t),dt.forEach(t),n=0;n<ft.length;n++)(r=ft[n]).blockedOn===e&&(r.blockedOn=null);for(;0<ft.length&&null===(n=ft[0]).blockedOn;)vt(n),null===n.blockedOn&&ft.shift()}function St(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},xt={},Ot={};function Pt(e){if(xt[e])return xt[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ot)return xt[e]=n[t];return e}d&&(Ot=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Ct=Pt("animationend"),Tt=Pt("animationiteration"),It=Pt("animationstart"),At=Pt("transitionend"),Lt=new Map,Nt=new Map,Rt=["abort","abort",Ct,"animationEnd",Tt,"animationIteration",It,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",At,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],o=e[n+1];o="on"+(o[0].toUpperCase()+o.slice(1)),Nt.set(r,t),Lt.set(r,o),u(o,[r])}}(0,a.unstable_now)();var jt=8;function Mt(e){if(0!=(1&e))return jt=15,1;if(0!=(2&e))return jt=14,2;if(0!=(4&e))return jt=13,4;var t=24&e;return 0!==t?(jt=12,t):0!=(32&e)?(jt=11,32):0!==(t=192&e)?(jt=10,t):0!=(256&e)?(jt=9,256):0!==(t=3584&e)?(jt=8,t):0!=(4096&e)?(jt=7,4096):0!==(t=4186112&e)?(jt=6,t):0!==(t=62914560&e)?(jt=5,t):67108864&e?(jt=4,67108864):0!=(134217728&e)?(jt=3,134217728):0!==(t=805306368&e)?(jt=2,t):0!=(1073741824&e)?(jt=1,1073741824):(jt=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return jt=0;var r=0,o=0,a=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==a)r=a,o=jt=15;else if(0!==(a=134217727&n)){var s=a&~i;0!==s?(r=Mt(s),o=jt):0!==(l&=a)&&(r=Mt(l),o=jt)}else 0!==(a=n&~i)?(r=Mt(a),o=jt):0!==l&&(r=Mt(l),o=jt);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),o<=jt)return t;jt=o}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-Ht(t)),r|=e[n],t&=~o;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function zt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=Ut(24&~t))?zt(10,t):e;case 10:return 0===(e=Ut(192&~t))?zt(8,t):e;case 8:return 0===(e=Ut(3584&~t))&&(0===(e=Ut(4186112&~t))&&(e=512)),e;case 2:return 0===(t=Ut(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function Ut(e){return e&-e}function $t(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function qt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Gt(e)/Qt|0)|0},Gt=Math.log,Qt=Math.LN2;var Zt=a.unstable_UserBlockingPriority,Vt=a.unstable_runWithPriority,Wt=!0;function Kt(e,t,n,r){Me||De();var o=Xt,a=Me;Me=!0;try{Re(o,e,t,n,r)}finally{(Me=a)||Be()}}function Yt(e,t,n,r){Vt(Zt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var o;if(Wt)if((o=0==(4&t))&&0<it.length&&-1<pt.indexOf(e))e=mt(null,e,t,n,r),it.push(e);else{var a=Jt(e,t,n,r);if(null===a)o&&ht(e,r);else{if(o){if(-1<pt.indexOf(e))return e=mt(a,e,t,n,r),void it.push(e);if(function(e,t,n,r,o){switch(t){case"focusin":return lt=gt(lt,e,t,n,r,o),!0;case"dragenter":return st=gt(st,e,t,n,r,o),!0;case"mouseover":return ut=gt(ut,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return ct.set(a,gt(ct.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,dt.set(a,gt(dt.get(a)||null,e,t,n,r,o)),!0}return!1}(a,e,t,n,r))return;ht(e,r)}Dr(e,t,r,null,n)}}}function Jt(e,t,n,r){var o=Oe(r);if(null!==(o=no(o))){var a=Ke(o);if(null===a)o=null;else{var i=a.tag;if(13===i){if(null!==(o=Ye(a)))return o;o=null}else if(3===i){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;o=null}else a!==o&&(o=null)}}return Dr(e,t,r,o,n),null}var en=null,tn=null,nn=null;function rn(){if(nn)return nn;var e,t,n=tn,r=n.length,o="value"in en?en.value:en.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return nn=o.slice(e,1<t?1-t:void 0)}function on(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function ln(){return!1}function sn(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?an:ln,this.isPropagationStopped=ln,this}return o(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var un,cn,dn,fn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(fn),mn=o({},fn,{view:0,detail:0}),hn=sn(mn),gn=o({},mn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==dn&&(dn&&"mousemove"===e.type?(un=e.screenX-dn.screenX,cn=e.screenY-dn.screenY):cn=un=0,dn=e),un)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),vn=sn(gn),bn=sn(o({},gn,{dataTransfer:0})),yn=sn(o({},mn,{relatedTarget:0})),wn=sn(o({},fn,{animationName:0,elapsedTime:0,pseudoElement:0})),kn=o({},fn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),En=sn(kn),Sn=sn(o({},fn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},On={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Pn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=On[e])&&!!t[e]}function Cn(){return Pn}var Tn=o({},mn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=on(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?on(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?on(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),In=sn(Tn),An=sn(o({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Ln=sn(o({},mn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Nn=sn(o({},fn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Rn=o({},gn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Dn=sn(Rn),jn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,zn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),Un=String.fromCharCode(32),$n=!1;function qn(e,t){switch(e){case"keyup":return-1!==jn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Gn=!1;var Qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Qn[e.type]:"textarea"===t}function Vn(e,t,n,r){Ae(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Kn=null;function Yn(e){Tr(e,0)}function Xn(e){if(Y(oo(e)))return e}function Jn(e,t){if("change"===e)return t}var er=!1;if(d){var tr;if(d){var nr="oninput"in document;if(!nr){var rr=document.createElement("div");rr.setAttribute("oninput","return;"),nr="function"==typeof rr.oninput}tr=nr}else tr=!1;er=tr&&(!document.documentMode||9<document.documentMode)}function or(){Wn&&(Wn.detachEvent("onpropertychange",ar),Kn=Wn=null)}function ar(e){if("value"===e.propertyName&&Xn(Kn)){var t=[];if(Vn(t,Kn,e,Oe(e)),e=Yn,Me)e(t);else{Me=!0;try{Ne(e,t)}finally{Me=!1,Be()}}}}function ir(e,t,n){"focusin"===e?(or(),Kn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&or()}function lr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Kn)}function sr(e,t){if("click"===e)return Xn(t)}function ur(e,t){if("input"===e||"change"===e)return Xn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},dr=Object.prototype.hasOwnProperty;function fr(e,t){if(cr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!dr.call(t,n[r])||!cr(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function mr(e,t){var n,r=pr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pr(r)}}function hr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function gr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function vr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var br=d&&"documentMode"in document&&11>=document.documentMode,yr=null,wr=null,kr=null,Er=!1;function Sr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;Er||null==yr||yr!==X(r)||("selectionStart"in(r=yr)&&vr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},kr&&fr(kr,r)||(kr=r,0<(r=Mr(wr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=yr)))}Dt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Dt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Dt(Rt,2);for(var _r="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<_r.length;xr++)Nt.set(_r[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Or="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Pr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Or));function Cr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,a,l,s,u){if(We.apply(this,arguments),He){if(!He)throw Error(i(198));var c=Ge;He=!1,Ge=null,Qe||(Qe=!0,Ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Tr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==a&&o.isPropagationStopped())break e;Cr(o,l,u),a=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==a&&o.isPropagationStopped())break e;Cr(o,l,u),a=s}}}if(Qe)throw e=Ze,Qe=!1,Ze=null,e}function Ir(e,t){var n=io(t),r=e+"__bubble";n.has(r)||(Rr(t,e,2,!1),n.add(r))}var Ar="_reactListening"+Math.random().toString(36).slice(2);function Lr(e){e[Ar]||(e[Ar]=!0,l.forEach((function(t){Pr.has(t)||Nr(t,!1,e,null),Nr(t,!0,e,null)})))}function Nr(e,t,n,r){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=n;if("selectionchange"===e&&9!==n.nodeType&&(a=n.ownerDocument),null!==r&&!t&&Pr.has(e)){if("scroll"!==e)return;o|=2,a=r}var i=io(a),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(o|=4),Rr(a,e,o,t),i.add(l))}function Rr(e,t,n,r){var o=Nt.get(t);switch(void 0===o?2:o){case 0:o=Kt;break;case 1:o=Yt;break;default:o=Xt}n=o.bind(null,t,n,e),o=void 0,!Ue||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,o){var a=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===o||8===l.nodeType&&l.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===o||8===s.nodeType&&s.parentNode===o))return;i=i.return}for(;null!==l;){if(null===(i=no(l)))return;if(5===(s=i.tag)||6===s){r=a=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{je(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=a,o=Oe(n),i=[];e:{var l=Lt.get(e);if(void 0!==l){var s=pn,u=e;switch(e){case"keypress":if(0===on(n))break e;case"keydown":case"keyup":s=In;break;case"focusin":u="focus",s=yn;break;case"focusout":u="blur",s=yn;break;case"beforeblur":case"afterblur":s=yn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=vn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Ln;break;case Ct:case Tt:case It:s=wn;break;case At:s=Nn;break;case"scroll":s=hn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=En;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=An}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=ze(m,f))&&c.push(jr(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,o),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!no(u)&&!u[eo])&&(s||l)&&(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?no(u):null)&&(u!==(d=Ke(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=vn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=An,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:oo(s),p=null==u?l:oo(u),(l=new c(h,m+"leave",s,n,o)).target=d,l.relatedTarget=p,h=null,no(o)===r&&((c=new c(f,m+"enter",u,n,o)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=Fr(p))m++;for(p=0,h=f;h;h=Fr(h))p++;for(;0<m-p;)c=Fr(c),m--;for(;0<p-m;)f=Fr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=Fr(c),f=Fr(f)}c=null}else c=null;null!==s&&Br(i,l,s,c,!1),null!==u&&null!==d&&Br(i,d,u,c,!0)}if("select"===(s=(l=r?oo(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Jn;else if(Zn(l))if(er)g=ur;else{g=lr;var v=ir}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=sr);switch(g&&(g=g(e,r))?Vn(i,g,n,o):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&oe(l,"number",l.value)),v=r?oo(r):window,e){case"focusin":(Zn(v)||"true"===v.contentEditable)&&(yr=v,wr=r,kr=null);break;case"focusout":kr=wr=yr=null;break;case"mousedown":Er=!0;break;case"contextmenu":case"mouseup":case"dragend":Er=!1,Sr(i,n,o);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Sr(i,n,o)}var b;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Gn?qn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(zn&&"ko"!==n.locale&&(Gn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Gn&&(b=rn()):(tn="value"in(en=o)?en.value:en.textContent,Gn=!0)),0<(v=Mr(r,y)).length&&(y=new Sn(y,e,null,n,o),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=Hn(n))&&(y.data=b))),(b=Bn?function(e,t){switch(e){case"compositionend":return Hn(t);case"keypress":return 32!==t.which?null:($n=!0,Un);case"textInput":return(e=t.data)===Un&&$n?null:e;default:return null}}(e,n):function(e,t){if(Gn)return"compositionend"===e||!Mn&&qn(e,t)?(e=rn(),nn=tn=en=null,Gn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return zn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(o=new Sn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=b))}Tr(i,t)}))}function jr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=ze(e,n))&&r.unshift(jr(e,a,o)),null!=(a=ze(e,t))&&r.push(jr(e,a,o))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,o?null!=(s=ze(n,a))&&i.unshift(jr(n,s,l)):o||null!=(s=ze(n,a))&&i.push(jr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function zr(){}var Ur=null,$r=null;function qr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Hr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Gr="function"==typeof setTimeout?setTimeout:void 0,Qr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Kr=0;var Yr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Yr,Jr="__reactProps$"+Yr,eo="__reactContainer$"+Yr,to="__reactEvents$"+Yr;function no(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[eo]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Xr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function ro(e){return!(e=e[Xr]||e[eo])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function oo(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function ao(e){return e[Jr]||null}function io(e){var t=e[to];return void 0===t&&(t=e[to]=new Set),t}var lo=[],so=-1;function uo(e){return{current:e}}function co(e){0>so||(e.current=lo[so],lo[so]=null,so--)}function fo(e,t){so++,lo[so]=e.current,e.current=t}var po={},mo=uo(po),ho=uo(!1),go=po;function vo(e,t){var n=e.type.contextTypes;if(!n)return po;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function bo(e){return null!=(e=e.childContextTypes)}function yo(){co(ho),co(mo)}function wo(e,t,n){if(mo.current!==po)throw Error(i(168));fo(mo,t),fo(ho,n)}function ko(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(i(108,Z(t)||"Unknown",a));return o({},n,r)}function Eo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||po,go=mo.current,fo(mo,e),fo(ho,ho.current),!0}function So(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ko(e,t,go),r.__reactInternalMemoizedMergedChildContext=e,co(ho),co(mo),fo(mo,e)):co(ho),fo(ho,n)}var _o=null,xo=null,Oo=a.unstable_runWithPriority,Po=a.unstable_scheduleCallback,Co=a.unstable_cancelCallback,To=a.unstable_shouldYield,Io=a.unstable_requestPaint,Ao=a.unstable_now,Lo=a.unstable_getCurrentPriorityLevel,No=a.unstable_ImmediatePriority,Ro=a.unstable_UserBlockingPriority,Do=a.unstable_NormalPriority,jo=a.unstable_LowPriority,Mo=a.unstable_IdlePriority,Fo={},Bo=void 0!==Io?Io:function(){},zo=null,Uo=null,$o=!1,qo=Ao(),Ho=1e4>qo?Ao:function(){return Ao()-qo};function Go(){switch(Lo()){case No:return 99;case Ro:return 98;case Do:return 97;case jo:return 96;case Mo:return 95;default:throw Error(i(332))}}function Qo(e){switch(e){case 99:return No;case 98:return Ro;case 97:return Do;case 96:return jo;case 95:return Mo;default:throw Error(i(332))}}function Zo(e,t){return e=Qo(e),Oo(e,t)}function Vo(e,t,n){return e=Qo(e),Po(e,t,n)}function Wo(){if(null!==Uo){var e=Uo;Uo=null,Co(e)}Ko()}function Ko(){if(!$o&&null!==zo){$o=!0;var e=0;try{var t=zo;Zo(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),zo=null}catch(n){throw null!==zo&&(zo=zo.slice(e+1)),Po(No,Wo),n}finally{$o=!1}}}var Yo=k.ReactCurrentBatchConfig;function Xo(e,t){if(e&&e.defaultProps){for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Jo=uo(null),ea=null,ta=null,na=null;function ra(){na=ta=ea=null}function oa(e){var t=Jo.current;co(Jo),e.type._context._currentValue=t}function aa(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ia(e,t){ea=e,na=ta=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function la(e,t){if(na!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(na=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ta){if(null===ea)throw Error(i(308));ta=t,ea.dependencies={lanes:0,firstContext:t,responders:null}}else ta=ta.next=t;return e._currentValue}var sa=!1;function ua(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function ca(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function da(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function fa(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function pa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ma(e,t,n,r){var a=e.updateQueue;sa=!1;var i=a.firstBaseUpdate,l=a.lastBaseUpdate,s=a.shared.pending;if(null!==s){a.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=a.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=o({},f,s);break e;case 2:sa=!0}}null!==i.callback&&(e.flags|=32,null===(s=a.effects)?a.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=a.shared.pending))break;i=s.next,s.next=null,a.lastBaseUpdate=s,a.shared.pending=null}}null===d&&(u=f),a.baseState=u,a.firstBaseUpdate=c,a.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function ha(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(i(191,o));o.call(r)}}}var ga=(new r.Component).refs;function va(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ba={isMounted:function(e){return!!(e=e._reactInternals)&&Ke(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),o=ps(e),a=da(r,o);a.payload=t,null!=n&&(a.callback=n),fa(e,a),ms(e,o,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),o=ps(e),a=da(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),fa(e,a),ms(e,o,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),o=da(n,r);o.tag=2,null!=t&&(o.callback=t),fa(e,o),ms(e,r,n)}};function ya(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!fr(n,r)||!fr(o,a))}function wa(e,t,n){var r=!1,o=po,a=t.contextType;return"object"==typeof a&&null!==a?a=la(a):(o=bo(t)?go:mo.current,a=(r=null!=(r=t.contextTypes))?vo(e,o):po),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ba,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function ka(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ba.enqueueReplaceState(t,t.state,null)}function Ea(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=ga,ua(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=la(a):(a=bo(t)?go:mo.current,o.context=vo(e,a)),ma(e,n,o,r),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(va(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&ba.enqueueReplaceState(o,o.state,null),ma(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4)}var Sa=Array.isArray;function _a(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:(t=function(e){var t=r.refs;t===ga&&(t=r.refs={}),null===e?delete t[o]:t[o]=e},t._stringRef=o,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xa(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function Oa(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Qs(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=_a(e,t,n),r.return=e,r):((r=Zs(n.type,n.key,n.props,null,e.mode,r)).ref=_a(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ys(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Vs(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Zs(t.type,t.key,t.props,null,e.mode,n)).ref=_a(e,null,t),n.return=e,n;case S:return(t=Ys(t,e.mode,n)).return=e,t}if(Sa(t)||$(t))return(t=Vs(t,e.mode,n,null)).return=e,t;xa(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===o?n.type===_?d(e,t,n.props.children,r,o):u(e,t,n,r):null;case S:return n.key===o?c(e,t,n,r):null}if(Sa(n)||$(n))return null!==o?null:d(e,t,n,r,null);xa(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===_?d(t,e,r.props.children,o,r.key):u(t,e,r,o);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(Sa(r)||$(r))return d(t,e=e.get(n)||null,r,o,null);xa(t,r)}return null}function h(o,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var v=p(o,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(o,d),i=a(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(o,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(o,l[h],s))&&(i=a(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(o,d);h<l.length;h++)null!==(g=m(d,o,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=a(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(o,e)})),u}function g(o,l,s,u){var c=$(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(o,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(o,h),l=a(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(o,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(o,b.value,u))&&(l=a(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(o,h);!b.done;g++,b=s.next())null!==(b=m(h,o,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=a(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(o,e)})),c}return function(e,r,a,s){var u="object"==typeof a&&null!==a&&a.type===_&&null===a.key;u&&(a=a.props.children);var c="object"==typeof a&&null!==a;if(c)switch(a.$$typeof){case E:e:{for(c=a.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(a.type===_){n(e,u.sibling),(r=o(u,a.props.children)).return=e,e=r;break e}}else if(u.elementType===a.type){n(e,u.sibling),(r=o(u,a.props)).ref=_a(e,u,a),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}a.type===_?((r=Vs(a.props.children,e.mode,s,a.key)).return=e,e=r):((s=Zs(a.type,a.key,a.props,null,e.mode,s)).ref=_a(e,r,a),s.return=e,e=s)}return l(e);case S:e:{for(u=a.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=o(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ys(a,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,a)).return=e,e=r):(n(e,r),(r=Ks(a,e.mode,s)).return=e,e=r),l(e);if(Sa(a))return h(e,r,a,s);if($(a))return g(e,r,a,s);if(c&&xa(e,a),void 0===a&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,Z(e.type)||"Component"))}return n(e,r)}}var Pa=Oa(!0),Ca=Oa(!1),Ta={},Ia=uo(Ta),Aa=uo(Ta),La=uo(Ta);function Na(e){if(e===Ta)throw Error(i(174));return e}function Ra(e,t){switch(fo(La,t),fo(Aa,e),fo(Ia,Ta),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:me(null,"");break;default:t=me(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}co(Ia),fo(Ia,t)}function Da(){co(Ia),co(Aa),co(La)}function ja(e){Na(La.current);var t=Na(Ia.current),n=me(t,e.type);t!==n&&(fo(Aa,e),fo(Ia,n))}function Ma(e){Aa.current===e&&(co(Ia),co(Aa))}var Fa=uo(0);function Ba(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var za=null,Ua=null,$a=!1;function qa(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ha(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ga(e){if($a){var t=Ua;if(t){var n=t;if(!Ha(e,t)){if(!(t=Vr(n.nextSibling))||!Ha(e,t))return e.flags=-1025&e.flags|2,$a=!1,void(za=e);qa(za,n)}za=e,Ua=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,$a=!1,za=e}}function Qa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;za=e}function Za(e){if(e!==za)return!1;if(!$a)return Qa(e),$a=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=Ua;t;)qa(e,t),t=Vr(t.nextSibling);if(Qa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Ua=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Ua=null}}else Ua=za?Vr(e.stateNode.nextSibling):null;return!0}function Va(){Ua=za=null,$a=!1}var Wa=[];function Ka(){for(var e=0;e<Wa.length;e++)Wa[e]._workInProgressVersionPrimary=null;Wa.length=0}var Ya=k.ReactCurrentDispatcher,Xa=k.ReactCurrentBatchConfig,Ja=0,ei=null,ti=null,ni=null,ri=!1,oi=!1;function ai(){throw Error(i(321))}function ii(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function li(e,t,n,r,o,a){if(Ja=a,ei=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ya.current=null===e||null===e.memoizedState?Ni:Ri,e=n(r,o),oi){a=0;do{if(oi=!1,!(25>a))throw Error(i(301));a+=1,ni=ti=null,t.updateQueue=null,Ya.current=Di,e=n(r,o)}while(oi)}if(Ya.current=Li,t=null!==ti&&null!==ti.next,Ja=0,ni=ti=ei=null,ri=!1,t)throw Error(i(300));return e}function si(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ni?ei.memoizedState=ni=e:ni=ni.next=e,ni}function ui(){if(null===ti){var e=ei.alternate;e=null!==e?e.memoizedState:null}else e=ti.next;var t=null===ni?ei.memoizedState:ni.next;if(null!==t)ni=t,ti=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ti=e).memoizedState,baseState:ti.baseState,baseQueue:ti.baseQueue,queue:ti.queue,next:null},null===ni?ei.memoizedState=ni=e:ni=ni.next=e}return ni}function ci(e,t){return"function"==typeof t?t(e):t}function di(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ti,o=r.baseQueue,a=n.pending;if(null!==a){if(null!==o){var l=o.next;o.next=a.next,a.next=l}r.baseQueue=o=a,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var s=l=a=null,u=o;do{var c=u.lane;if((Ja&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,a=r):s=s.next=d,ei.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==o);null===s?a=r:s.next=l,cr(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function fi(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{a=e(a,l.action),l=l.next}while(l!==o);cr(a,t.memoizedState)||(Mi=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var o=t._workInProgressVersionPrimary;if(null!==o?e=o===r:(e=e.mutableReadLanes,(e=(Ja&e)===e)&&(t._workInProgressVersionPrimary=r,Wa.push(t))),e)return n(t._source);throw Wa.push(t),Error(i(350))}function mi(e,t,n,r){var o=Nl;if(null===o)throw Error(i(349));var a=t._getVersion,l=a(t._source),s=Ya.current,u=s.useState((function(){return pi(o,t,n)})),c=u[1],d=u[0];u=ni;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=ei;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=a(t._source);if(!cr(l,e)){e=n(t._source),cr(d,e)||(c(e),e=ps(g),o.mutableReadLanes|=e&o.pendingLanes),e=o.mutableReadLanes,o.entangledLanes|=e;for(var r=o.entanglements,i=e;0<i;){var s=31-Ht(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);o.mutableReadLanes|=r&o.pendingLanes}catch(a){n((function(){throw a}))}}))}),[t,r]),cr(m,n)&&cr(h,t)&&cr(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=c=Ai.bind(null,ei,e),u.queue=e,u.baseQueue=null,d=pi(o,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return mi(ui(),e,t,n)}function gi(e){var t=si();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:e}).dispatch=Ai.bind(null,ei,e),[t.memoizedState,e]}function vi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=ei.updateQueue)?(t={lastEffect:null},ei.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function bi(e){return e={current:e},si().memoizedState=e}function yi(){return ui().memoizedState}function wi(e,t,n,r){var o=si();ei.flags|=e,o.memoizedState=vi(1|t,n,void 0,void 0===r?null:r)}function ki(e,t,n,r){var o=ui();r=void 0===r?null:r;var a=void 0;if(null!==ti){var i=ti.memoizedState;if(a=i.destroy,null!==r&&ii(r,i.deps))return void vi(t,n,a,r)}ei.flags|=e,o.memoizedState=vi(1|t,n,a,r)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return ki(516,4,e,t)}function _i(e,t){return ki(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Oi(e,t,n){return n=null!=n?n.concat([e]):null,ki(4,2,xi.bind(null,t,e),n)}function Pi(){}function Ci(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ii(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ti(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ii(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ii(e,t){var n=Go();Zo(98>n?98:n,(function(){e(!0)})),Zo(97<n?97:n,(function(){var n=Xa.transition;Xa.transition=1;try{e(!1),t()}finally{Xa.transition=n}}))}function Ai(e,t,n){var r=fs(),o=ps(e),a={lane:o,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?a.next=a:(a.next=i.next,i.next=a),t.pending=a,i=e.alternate,e===ei||null!==i&&i===ei)oi=ri=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(a.eagerReducer=i,a.eagerState=s,cr(s,l))return}catch(u){}ms(e,o,r)}}var Li={readContext:la,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ni={readContext:la,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:la,useEffect:Ei,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return wi(4,2,e,t)},useMemo:function(e,t){var n=si();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=si();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ai.bind(null,ei,e),[r.memoizedState,e]},useRef:bi,useState:gi,useDebugValue:Pi,useDeferredValue:function(e){var t=gi(e),n=t[0],r=t[1];return Ei((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=gi(!1),t=e[0];return bi(e=Ii.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=si();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},mi(r,e,t,n)},useOpaqueIdentifier:function(){if($a){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Kr++).toString(36))),Error(i(355))})),n=gi(t)[1];return 0==(2&ei.mode)&&(ei.flags|=516,vi(5,(function(){n("r:"+(Kr++).toString(36))}),void 0,null)),t}return gi(t="r:"+(Kr++).toString(36)),t},unstable_isNewReconciler:!1},Ri={readContext:la,useCallback:Ci,useContext:la,useEffect:Si,useImperativeHandle:Oi,useLayoutEffect:_i,useMemo:Ti,useReducer:di,useRef:yi,useState:function(){return di(ci)},useDebugValue:Pi,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return Si((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=di(ci)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ci)[0]},unstable_isNewReconciler:!1},Di={readContext:la,useCallback:Ci,useContext:la,useEffect:Si,useImperativeHandle:Oi,useLayoutEffect:_i,useMemo:Ti,useReducer:fi,useRef:yi,useState:function(){return fi(ci)},useDebugValue:Pi,useDeferredValue:function(e){var t=fi(ci),n=t[0],r=t[1];return Si((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=fi(ci)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return fi(ci)[0]},unstable_isNewReconciler:!1},ji=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?Ca(t,null,n,r):Pa(t,e.child,n,r)}function Bi(e,t,n,r,o){n=n.render;var a=t.ref;return ia(t,o),r=li(e,t,n,r,a,o),null===e||Mi?(t.flags|=1,Fi(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,al(e,t,o))}function zi(e,t,n,r,o,a){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Zs(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Ui(e,t,i,r,o,a))}return i=e.child,0==(o&a)&&(o=i.memoizedProps,(n=null!==(n=n.compare)?n:fr)(o,r)&&e.ref===t.ref)?al(e,t,a):(t.flags|=1,(e=Qs(i,r)).ref=t.ref,e.return=t,t.child=e)}function Ui(e,t,n,r,o,a){if(null!==e&&fr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(a&o))return t.lanes=e.lanes,al(e,t,a);0!=(16384&e.flags)&&(Mi=!0)}return Hi(e,t,n,r,a)}function $i(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==a?a.baseLanes:n)}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,o,n),t.child}function qi(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Hi(e,t,n,r,o){var a=bo(n)?go:mo.current;return a=vo(t,a),ia(t,o),n=li(e,t,n,r,a,o),null===e||Mi?(t.flags|=1,Fi(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,al(e,t,o))}function Gi(e,t,n,r,o){if(bo(n)){var a=!0;Eo(t)}else a=!1;if(ia(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),wa(t,n,r),Ea(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=la(u):u=vo(t,u=bo(n)?go:mo.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&ka(t,i,r,u),sa=!1;var f=t.memoizedState;i.state=f,ma(t,r,i,o),s=t.memoizedState,l!==r||f!==s||ho.current||sa?("function"==typeof c&&(va(t,n,c,r),s=t.memoizedState),(l=sa||ya(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,ca(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Xo(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=la(s):s=vo(t,s=bo(n)?go:mo.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&ka(t,i,r,s),sa=!1,f=t.memoizedState,i.state=f,ma(t,r,i,o);var m=t.memoizedState;l!==d||f!==m||ho.current||sa?("function"==typeof p&&(va(t,n,p,r),m=t.memoizedState),(u=sa||ya(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Qi(e,t,n,r,a,o)}function Qi(e,t,n,r,o,a){qi(e,t);var i=0!=(64&t.flags);if(!r&&!i)return o&&So(t,n,!1),al(e,t,a);r=t.stateNode,ji.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Pa(t,e.child,null,a),t.child=Pa(t,null,l,a)):Fi(e,t,l,a),t.memoizedState=r.state,o&&So(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?wo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&wo(0,t.context,!1),Ra(e,t.containerInfo)}var Vi,Wi,Ki,Yi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,o=t.pendingProps,a=Fa.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&a)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(a|=1),fo(Fa,1&a),null===e?(void 0!==o.fallback&&Ga(t),e=o.children,a=o.fallback,i?(e=Ji(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,e):"number"==typeof o.unstable_expectedLoadTime?(e=Ji(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,t.lanes=33554432,e):((n=Ws({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(o=tl(e,t,o.children,o.fallback,n),i=t.child,a=e.child.memoizedState,i.memoizedState=null===a?{baseLanes:n}:{baseLanes:a.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Yi,o):(n=el(e,t,o.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var o=e.mode,a=e.child;return t={mode:"hidden",children:t},0==(2&o)&&null!==a?(a.childLanes=0,a.pendingProps=t):a=Ws(t,o,0,null),n=Vs(n,o,r,null),a.return=e,n.return=e,a.sibling=n,e.child=a,n}function el(e,t,n,r){var o=e.child;return e=o.sibling,n=Qs(o,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,o){var a=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&a)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Qs(i,l),null!==e?r=Qs(e,r):(r=Vs(r,a,o,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),aa(e.return,t)}function rl(e,t,n,r,o,a){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o,lastEffect:a}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o,i.lastEffect=a)}function ol(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fa.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(fo(Fa,r),0==(2&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===Ba(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),rl(t,!1,o,n,a,t.lastEffect);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===Ba(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}rl(t,!0,n,null,a,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function al(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Qs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Qs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$a)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return bo(t.type)&&yo(),null;case 3:return Da(),co(ho),co(mo),Ka(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Za(t)?t.flags|=4:r.hydrate||(t.flags|=256)),null;case 5:Ma(t);var a=Na(La.current);if(n=t.type,null!==e&&null!=t.stateNode)Wi(e,t,n,r),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Na(Ia.current),Za(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Jr]=l,n){case"dialog":Ir("cancel",r),Ir("close",r);break;case"iframe":case"object":case"embed":Ir("load",r);break;case"video":case"audio":for(e=0;e<Or.length;e++)Ir(Or[e],r);break;case"source":Ir("error",r);break;case"img":case"image":case"link":Ir("error",r),Ir("load",r);break;case"details":Ir("toggle",r);break;case"input":ee(r,l),Ir("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Ir("invalid",r);break;case"textarea":se(r,l),Ir("invalid",r)}for(var u in _e(n,l),e=null,l)l.hasOwnProperty(u)&&(a=l[u],"children"===u?"string"==typeof a?r.textContent!==a&&(e=["children",a]):"number"==typeof a&&r.textContent!==""+a&&(e=["children",""+a]):s.hasOwnProperty(u)&&null!=a&&"onScroll"===u&&Ir("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=zr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===a.nodeType?a:a.ownerDocument,e===de&&(e=pe(n)),e===de?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Xr]=t,e[Jr]=r,Vi(e,t),t.stateNode=e,u=xe(n,r),n){case"dialog":Ir("cancel",e),Ir("close",e),a=r;break;case"iframe":case"object":case"embed":Ir("load",e),a=r;break;case"video":case"audio":for(a=0;a<Or.length;a++)Ir(Or[a],e);a=r;break;case"source":Ir("error",e),a=r;break;case"img":case"image":case"link":Ir("error",e),Ir("load",e),a=r;break;case"details":Ir("toggle",e),a=r;break;case"input":ee(e,r),a=J(e,r),Ir("invalid",e);break;case"option":a=ae(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=o({},r,{value:void 0}),Ir("invalid",e);break;case"textarea":se(e,r),a=le(e,r),Ir("invalid",e);break;default:a=r}_e(n,a);var c=a;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?Ee(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ve(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Ir("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+V(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=zr)}qr(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Na(La.current),Na(Ia.current),Za(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return co(Fa),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Za(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fa.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Nl||0==(134217727&Ul)&&0==(134217727&$l)||bs(Nl,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Da(),null===e&&Lr(t.stateNode.containerInfo),null;case 10:return oa(t),null;case 19:if(co(Fa),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Ba(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return fo(Fa,1&Fa.current|2),t.child}e=e.sibling}null!==r.tail&&Ho()>Ql&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Ba(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!$a)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ho()-r.renderingStartTime>Ql&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ho(),n.sibling=null,t=Fa.current,fo(Fa,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:bo(e.type)&&yo();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Da(),co(ho),co(mo),Ka(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Ma(e),null;case 13:return co(Fa),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return co(Fa),null;case 4:return Da(),null;case 10:return oa(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Q(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Na(Ia.current);var i,l=null;switch(n){case"input":a=J(e,a),r=J(e,r),l=[];break;case"option":a=ae(e,a),r=ae(e,r),l=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),l=[];break;case"textarea":a=le(e,a),r=le(e,r),l=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=zr)}for(d in _e(n,r),n=null,a)if(!r.hasOwnProperty(d)&&a.hasOwnProperty(d)&&null!=a[d])if("style"===d){var u=a[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=a?a[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Ir("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=da(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Yl=r),cl(0,t)},n}function pl(e,t,n){(n=da(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return cl(0,t),r(o)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Xo(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var o=e;r=o.next,0!=(4&(o=o.tag))&&0!=(1&o)&&(Ms(n,e),js(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Xo(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ha(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}ha(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&qr(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Et(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var o=n.memoizedProps.style;o=null!=o&&o.hasOwnProperty("display")?o.display:null,r.style.display=ke("display",o)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(xo&&"function"==typeof xo.onCommitFiberUnmount)try{xo.onCommitFiberUnmount(_o,t)}catch(a){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,o=r.destroy;if(r=r.tag,void 0!==o)if(0!=(4&r))Ms(t,n);else{r=t;try{o()}catch(a){zs(r,a)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(a){zs(t,a)}break;case 5:hl(t);break;case 4:xl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):_l(e,n,t)}function Sl(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=zr));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function _l(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(_l(e,t,n),e=e.sibling;null!==e;)_l(e,t,n),e=e.sibling}function xl(e,t){for(var n,r,o=t,a=!1;;){if(!a){a=o.return;e:for(;;){if(null===a)throw Error(i(160));switch(n=a.stateNode,a.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}a=a.return}a=!0}if(5===o.tag||6===o.tag){e:for(var l=e,s=o,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=o.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){n=o.stateNode.containerInfo,r=!0,o.child.return=o,o=o.child;continue}}else if(yl(e,o),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(a=!1)}o.sibling.return=o.return,o=o.sibling}}function Ol(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var o=null!==e?e.memoizedProps:r;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[Jr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,o),t=xe(e,r),o=0;o<a.length;o+=2){var l=a[o],s=a[o+1];"style"===l?Ee(n,s):"dangerouslySetInnerHTML"===l?ve(n,s):"children"===l?be(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(a=r.value)?ie(n,!!r.multiple,a,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,Et(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=Ho(),bl(t.child,!0)),void Pl(t);case 19:return void Pl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Pl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Cl(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Tl=Math.ceil,Il=k.ReactCurrentDispatcher,Al=k.ReactCurrentOwner,Ll=0,Nl=null,Rl=null,Dl=0,jl=0,Ml=uo(0),Fl=0,Bl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Ql=1/0;function Zl(){Ql=Ho()+500}var Vl,Wl=null,Kl=!1,Yl=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],os=null,as=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Ll)?Ho():-1!==ls?ls:ls=Ho()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Go()?1:2;if(0===ss&&(ss=zl),0!==Yo.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Go(),0!=(4&Ll)&&98===e?e=zt(12,ss):e=zt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<as)throw as=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;qt(e,t,n),e===Nl&&($l|=t,4===Fl&&bs(e,Dl));var r=Go();1===t?0!=(8&Ll)&&0==(48&Ll)?ys(e):(gs(e,n),0===Ll&&(Zl(),Wo())):(0==(4&Ll)||98!==r&&99!==r||(null===os?os=new Set([e]):os.add(e)),gs(e,n)),Hl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,o=e.pingedLanes,a=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=a[s];if(-1===c){if(0==(u&r)||0!=(u&o)){c=t,Mt(u);var d=jt;a[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Nl?Dl:0),t=jt,0===r)null!==n&&(n!==Fo&&Co(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Fo&&Co(n)}15===t?(n=ys.bind(null,e),null===zo?(zo=[n],Uo=Po(No,Ko)):zo.push(n),n=Fo):14===t?n=Vo(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Vo(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Ll))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=Ft(e,e===Nl?Dl:0);if(0===n)return null;var r=n,o=Ll;Ll|=16;var a=Os();for(Nl===e&&Dl===r||(Zl(),_s(e,r));;)try{Ts();break}catch(s){xs(e,s)}if(ra(),Il.current=a,Ll=o,null!==Rl?r=0:(Nl=null,Dl=0,r=Fl),0!=(zl&$l))_s(e,0);else if(0!==r){if(2===r&&(Ll|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=Ps(e,n))),1===r)throw t=Bl,_s(e,0),bs(e,n),gs(e,Ho()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ls(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=Gl+500-Ho())){if(0!==Ft(e,0))break;if(((o=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=Gr(Ls.bind(null,e),r);break}Ls(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,o=-1;0<n;){var l=31-Ht(n);a=1<<l,(l=r[l])>o&&(o=l),n&=~a}if(n=o,10<(n=(120>(n=Ho()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Tl(n/1960))-n)){e.timeoutHandle=Gr(Ls.bind(null,e),n);break}Ls(e);break;default:throw Error(i(329))}}return gs(e,Ho()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Ll))throw Error(i(327));if(Ds(),e===Nl&&0!=(e.expiredLanes&Dl)){var t=Dl,n=Ps(e,t);0!=(zl&$l)&&(n=Ps(e,t=Ft(e,t)))}else n=Ps(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Ll|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=Ps(e,t))),1===n)throw n=Bl,_s(e,0),bs(e,t),gs(e,Ho()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ls(e),gs(e,Ho()),null}function ws(e,t){var n=Ll;Ll|=1;try{return e(t)}finally{0===(Ll=n)&&(Zl(),Wo())}}function ks(e,t){var n=Ll;Ll&=-2,Ll|=8;try{return e(t)}finally{0===(Ll=n)&&(Zl(),Wo())}}function Es(e,t){fo(Ml,jl),jl|=t,zl|=t}function Ss(){jl=Ml.current,co(Ml)}function _s(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Qr(n)),null!==Rl)for(n=Rl.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&yo();break;case 3:Da(),co(ho),co(mo),Ka();break;case 5:Ma(r);break;case 4:Da();break;case 13:case 19:co(Fa);break;case 10:oa(r);break;case 23:case 24:Ss()}n=n.return}Nl=e,Rl=Qs(e.current,null),Dl=jl=zl=t,Fl=0,Bl=null,ql=$l=Ul=0}function xs(e,t){for(;;){var n=Rl;try{if(ra(),Ya.current=Li,ri){for(var r=ei.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ri=!1}if(Ja=0,ni=ti=ei=null,oi=!1,Al.current=null,null===n||null===n.return){Fl=1,Bl=t,Rl=null;break}e:{var a=e,i=n.return,l=n,s=t;if(t=Dl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fa.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=da(-1,1);b.tag=2,fa(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=a.pingCache;if(null===y?(y=a.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=Us.bind(null,a,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((Z(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:a=s,f.flags|=4096,t&=-t,f.lanes|=t,pa(f,fl(0,a,t));break e;case 1:a=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,pa(f,pl(f,a,t));break e}}f=f.return}while(null!==f)}As(n)}catch(S){t=S,Rl===n&&null!==n&&(Rl=n=n.return);continue}break}}function Os(){var e=Il.current;return Il.current=Li,null===e?Li:e}function Ps(e,t){var n=Ll;Ll|=16;var r=Os();for(Nl===e&&Dl===t||_s(e,t);;)try{Cs();break}catch(o){xs(e,o)}if(ra(),Ll=n,Il.current=r,null!==Rl)throw Error(i(261));return Nl=null,Dl=0,Fl}function Cs(){for(;null!==Rl;)Is(Rl)}function Ts(){for(;null!==Rl&&!To();)Is(Rl)}function Is(e){var t=Vl(e.alternate,e,jl);e.memoizedProps=e.pendingProps,null===t?As(e):Rl=t,Al.current=null}function As(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,jl)))return void(Rl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&jl)||0==(4&n.mode)){for(var r=0,o=n.child;null!==o;)r|=o.lanes|o.childLanes,o=o.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Rl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Rl=t);Rl=t=e}while(null!==t);0===Fl&&(Fl=5)}function Ls(e){var t=Go();return Zo(99,Ns.bind(null,e,t)),null}function Ns(e,t){do{Ds()}while(null!==es);if(0!=(48&Ll))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,o=r,a=e.pendingLanes&~o;e.pendingLanes=o,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=o,e.mutableReadLanes&=o,e.entangledLanes&=o,o=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<a;){var u=31-Ht(a),c=1<<u;o[u]=0,l[u]=-1,s[u]=-1,a&=~c}if(null!==os&&0==(24&r)&&os.has(e)&&os.delete(e),e===Nl&&(Rl=Nl=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(o=Ll,Ll|=32,Al.current=null,Ur=Wt,vr(l=gr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,a=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(O){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==a&&3!==g.nodeType||(f=d+a),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++m===a&&(f=d),v===u&&++h===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;$r={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Wl=r;do{try{Rs()}catch(O){if(null===Wl)throw Error(i(330));zs(Wl,O),Wl=Wl.nextEffect}}while(null!==Wl);cs=null,Wl=r;do{try{for(l=e;null!==Wl;){var y=Wl.flags;if(16&y&&be(Wl.stateNode,""),128&y){var w=Wl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Wl),Wl.flags&=-3;break;case 6:El(Wl),Wl.flags&=-3,Ol(Wl.alternate,Wl);break;case 1024:Wl.flags&=-1025;break;case 1028:Wl.flags&=-1025,Ol(Wl.alternate,Wl);break;case 4:Ol(Wl.alternate,Wl);break;case 8:xl(l,s=Wl);var E=s.alternate;wl(s),null!==E&&wl(E)}Wl=Wl.nextEffect}}catch(O){if(null===Wl)throw Error(i(330));zs(Wl,O),Wl=Wl.nextEffect}}while(null!==Wl);if(k=$r,w=gr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&vr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=mr(y,E),a=mr(y,l),s&&a&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==a.node||k.focusOffset!==a.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(a.node,a.offset)):(w.setEnd(a.node,a.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!Ur,$r=Ur=null,e.current=n,Wl=r;do{try{for(y=e;null!==Wl;){var S=Wl.flags;if(36&S&&vl(y,Wl.alternate,Wl),128&S){w=void 0;var _=Wl.ref;if(null!==_){var x=Wl.stateNode;Wl.tag,w=x,"function"==typeof _?_(w):_.current=w}}Wl=Wl.nextEffect}}catch(O){if(null===Wl)throw Error(i(330));zs(Wl,O),Wl=Wl.nextEffect}}while(null!==Wl);Wl=null,Bo(),Ll=o}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Wl=r;null!==Wl;)t=Wl.nextEffect,Wl.nextEffect=null,8&Wl.flags&&((S=Wl).sibling=null,S.stateNode=null),Wl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?as++:(as=0,is=e):as=0,n=n.stateNode,xo&&"function"==typeof xo.onCommitFiberRoot)try{xo.onCommitFiberRoot(_o,n,void 0,64==(64&n.current.flags))}catch(O){}if(gs(e,Ho()),Kl)throw Kl=!1,e=Yl,Yl=null,e;return 0!=(8&Ll)||Wo(),null}function Rs(){for(;null!==Wl;){var e=Wl.alternate;ds||null===cs||(0!=(8&Wl.flags)?et(Wl,cs)&&(ds=!0):13===Wl.tag&&Cl(e,Wl)&&et(Wl,cs)&&(ds=!0));var t=Wl.flags;0!=(256&t)&&gl(e,Wl),0==(512&t)||Jl||(Jl=!0,Vo(97,(function(){return Ds(),null}))),Wl=Wl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Zo(e,Fs)}return!1}function js(e,t){ns.push(t,e),Jl||(Jl=!0,Vo(97,(function(){return Ds(),null})))}function Ms(e,t){rs.push(t,e),Jl||(Jl=!0,Vo(97,(function(){return Ds(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Ll))throw Error(i(331));var t=Ll;Ll|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var o=n[r],a=n[r+1],l=o.destroy;if(o.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===a)throw Error(i(330));zs(a,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){o=n[r],a=n[r+1];try{var s=o.create;o.destroy=s()}catch(u){if(null===a)throw Error(i(330));zs(a,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Ll=t,Wo(),!0}function Bs(e,t,n){fa(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&(qt(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var o=pl(n,e=ul(t,e),1);if(fa(n,o),o=fs(),null!==(n=hs(n,1)))qt(n,1,o),gs(n,o);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(a){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Nl===e&&(Dl&n)===n&&(4===Fl||3===Fl&&(62914560&Dl)===Dl&&500>Ho()-Gl?_s(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Go()?1:2:(0===ss&&(ss=zl),0===(t=Ut(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&(qt(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Qs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Zs(e,t,n,r,o,a){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case _:return Vs(n.children,o,a,t);case j:l=8,o|=16;break;case x:l=8,o|=1;break;case O:return(e=Hs(12,n,t,8|o)).elementType=O,e.type=O,e.lanes=a,e;case I:return(e=Hs(13,n,t,o)).type=I,e.elementType=I,e.lanes=a,e;case A:return(e=Hs(19,n,t,o)).elementType=A,e.lanes=a,e;case M:return Ws(n,o,a,t);case F:return(e=Hs(24,n,t,o)).elementType=F,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case P:l=10;break e;case C:l=9;break e;case T:l=11;break e;case L:l=14;break e;case N:l=16,r=null;break e;case R:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function Vs(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ws(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=M,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Ys(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function eu(e,t,n,r){var o=t.current,a=fs(),l=ps(o);e:if(n){t:{if(Ke(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(bo(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(bo(u)){n=ko(n,u,s);break e}}n=s}else n=po;return null===t.context?t.context=n:t.pendingContext=n,(t=da(a,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),fa(o,t),ms(o,l,a),l}function tu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function nu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function ru(e,t){nu(e,t),(e=e.alternate)&&nu(e,t)}function ou(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,ua(t),e[eo]=n.current,Lr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var o=(t=r[e])._getVersion;o=o(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,o]:n.mutableSourceEagerHydrationData.push(t,o)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function iu(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a._internalRoot;if("function"==typeof o){var l=o;o=function(){var e=tu(i);l.call(e)}}eu(t,i,e,o)}else{if(a=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ou(e,0,t?{hydrate:!0}:void 0)}(n,r),i=a._internalRoot,"function"==typeof o){var s=o;o=function(){var e=tu(i);s.call(e)}}ks((function(){eu(t,i,e,o)}))}return tu(i)}function lu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return Js(e,t,null,n)}Vl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||ho.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Va();break;case 5:ja(t);break;case 1:bo(t.type)&&Eo(t);break;case 4:Ra(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var o=t.type._context;fo(Jo,o._currentValue),o._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(fo(Fa,1&Fa.current),null!==(t=al(e,t,n))?t.sibling:null);fo(Fa,1&Fa.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return ol(e,t,n);t.flags|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),fo(Fa,Fa.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return al(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=vo(t,mo.current),ia(t,n),o=li(null,t,r,e,o,n),t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,bo(r)){var a=!0;Eo(t)}else a=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ua(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&va(t,r,l,e),o.updater=ba,t.stateNode=o,o._reactInternals=t,Ea(t,r,e,n),t=Qi(null,t,r,!0,a,n)}else t.tag=0,Fi(null,t,o,n),t=t.child;return t;case 16:o=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=(a=o._init)(o._payload),t.type=o,a=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===L)return 14}return 2}(o),e=Xo(o,e),a){case 0:t=Hi(null,t,o,e,n);break e;case 1:t=Gi(null,t,o,e,n);break e;case 11:t=Bi(null,t,o,e,n);break e;case 14:t=zi(null,t,o,Xo(o.type,e),r,n);break e}throw Error(i(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Hi(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 1:return r=t.type,o=t.pendingProps,Gi(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,ca(e,t),ma(t,r,null,n),(r=t.memoizedState.element)===o)Va(),t=al(e,t,n);else{if((a=(o=t.stateNode).hydrate)&&(Ua=Vr(t.stateNode.containerInfo.firstChild),za=t,a=$a=!0),a){if(null!=(e=o.mutableSourceEagerHydrationData))for(o=0;o<e.length;o+=2)(a=e[o])._workInProgressVersionPrimary=e[o+1],Wa.push(a);for(n=Ca(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Va();t=t.child}return t;case 5:return ja(t),null===e&&Ga(t),r=t.type,o=t.pendingProps,a=null!==e?e.memoizedProps:null,l=o.children,Hr(r,o)?l=null:null!==a&&Hr(r,a)&&(t.flags|=16),qi(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&Ga(t),null;case 13:return Xi(e,t,n);case 4:return Ra(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Pa(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,Bi(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,l=t.memoizedProps,a=o.value;var s=t.type._context;if(fo(Jo,s._currentValue),s._currentValue=a,null!==l)if(s=l.value,0===(a=cr(s,a)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,a):1073741823))){if(l.children===o.children&&!ho.current){t=al(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&a)){1===s.tag&&((c=da(-1,n&-n)).tag=2,fa(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),aa(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(a=t.pendingProps).children,ia(t,n),r=r(o=la(o,a.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return a=Xo(o=t.type,t.pendingProps),zi(e,t,o,a=Xo(o.type,a),r,n);case 15:return Ui(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xo(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,bo(r)?(e=!0,Eo(t)):e=!1,ia(t,n),wa(t,r,o),Ea(t,r,o,n),Qi(null,t,r,!0,e,n);case 19:return ol(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ou.prototype.render=function(e){eu(e,this._internalRoot,null,null)},ou.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;eu(null,e,null,(function(){t[eo]=null}))},tt=function(e){13===e.tag&&(ms(e,4,fs()),ru(e,4))},nt=function(e){13===e.tag&&(ms(e,67108864,fs()),ru(e,67108864))},rt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),ru(e,n)}},ot=function(e,t){return t()},Pe=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=ao(r);if(!o)throw Error(i(90));Y(r),ne(r,o)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ne=ws,Re=function(e,t,n,r,o){var a=Ll;Ll|=4;try{return Zo(98,e.bind(null,t,n,r,o))}finally{0===(Ll=a)&&(Zl(),Wo())}},De=function(){0==(49&Ll)&&(function(){if(null!==os){var e=os;os=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Ho())}))}Wo()}(),Ds())},je=function(e,t){var n=Ll;Ll|=2;try{return e(t)}finally{0===(Ll=n)&&(Zl(),Wo())}};var su={Events:[ro,oo,ao,Ae,Le,Ds,{current:!1}]},uu={findFiberByHostInstance:no,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},cu={bundleType:uu.bundleType,version:uu.version,rendererPackageName:uu.rendererPackageName,rendererConfig:uu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Je(e))?null:e.stateNode},findFiberByHostInstance:uu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var du=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!du.isDisabled&&du.supportsFiber)try{_o=du.inject(cu),xo=du}catch(ge){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return iu(null,e,t,!0,n)},t.render=function(e,t,n){if(!au(t))throw Error(i(200));return iu(null,e,t,!1,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!a(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!a(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),o=n(5697),a=n.n(o),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={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"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},_=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},x=function(e){return S(e,"onChangeClientState")||function(){}},O=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},P=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},C=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var o={};n.filter((function(e){for(var n,a=Object.keys(e),i=0;i<a.length;i+=1){var l=a[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][u]&&(o[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(o),i=0;i<a.length;i+=1){var l=a[i],s=f({},r[l],o[l]);r[l]=s}return e}),[]).reverse()},T=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},I=function(e){return Array.isArray(e)?e.join(""):e},A=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},L=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},N=[g.NOSCRIPT,g.SCRIPT,g.STYLE],R=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},j=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=j(n,o),[r.createElement(g.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=D(n),a=I(t);return o?"<"+e+' data-rh="true" '+o+">"+R(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+R(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return j(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===N.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=A(e.metaTags,y),a=A(t,v),i=A(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,o.priority),M(g.LINK,a.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,o.priority,r)+" "+F(g.LINK,a.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,a,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Q=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},Z=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===o.indexOf(s)&&o.push(s);var c=a.indexOf(s);-1!==c&&a.splice(c,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},V=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;Z(g.BODY,e.bodyAttributes),Z(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=I(e)),Z(g.TITLE,t)}(c,d);var f={baseTag:Q(g.BASE,n),linkTags:Q(g.LINK,o),metaTags:Q(g.META,a),noscriptTags:Q(g.NOSCRIPT,i),scriptTags:Q(g.SCRIPT,s),styleTags:Q(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},W=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,o=null,a=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:P(["href"],e),bodyAttributes:O("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:O("htmlAttributes",e),linkTags:C(g.LINK,["rel","href"],e),metaTags:C(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:C(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:x(e),scriptTags:C(g.SCRIPT,["src","innerHTML"],e),styleTags:C(g.STYLE,["cssText"],e),title:_(e),titleAttributes:O("titleAttributes",e),prioritizeSeoTags:T(e,"prioritizeSeoTags")});G.canUseDOM?(t=a,W&&cancelAnimationFrame(W),t.defer?W=requestAnimationFrame((function(){V(t,(function(){W=null}))})):(V(t),W=null)):B&&(o=B(a)),r(o)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(L(this.props,"helmetData"),L(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},o,((t={})[r.type]=i,t.titleAttributes=f({},a),t));case g.BODY:return f({},o,{bodyAttributes:f({},a)});case g.HTML:return f({},o,{htmlAttributes:f({},a)});default:return f({},o,((n={})[r.type]=f({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.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+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=h(r,Y),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,a),s){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:l,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),o=f({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof U||(a=new U(a.context,a.instances)),a?r.createElement(K,f({},o,{context:a.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,f({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case a:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case o:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=a,t.Lazy=g,t.Memo=h,t.Portal=o,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return a(o(o(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),a(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}a(g,"propTypes",{report:s.func.isRequired}),a(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6775),o=n(7462),a=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.rs,n,e.map((function(e,n){return a.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.Z)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(6775),o=n(5068),a=n(7294),i=n(9318),l=n(7462),s=n(3366),u=n(2177),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,o.Z)(t,e),t.prototype.render=function(){return a.createElement(r.F0,{history:this.history,children:this.props.children})},t}(a.Component);a.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},m=a.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==m&&t||n,a.createElement("a",c)}));var g=m((function(e,t){var n=e.component,o=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||v:h.innerRef=v,a.createElement(o,h)}))})),v=function(e){return e},b=a.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,_=e.to,x=e.innerRef,O=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(_,n),n),s=i.pathname,P=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),C=P?(0,r.LX)(n.pathname,{path:P,exact:h,sensitive:k,strict:E}):null,T=!!(y?y(C,n):C),I="function"==typeof m?m(T):m,A="function"==typeof S?S(T):S;T&&(I=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(I,c),A=(0,l.Z)({},A,p));var L=(0,l.Z)({"aria-current":T&&o||null,className:I,style:A,to:i},O);return v!==b?L.ref=t||x:L.innerRef=x,a.createElement(g,L)}))}))},6775:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>k,rs:()=>A,s6:()=>w,LX:()=>_,k6:()=>N,TH:()=>R});var r=n(5068),o=n(7294),a=n(9318),i=n(5697),l=n.n(i),s=1073741823,u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};function c(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}var d=o.createContext||function(e,t){var n,a,i="__create-react-context-"+function(){var e="__global_unique_id__";return u[e]=(u[e]||0)+1}()+"__",d=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=c(t.props.value),t}(0,r.Z)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(i=o)?0!==a||1/a==1/i:a!=a&&i!=i)?n=0:(n="function"==typeof t?t(r,o):s,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,i},o.render=function(){return this.props.children},n}(o.Component);d.childContextTypes=((n={})[i]=l().object.isRequired,n);var f=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?s:t},o.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?s:e},o.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},o.getValue=function(){return this.context[i]?this.context[i].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return f.contextTypes=((a={})[i]=l().object,a),{Provider:d,Consumer:f}};const f=d;var p=n(2177),m=n(7462),h=n(9658),g=n.n(h),v=(n(9864),n(3366)),b=(n(8679),function(e){var t=f();return t.displayName=e,t}),y=b("Router-History"),w=b("Router"),k=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.createElement(w.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;o.Component;var E={},S=0;function _(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=E[n]||(E[n]={});if(r[e])return r[e];var o=[],a={regexp:g()(e,o,t),keys:o};return S<1e4&&(r[e]=a,S++),a}(n,{end:a,strict:l,sensitive:u}),o=r.regexp,i=r.keys,s=o.exec(e);if(!s)return null;var c=s[0],d=s.slice(1),f=e===c;return a&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(w.Consumer,null,(function(t){t||(0,p.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?_(n.pathname,e.props):t.match,a=(0,m.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,s=i.component,u=i.render;return Array.isArray(l)&&function(e){return 0===o.Children.count(e)}(l)&&(l=null),o.createElement(w.Provider,{value:a},a.match?l?"function"==typeof l?l(a):l:s?o.createElement(s,a):u?u(a):null:"function"==typeof l?l(a):null)}))},t}(o.Component);function O(e){return"/"===e.charAt(0)?e:"/"+e}function P(e,t){if(!e)return t;var n=O(e);return 0!==t.pathname.indexOf(n)?t:(0,m.Z)({},t,{pathname:t.pathname.substr(n.length)})}function C(e){return"string"==typeof e?e:(0,a.Ep)(e)}function T(e){return function(){(0,p.Z)(!1)}}function I(){}o.Component;var A=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(w.Consumer,null,(function(t){t||(0,p.Z)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,(function(e){if(null==r&&o.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?_(a.pathname,(0,m.Z)({},e.props,{path:i})):t.match}})),r?o.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(o.Component);var L=o.useContext;function N(){return L(y)}function R(){return L(w).location}},9658:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,_=n[2]||c,x=v||b;r.push({name:g||a++,prefix:h||"",delimiter:_,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:x?u(x):w?".*":"[^"+s(_)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var a="",l=t||{},s=(o||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(a+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');a+=c.prefix+d}}else a+=c}return a}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,a=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return o||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=a?"$":o&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(p(e[o],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(a(e,n),t,n)}(e,t,n)}},2408:(e,t,n)=>{"use strict";var r=n(7418),o=60103,a=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;o=d("react.element"),a=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,a={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(a[r]=t[r]);var s=arguments.length-2;if(1===s)a.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];a.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===a[r]&&(a[r]=s[r]);return{$$typeof:o,type:e,key:i,ref:l,props:a,_owner:w.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var x=/\/+/g;function O(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function P(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case o:case a:s=!0}}if(s)return i=i(s=e),e=""===r?"."+O(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(x,"$&/")+"/"),P(i,t,n,"",(function(e){return e}))):null!=i&&(_(i)&&(i=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(x,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+O(l=e[u],u);s+=P(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=P(l=l.value,t,n,c=r+O(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function C(e,t,n){if(null==e)return e;var r=[],o=0;return P(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function T(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var I={current:null};function A(){var e=I.current;if(null===e)throw Error(p(321));return e}var L={ReactCurrentDispatcher:I,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:C,forEach:function(e,t,n){C(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return C(e,(function(){t++})),t},toArray:function(e){return C(e,(function(e){return e}))||[]},only:function(e){if(!_(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=L,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var a=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];a.children=u}return{$$typeof:o,type:e.type,key:i,ref:l,props:a,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:T}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return A().useCallback(e,t)},t.useContext=function(e,t){return A().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return A().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return A().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return A().useLayoutEffect(e,t)},t.useMemo=function(e,t){return A().useMemo(e,t)},t.useReducer=function(e,t,n){return A().useReducer(e,t,n)},t.useRef=function(e){return A().useRef(e)},t.useState=function(e){return A().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,o,a;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},o=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},o=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,o=e[r];if(!(void 0!==o&&0<x(o,t)))break e;e[r]=t,e[n]=o,n=r}}function S(e){return void 0===(e=e[0])?null:e}function _(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r<o;){var a=2*(r+1)-1,i=e[a],l=a+1,s=e[l];if(void 0!==i&&0>x(i,n))void 0!==s&&0>x(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[a]=n,r=a);else{if(!(void 0!==s&&0>x(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var O=[],P=[],C=1,T=null,I=3,A=!1,L=!1,N=!1;function R(e){for(var t=S(P);null!==t;){if(null===t.callback)_(P);else{if(!(t.startTime<=e))break;_(P),t.sortIndex=t.expirationTime,E(O,t)}t=S(P)}}function D(e){if(N=!1,R(e),!L)if(null!==S(O))L=!0,n(j);else{var t=S(P);null!==t&&r(D,t.startTime-e)}}function j(e,n){L=!1,N&&(N=!1,o()),A=!0;var a=I;try{for(R(n),T=S(O);null!==T&&(!(T.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=T.callback;if("function"==typeof i){T.callback=null,I=T.priorityLevel;var l=i(T.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?T.callback=l:T===S(O)&&_(O),R(n)}else _(O);T=S(O)}if(null!==T)var s=!0;else{var u=S(P);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{T=null,I=a,A=!1}}var M=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){L||A||(L=!0,n(j))},t.unstable_getCurrentPriorityLevel=function(){return I},t.unstable_getFirstCallbackNode=function(){return S(O)},t.unstable_next=function(e){switch(I){case 1:case 2:case 3:var t=3;break;default:t=I}var n=I;I=t;try{return e()}finally{I=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=I;I=e;try{return t()}finally{I=n}},t.unstable_scheduleCallback=function(e,a,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:C++,callback:a,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(P,e),null===S(O)&&e===S(P)&&(N?o():N=!0,r(D,i-l))):(e.sortIndex=s,E(O,e),L||A||(L=!0,n(j))),e},t.unstable_wrapCallback=function(e){var t=I;return function(){var n=I;I=t;try{return e.apply(this,arguments)}finally{I=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<a.length;s++){var u=a[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(o=n?n.call(r,c,d,u):void 0)||void 0===o&&c!==d)return!1}return!0}},2177:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r="Invariant failed";function o(e,t){if(!e)throw new Error(r)}},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"cun\u012bcu",tagline:"zeroconf \u2022 p2p \u2022 mesh \u2022 vpn",url:"https://cunicu.li",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.png",trailingSlash:!1,stylesheets:[{href:"https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css",type:"text/css",integrity:"sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM",crossorigin:"anonymous"}],plugins:[["/home/stv0g/workspace/cunicu/website/node_modules/@cmfcmf/docusaurus-search-local/lib/server/index.js",{}],["/home/stv0g/workspace/cunicu/website/node_modules/@gabrielcsapo/docusaurus-plugin-matomo/dist/index.js",{siteId:"5",matomoUrl:"https://matomo.0l.de",siteUrl:"https://cunicu.li"}],null],organizationName:"stv0g",projectName:"cunicu",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"/home/stv0g/workspace/cunicu/website/sidebars.js",editUrl:"https://github.com/stv0g/cunicu/edit/master/",remarkPlugins:[null,null],rehypePlugins:[null]},blog:{showReadingTime:!0,editUrl:"https://github.com/stv0g/cunicu/master/website"},theme:{customCss:"/home/stv0g/workspace/cunicu/website/src/css/custom.css"}}]],themeConfig:{colorMode:{disableSwitch:!0,defaultMode:"light",respectPrefersColorScheme:!1},navbar:{title:"cun\u012bcu",logo:{alt:"cun\u012bcu logo",src:"img/cunicu_icon.svg"},items:[{type:"doc",docId:"index",position:"left",label:"Docs"},{to:"/blog",label:"Blog",position:"left"},{href:"https://github.com/stv0g/cunicu",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Docs",items:[{label:"Tutorial",to:"/docs/"}]},{title:"Community",items:[{label:"Slack",href:"https://gophers.slack.com/archives/C036CTEGJFN"},{label:"Twitter",href:"https://twitter.com/cunicuVPN"}]},{title:"More",items:[{label:"Blog",to:"/blog"},{label:"GitHub",href:"https://github.com/stv0g/cunicu"}]}],copyright:"Copyright \xa9 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>o})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}n.d(t,{Z:()=>r})},7529:e=>{"use strict";e.exports=JSON.parse('{"cmfcmf/d-s-l.searchBar.placeholder":"Search...","cmfcmf/d-s-l.searchBar.noResults":"No results found.","cmfcmf/d-s-l.searchBar.clearButtonTitle":"Clear","cmfcmf/d-s-l.searchBar.detachedCancelButtonText":"Cancel","cmfcmf/d-s-l.searchBar.submitButtonTitle":"Submit"}')},6887:e=>{"use strict";e.exports=JSON.parse('{"/blog-ace":{"__comp":"a6aa9e1f","__context":{"plugin":"52456dd7"},"sidebar":"814f3328","items":[{"content":"35b202a1"}],"metadata":"b2b675dd"},"/blog/archive-0fa":{"__comp":"9e4087bc","__context":{"plugin":"52456dd7"},"archive":"b2f554cd"},"/blog/tags-95d":{"__comp":"01a85c17","__context":{"plugin":"52456dd7"},"sidebar":"814f3328","tags":"a7023ddc"},"/blog/tags/hello-b0b":{"__comp":"6875c492","__context":{"plugin":"52456dd7"},"sidebar":"814f3328","items":[{"content":"35b202a1"}],"tag":"30a24c52","listMetadata":"66406991"},"/blog/welcome-2cd":{"__comp":"ccc49370","__context":{"plugin":"52456dd7"},"sidebar":"814f3328","content":"ddfaed6c"},"/markdown-page-471":{"__comp":"1f391b9e","__context":{"plugin":"e4582cf4"},"content":"393be207"},"/docs-541":{"__comp":"1be78505","__context":{"plugin":"214ce059"},"versionMetadata":"935f2afb"},"/docs-f5d":{"__comp":"17896441","content":"c377a04b"},"/docs/comparison-d6c":{"__comp":"17896441","content":"e6ccb422"},"/docs/config-79c":{"__comp":"17896441","content":"9225b3a9"},"/docs/config-reference-9a5":{"__comp":"17896441","content":"30cd80eb"},"/docs/design-e50":{"__comp":"17896441","content":"0aeccac2"},"/docs/development-a60":{"__comp":"17896441","content":"6dcaddc4"},"/docs/development/proxying-17b":{"__comp":"17896441","content":"ec078f8a"},"/docs/development/signaling-4ad":{"__comp":"17896441","content":"c180861d"},"/docs/development/todo-6f9":{"__comp":"17896441","content":"9fc6b440"},"/docs/features-080":{"__comp":"17896441","content":"c0742808"},"/docs/features/autocfg-e7b":{"__comp":"17896441","content":"8b35e876"},"/docs/features/cfgsync-428":{"__comp":"17896441","content":"5b0ec1e8"},"/docs/features/epdisc-c76":{"__comp":"17896441","content":"5ad9cedd"},"/docs/features/hooks-bd7":{"__comp":"17896441","content":"8d306639"},"/docs/features/hsync-512":{"__comp":"17896441","content":"88554f04"},"/docs/features/pdisc-96b":{"__comp":"17896441","content":"3d976d8d"},"/docs/features/pske-4fb":{"__comp":"17896441","content":"4dda60b2"},"/docs/features/rtsync-ca7":{"__comp":"17896441","content":"c18e783d"},"/docs/install-65c":{"__comp":"17896441","content":"c4de80f8"},"/docs/usage-428":{"__comp":"17896441","content":"38e469bb"},"/docs/usage/man-d24":{"__comp":"17896441","content":"f98fed9b"},"/docs/usage/man/addresses-057":{"__comp":"17896441","content":"8f24e72b"},"/docs/usage/man/completion-c9b":{"__comp":"17896441","content":"8d5366bf"},"/docs/usage/man/completion/bash-f40":{"__comp":"17896441","content":"83dca9e6"},"/docs/usage/man/completion/fish-9ed":{"__comp":"17896441","content":"61cce660"},"/docs/usage/man/completion/powershell-139":{"__comp":"17896441","content":"4e235874"},"/docs/usage/man/completion/zsh-c5a":{"__comp":"17896441","content":"5c8c1c6c"},"/docs/usage/man/config-b74":{"__comp":"17896441","content":"b88c5a7d"},"/docs/usage/man/config/get-ae6":{"__comp":"17896441","content":"5795ae79"},"/docs/usage/man/config/reload-bc7":{"__comp":"17896441","content":"8d4ecb14"},"/docs/usage/man/config/set-d5a":{"__comp":"17896441","content":"ee91bca0"},"/docs/usage/man/daemon-d8c":{"__comp":"17896441","content":"4d2ed0aa"},"/docs/usage/man/invite-4e5":{"__comp":"17896441","content":"bfed30f4"},"/docs/usage/man/monitor-f48":{"__comp":"17896441","content":"da55d1d1"},"/docs/usage/man/relay-fa5":{"__comp":"17896441","content":"646b41db"},"/docs/usage/man/reload-b3b":{"__comp":"17896441","content":"c092e03b"},"/docs/usage/man/restart-c9c":{"__comp":"17896441","content":"57323276"},"/docs/usage/man/self-update-5a5":{"__comp":"17896441","content":"761a043d"},"/docs/usage/man/selfupdate-634":{"__comp":"17896441","content":"424a2e2a"},"/docs/usage/man/signal-ad6":{"__comp":"17896441","content":"3f8b3b9b"},"/docs/usage/man/status-fe1":{"__comp":"17896441","content":"339ed6ad"},"/docs/usage/man/stop-4f4":{"__comp":"17896441","content":"93c4fd1c"},"/docs/usage/man/sync-0a5":{"__comp":"17896441","content":"7e492805"},"/docs/usage/man/version-7ca":{"__comp":"17896441","content":"7746b56b"},"/docs/usage/man/wg-208":{"__comp":"17896441","content":"e5e144da"},"/docs/usage/man/wg/genkey-f5d":{"__comp":"17896441","content":"76b3d27b"},"/docs/usage/man/wg/genpsk-2c9":{"__comp":"17896441","content":"e432836c"},"/docs/usage/man/wg/pubkey-862":{"__comp":"17896441","content":"020785c0"},"/docs/usage/man/wg/show-7b7":{"__comp":"17896441","content":"68b1f9b5"},"/docs/usage/man/wg/showconf-49d":{"__comp":"17896441","content":"09f02e09"},"/docs/usage/upgrade-7fe":{"__comp":"17896441","content":"3739c031"},"/docs/usage/usecases-d0b":{"__comp":"17896441","content":"39aaac8c"},"/-e64":{"__comp":"c4f5d8e4","__context":{"plugin":"e4582cf4"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=9383,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.3e1f8c45.js.LICENSE.txt b/assets/js/main.d3aebcf9.js.LICENSE.txt similarity index 100% rename from assets/js/main.3e1f8c45.js.LICENSE.txt rename to assets/js/main.d3aebcf9.js.LICENSE.txt diff --git a/assets/js/runtime~main.0d972120.js b/assets/js/runtime~main.0d972120.js new file mode 100644 index 00000000..af838462 --- /dev/null +++ b/assets/js/runtime~main.0d972120.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,c,d,a,f,b={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(c,d,a,f)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){d=e[i][0],a=e[i][1],f=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=a();void 0!==n&&(c=n)}}return c}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[d,a,f]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};c=c||[null,d({}),d([]),d(d)];for(var t=2&a&&e;"object"==typeof t&&!~c.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((c=>b[c]=()=>e[c]));return b.default=()=>e,r.d(f,b),f},r.d=(e,c)=>{for(var d in c)r.o(c,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:c[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((c,d)=>(r.f[d](e,c),c)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",110:"66406991",155:"61cce660",209:"646b41db",414:"0aeccac2",453:"30a24c52",533:"b2b675dd",603:"9fc6b440",621:"e6ccb422",822:"83dca9e6",1162:"3739c031",1173:"214ce059",1356:"5b0ec1e8",1477:"b2f554cd",1495:"8b35e876",1503:"68b1f9b5",1634:"4dda60b2",1713:"a7023ddc",2029:"5c8c1c6c",2413:"3d976d8d",2535:"814f3328",2786:"35b202a1",2944:"76b3d27b",3060:"339ed6ad",3085:"1f391b9e",3089:"a6aa9e1f",3289:"93c4fd1c",3408:"57323276",3608:"9e4087bc",3816:"3f8b3b9b",3872:"52456dd7",3986:"5795ae79",3989:"c180861d",4013:"01a85c17",4015:"c0742808",4195:"c4f5d8e4",4276:"39aaac8c",4398:"da55d1d1",4446:"9225b3a9",4883:"bfed30f4",4902:"424a2e2a",5015:"7746b56b",5439:"5ad9cedd",5468:"c092e03b",5586:"4e235874",5734:"8f24e72b",6103:"ccc49370",6435:"c18e783d",6692:"ec078f8a",6812:"b88c5a7d",6909:"761a043d",6929:"f98fed9b",6971:"c377a04b",7325:"ddfaed6c",7335:"8d4ecb14",7414:"393be207",7467:"8d5366bf",7577:"6dcaddc4",7606:"e4582cf4",7833:"8d306639",7918:"17896441",7923:"e5e144da",7943:"c4de80f8",8027:"30cd80eb",8592:"common",8610:"6875c492",8671:"020785c0",8902:"38e469bb",8929:"e432836c",9146:"09f02e09",9151:"ee91bca0",9211:"88554f04",9514:"1be78505",9768:"7e492805",9901:"4d2ed0aa"}[e]||e)+"."+{53:"a318fc26",110:"230ccf62",155:"e3b8516c",209:"afcd9c36",414:"962a1d06",453:"f2ad14f3",533:"d6920f4a",603:"8a1014a2",621:"ab1f9146",814:"7577b675",822:"6ee40630",1162:"146ce933",1173:"1d15aadf",1356:"9e1944df",1477:"907b026a",1495:"fa685a4d",1503:"7a1a5968",1634:"c6e4795f",1713:"3e129663",2029:"b03a0591",2413:"35b5274a",2535:"f7d9a7aa",2786:"81b3f40f",2944:"27ebd29c",3060:"b9a62f3e",3085:"fcd1ef93",3089:"85e04429",3289:"f5b2468f",3408:"1541aa51",3608:"7ad1d60e",3816:"2c503c96",3872:"fec68280",3986:"61589280",3989:"9b7b3162",4013:"db03476b",4015:"778dc737",4195:"7cfbb58e",4276:"02c58af0",4398:"01ba8494",4446:"472b2c5b",4883:"8eeee203",4902:"351bff2f",4972:"cb44d3e5",5015:"a7ac979b",5439:"0faaffc9",5468:"7d902034",5586:"879d5987",5734:"6bfb6363",6048:"13d61d17",6103:"eda6030d",6435:"e155bbde",6692:"f985a03c",6812:"0e4c39e3",6909:"922860eb",6929:"fb06827e",6971:"4b0f441d",7325:"9575a5ef",7335:"46fd7c21",7414:"d8f5a780",7467:"a42b53e7",7577:"64e816db",7606:"9a433e57",7833:"b3312136",7918:"32c4f63e",7923:"f7d81d84",7943:"9e64c997",8027:"023aec76",8490:"a7b3978b",8592:"4fe5a7dc",8610:"4e9f80be",8671:"43ef947d",8902:"63e0060d",8929:"2a3efc14",9146:"0bb06f17",9151:"da447e15",9211:"ae29a129",9514:"b7a4b227",9768:"91393bf5",9901:"4d4334d6"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),a={},f="wice:",r.l=(e,c,d,b)=>{if(a[e])a[e].push(c);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+d){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+d),t.src=e),a[e]=[c];var l=(c,d)=>{t.onerror=t.onload=null,clearTimeout(s);var f=a[e];if(delete a[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(d))),c)return c(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",57323276:"3408",66406991:"110","935f2afb":"53","61cce660":"155","646b41db":"209","0aeccac2":"414","30a24c52":"453",b2b675dd:"533","9fc6b440":"603",e6ccb422:"621","83dca9e6":"822","3739c031":"1162","214ce059":"1173","5b0ec1e8":"1356",b2f554cd:"1477","8b35e876":"1495","68b1f9b5":"1503","4dda60b2":"1634",a7023ddc:"1713","5c8c1c6c":"2029","3d976d8d":"2413","814f3328":"2535","35b202a1":"2786","76b3d27b":"2944","339ed6ad":"3060","1f391b9e":"3085",a6aa9e1f:"3089","93c4fd1c":"3289","9e4087bc":"3608","3f8b3b9b":"3816","52456dd7":"3872","5795ae79":"3986",c180861d:"3989","01a85c17":"4013",c0742808:"4015",c4f5d8e4:"4195","39aaac8c":"4276",da55d1d1:"4398","9225b3a9":"4446",bfed30f4:"4883","424a2e2a":"4902","7746b56b":"5015","5ad9cedd":"5439",c092e03b:"5468","4e235874":"5586","8f24e72b":"5734",ccc49370:"6103",c18e783d:"6435",ec078f8a:"6692",b88c5a7d:"6812","761a043d":"6909",f98fed9b:"6929",c377a04b:"6971",ddfaed6c:"7325","8d4ecb14":"7335","393be207":"7414","8d5366bf":"7467","6dcaddc4":"7577",e4582cf4:"7606","8d306639":"7833",e5e144da:"7923",c4de80f8:"7943","30cd80eb":"8027",common:"8592","6875c492":"8610","020785c0":"8671","38e469bb":"8902",e432836c:"8929","09f02e09":"9146",ee91bca0:"9151","88554f04":"9211","1be78505":"9514","7e492805":"9768","4d2ed0aa":"9901"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(c,d)=>{var a=r.o(e,c)?e[c]:void 0;if(0!==a)if(a)d.push(a[2]);else if(/^(1303|532)$/.test(c))e[c]=0;else{var f=new Promise(((d,f)=>a=e[c]=[d,f]));d.push(a[2]=f);var b=r.p+r.u(c),t=new Error;r.l(b,(d=>{if(r.o(e,c)&&(0!==(a=e[c])&&(e[c]=void 0),a)){var f=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+c+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,a[1](t)}}),"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,d)=>{var a,f,b=d[0],t=d[1],o=d[2],n=0;if(b.some((c=>0!==e[c]))){for(a in t)r.o(t,a)&&(r.m[a]=t[a]);if(o)var i=o(r)}for(c&&c(d);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},d=self.webpackChunkwice=self.webpackChunkwice||[];d.forEach(c.bind(null,0)),d.push=c.bind(null,d.push.bind(d))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.d7916942.js b/assets/js/runtime~main.d7916942.js deleted file mode 100644 index 3991c9bc..00000000 --- a/assets/js/runtime~main.d7916942.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,a,c,d,b,f={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return f[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=f,r.c=t,e=[],r.O=(a,c,d,b)=>{if(!c){var f=1/0;for(i=0;i<e.length;i++){c=e[i][0],d=e[i][1],b=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&b||f>=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b<f&&(f=b));if(t){e.splice(i--,1);var n=d();void 0!==n&&(a=n)}}return a}b=b||0;for(var i=e.length;i>0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,d,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var f={};a=a||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,r.d(b,f),b},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",110:"66406991",155:"61cce660",414:"0aeccac2",453:"30a24c52",533:"b2b675dd",603:"9fc6b440",621:"e6ccb422",822:"83dca9e6",1162:"3739c031",1356:"5b0ec1e8",1477:"b2f554cd",1495:"8b35e876",1503:"68b1f9b5",1634:"4dda60b2",1713:"a7023ddc",2029:"5c8c1c6c",2413:"3d976d8d",2535:"814f3328",2854:"a35b52ca",2944:"76b3d27b",3060:"339ed6ad",3085:"1f391b9e",3089:"a6aa9e1f",3217:"3b8c55ea",3289:"93c4fd1c",3408:"57323276",3608:"9e4087bc",3816:"3f8b3b9b",3829:"59efbc3d",3986:"5795ae79",3989:"c180861d",4013:"01a85c17",4195:"c4f5d8e4",4276:"39aaac8c",4398:"da55d1d1",4902:"424a2e2a",5015:"7746b56b",5439:"5ad9cedd",5586:"4e235874",5734:"8f24e72b",6103:"ccc49370",6435:"c18e783d",6692:"ec078f8a",6757:"6d967f90",6812:"b88c5a7d",6909:"761a043d",6929:"f98fed9b",6971:"c377a04b",7192:"5d77abb4",7414:"393be207",7467:"8d5366bf",7577:"6dcaddc4",7810:"1cd45622",7833:"8d306639",7918:"17896441",7923:"e5e144da",8592:"common",8610:"6875c492",8671:"020785c0",8902:"38e469bb",8929:"e432836c",9004:"9ed00105",9146:"09f02e09",9151:"ee91bca0",9211:"88554f04",9514:"1be78505",9768:"7e492805",9901:"4d2ed0aa"}[e]||e)+"."+{53:"fddd848f",110:"230ccf62",155:"a648f796",210:"25f60c65",414:"99c5053f",453:"f2ad14f3",533:"d6920f4a",603:"785a19dc",621:"70694f2e",822:"3eb98048",1162:"a630d82b",1356:"85b8135b",1477:"69c7828b",1495:"2a095181",1503:"dc5f99b0",1634:"5f7ebca5",1713:"3e129663",2029:"07c8650f",2413:"c8ea940f",2529:"302363cc",2535:"f7d9a7aa",2854:"32d0c9d2",2944:"5c78b1d1",3060:"a16dcd06",3085:"b095e869",3089:"85e04429",3217:"f2147935",3289:"76d8bf6a",3408:"36a23214",3608:"7ad1d60e",3816:"8d90ef30",3829:"657b63fd",3986:"c04b0383",3989:"ffafae82",4013:"db03476b",4195:"7cfbb58e",4276:"85639671",4398:"a3845566",4902:"dc2b7936",4972:"cb44d3e5",5015:"0417243a",5439:"cafcfe1e",5586:"24ccf0ab",5734:"59b51eef",6103:"24f7e1ce",6435:"de87e08e",6692:"06bba740",6757:"462485ca",6812:"129017e4",6909:"adc4d10f",6929:"d6d6cebd",6971:"209d2350",7192:"2ff62661",7414:"d8f5a780",7467:"8c18c40e",7577:"7b20b9c9",7810:"d8375f23",7833:"6d499a4e",7918:"2842905b",7923:"41512bf8",8592:"4fe5a7dc",8610:"4e9f80be",8671:"57087961",8902:"5d1544ce",8929:"ac27ad63",9004:"8feedae3",9146:"f632b570",9151:"0cd12d00",9211:"638d1d1a",9514:"b7a4b227",9768:"a361ff99",9901:"8fecaf30"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},b="wice:",r.l=(e,a,c,f)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==b+c){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",b+c),t.src=e),d[e]=[a];var l=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var b=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",57323276:"3408",66406991:"110","935f2afb":"53","61cce660":"155","0aeccac2":"414","30a24c52":"453",b2b675dd:"533","9fc6b440":"603",e6ccb422:"621","83dca9e6":"822","3739c031":"1162","5b0ec1e8":"1356",b2f554cd:"1477","8b35e876":"1495","68b1f9b5":"1503","4dda60b2":"1634",a7023ddc:"1713","5c8c1c6c":"2029","3d976d8d":"2413","814f3328":"2535",a35b52ca:"2854","76b3d27b":"2944","339ed6ad":"3060","1f391b9e":"3085",a6aa9e1f:"3089","3b8c55ea":"3217","93c4fd1c":"3289","9e4087bc":"3608","3f8b3b9b":"3816","59efbc3d":"3829","5795ae79":"3986",c180861d:"3989","01a85c17":"4013",c4f5d8e4:"4195","39aaac8c":"4276",da55d1d1:"4398","424a2e2a":"4902","7746b56b":"5015","5ad9cedd":"5439","4e235874":"5586","8f24e72b":"5734",ccc49370:"6103",c18e783d:"6435",ec078f8a:"6692","6d967f90":"6757",b88c5a7d:"6812","761a043d":"6909",f98fed9b:"6929",c377a04b:"6971","5d77abb4":"7192","393be207":"7414","8d5366bf":"7467","6dcaddc4":"7577","1cd45622":"7810","8d306639":"7833",e5e144da:"7923",common:"8592","6875c492":"8610","020785c0":"8671","38e469bb":"8902",e432836c:"8929","9ed00105":"9004","09f02e09":"9146",ee91bca0:"9151","88554f04":"9211","1be78505":"9514","7e492805":"9768","4d2ed0aa":"9901"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,c)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((c,b)=>d=e[a]=[c,b]));c.push(d[2]=b);var f=r.p+r.u(a),t=new Error;r.l(f,(c=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var b=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+f+")",t.name="ChunkLoadError",t.type=b,t.request=f,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var d,b,f=c[0],t=c[1],o=c[2],n=0;if(f.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(c);n<f.length;n++)b=f[n],r.o(e,b)&&e[b]&&e[b][0](),e[b]=0;return r.O(i)},c=self.webpackChunkwice=self.webpackChunkwice||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})(); \ No newline at end of file diff --git a/blog.html b/blog.html index ff6c9c5b..0a903a9f 100644 --- a/blog.html +++ b/blog.html @@ -21,14 +21,18 @@ </noscript> <script>window.dev=void 0,(!0===window.dev||"1"!==navigator.doNotTrack&&"1"!==window.doNotTrack)&&(window._paq=window._paq||[],window._paq.push(["setTrackerUrl","https://matomo.0l.de/piwik.php"]),window._paq.push(["setSiteId","5"]),window._paq.push(["enableHeartBeatTimer"]),window.start=new Date,function(){var e=document,t=e.createElement("script"),o=e.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.defer=!0,t.src="https://matomo.0l.de/piwik.js",o.parentNode.insertBefore(t,o)}(),!0===window.dev&&(console.debug("[Matomo] Tracking initialized"),console.debug("[Matomo] matomoUrl: https://matomo.0l.de, siteId: 5")))</script> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css" integrity="sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.4c6baf0a.css"> -<link rel="preload" href="/assets/js/runtime~main.d7916942.js" as="script"> -<link rel="preload" href="/assets/js/main.3e1f8c45.js" as="script"> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css" integrity="sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.31713120.css"> +<link rel="preload" href="/assets/js/runtime~main.0d972120.js" as="script"> +<link rel="preload" href="/assets/js/main.d3aebcf9.js" as="script"> </head> <body class="navigation-with-keyboard" data-theme="light"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="theme.common.skipToMainContent"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">cunīcu</b></a><a class="navbar__item navbar__link" href="/docs">Docs</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/blog">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="dsla-search-wrapper"><div class="dsla-search-field" data-tags="default,docs-default-current"></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome">Welcome</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/welcome">Welcome</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-09-08T00:00:00.000Z" itemprop="datePublished">September 8, 2022</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/stv0g" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/stv0g.png" alt="Steffen Vogel"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/stv0g" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Steffen Vogel</span></a></div><small class="avatar__subtitle" itemprop="description">Maintainer of cunīcu</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Hello, welcome to the cunīcu blog. We will start posting some updates here soon.</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello">hello</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs">Tutorial</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gophers.slack.com/archives/C036CTEGJFN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/cunicuVPN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University.</div></div></div></footer></div> -<script src="/assets/js/runtime~main.d7916942.js"></script> -<script src="/assets/js/main.3e1f8c45.js"></script> +<div role="region" aria-label="theme.common.skipToMainContent"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">cunīcu</b></a><a class="navbar__item navbar__link" href="/docs">Docs</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/blog">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="searchBox_ZlJk"><div class="dsla-search-wrapper"><div class="dsla-search-field" data-tags="default,docs-default-current"></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome">Welcome</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/welcome">Welcome</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-09-15T00:00:00.000Z" itemprop="datePublished">September 15, 2022</time> · <!-- -->2 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/stv0g" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/stv0g.png" alt="Steffen Vogel"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/stv0g" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Steffen Vogel</span></a></div><small class="avatar__subtitle" itemprop="description">Maintainer of cunīcu</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Hello, welcome to the first post in the cunīcu project blog!</p><p>While the project is still in its infancy there are some updates in <a href="https://en.wikipedia.org/wiki/TL;DR" target="_blank" rel="noopener noreferrer">TL;DR</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="first-release">First release<a class="hash-link" href="#first-release" title="Direct link to heading">​</a></h3><p>We are planning to publish the first official release within the next 4-10 weeks 🎉. +The release pipeline, packaging and self-update feature and more has already been implemented. +We just need to finish the last features and do quite some more testing.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="website-docs-and-twitter">Website, Docs and Twitter<a class="hash-link" href="#website-docs-and-twitter" title="Direct link to heading">​</a></h3><p>The project has now its dedicated <a href="https://cunicu.li" target="_blank" rel="noopener noreferrer">website</a>, <a href="https://github.com/cunicu" target="_blank" rel="noopener noreferrer">GitHub organization</a> and Twitter handle (<a href="https://twitter.com/cunicuVPN" target="_blank" rel="noopener noreferrer">@cunicuVPN</a>). +Feel free to follow us there for updates!</p><p>You might also have realized that the project name has changed. We decided to rebrand from the previous name <em>wice</em> to avoid any potential trademark issues with the WireGuard project as well as another small German company named <em>WICE</em>. +The project name <em>cunīcu</em> <!-- -->[kʊˈniːkʊ]<!-- --> is derived from the <a href="https://en.wiktionary.org/wiki/cuniculus#Latin" target="_blank" rel="noopener noreferrer">latin noun cunīculus</a> which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as <em>cunīcu</em> builds tunnels between otherwise hard to reach network locations.</p><p>This also gave us the opportunity to redesign the logo which you find further down in the sticker design.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="stickers">Stickers<a class="hash-link" href="#stickers" title="Direct link to heading">​</a></h3><p>We have stickers! Just drop me a mail at <a href="mailto:info@cunicu.li" target="_blank" rel="noopener noreferrer">📧 info@cunicu.li</a> and I will send you some or talk to me at some of the upcoming conferences.</p><figure><center><img loading="lazy" src="/img/cunicu_sticker.svg" alt="The sticker design" style="transform:rotate(270deg)" class="img_ev3q"><figcaption>The sticker design</figcaption></center></figure></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello">hello</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs">Tutorial</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gophers.slack.com/archives/C036CTEGJFN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/cunicuVPN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University.</div></div></div></footer></div> +<script src="/assets/js/runtime~main.0d972120.js"></script> +<script src="/assets/js/main.d3aebcf9.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/archive.html b/blog/archive.html index 8e320b73..18dc30f2 100644 --- a/blog/archive.html +++ b/blog/archive.html @@ -21,14 +21,14 @@ </noscript> <script>window.dev=void 0,(!0===window.dev||"1"!==navigator.doNotTrack&&"1"!==window.doNotTrack)&&(window._paq=window._paq||[],window._paq.push(["setTrackerUrl","https://matomo.0l.de/piwik.php"]),window._paq.push(["setSiteId","5"]),window._paq.push(["enableHeartBeatTimer"]),window.start=new Date,function(){var e=document,t=e.createElement("script"),o=e.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.defer=!0,t.src="https://matomo.0l.de/piwik.js",o.parentNode.insertBefore(t,o)}(),!0===window.dev&&(console.debug("[Matomo] Tracking initialized"),console.debug("[Matomo] matomoUrl: https://matomo.0l.de, siteId: 5")))</script> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css" integrity="sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.4c6baf0a.css"> -<link rel="preload" href="/assets/js/runtime~main.d7916942.js" as="script"> -<link rel="preload" href="/assets/js/main.3e1f8c45.js" as="script"> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css" integrity="sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.31713120.css"> +<link rel="preload" href="/assets/js/runtime~main.0d972120.js" as="script"> +<link rel="preload" href="/assets/js/main.d3aebcf9.js" as="script"> </head> <body class="navigation-with-keyboard" data-theme="light"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="theme.common.skipToMainContent"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">cunīcu</b></a><a class="navbar__item navbar__link" href="/docs">Docs</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/blog">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="dsla-search-wrapper"><div class="dsla-search-field" data-tags="default,docs-default-current"></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0"><header class="hero hero--primary"><div class="container"><h1 class="hero__title">Archive</h1><p class="hero__subtitle">Archive</p></div></header><main><section class="margin-vert--lg"><div class="container"><div class="row"><div class="col col--4 margin-vert--lg"><h3>2022</h3><ul><li><a href="/blog/welcome">September 8, 2022<!-- --> - <!-- -->Welcome</a></li></ul></div></div></div></section></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs">Tutorial</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gophers.slack.com/archives/C036CTEGJFN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/cunicuVPN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University.</div></div></div></footer></div> -<script src="/assets/js/runtime~main.d7916942.js"></script> -<script src="/assets/js/main.3e1f8c45.js"></script> +<div role="region" aria-label="theme.common.skipToMainContent"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">cunīcu</b></a><a class="navbar__item navbar__link" href="/docs">Docs</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/blog">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="searchBox_ZlJk"><div class="dsla-search-wrapper"><div class="dsla-search-field" data-tags="default,docs-default-current"></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0"><header class="hero hero--primary"><div class="container"><h1 class="hero__title">Archive</h1><p class="hero__subtitle">Archive</p></div></header><main><section class="margin-vert--lg"><div class="container"><div class="row"><div class="col col--4 margin-vert--lg"><h3>2022</h3><ul><li><a href="/blog/welcome">September 15, 2022<!-- --> - <!-- -->Welcome</a></li></ul></div></div></div></section></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs">Tutorial</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gophers.slack.com/archives/C036CTEGJFN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/cunicuVPN" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/stv0g/cunicu" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University.</div></div></div></footer></div> +<script src="/assets/js/runtime~main.0d972120.js"></script> +<script src="/assets/js/main.d3aebcf9.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/atom.xml b/blog/atom.xml index 80ba88ae..bf6d4b70 100644 --- a/blog/atom.xml +++ b/blog/atom.xml @@ -2,7 +2,7 @@ <feed xmlns="http://www.w3.org/2005/Atom"> <id>https://cunicu.li/blog</id> <title>cunīcu Blog - 2022-09-08T00:00:00.000Z + 2022-09-15T00:00:00.000Z https://github.com/jpmonette/feed cunīcu Blog @@ -11,9 +11,13 @@ <![CDATA[Welcome]]> welcome - 2022-09-08T00:00:00.000Z - - Hello, welcome to the cunīcu blog. We will start posting some updates here soon.

]]>
+ 2022-09-15T00:00:00.000Z + + Hello, welcome to the first post in the cunīcu project blog!

While the project is still in its infancy there are some updates in TL;DR.

First release

We are planning to publish the first official release within the next 4-10 weeks 🎉. +The release pipeline, packaging and self-update feature and more has already been implemented. +We just need to finish the last features and do quite some more testing.

Website, Docs and Twitter

The project has now its dedicated website, GitHub organization and Twitter handle (@cunicuVPN). +Feel free to follow us there for updates!

You might also have realized that the project name has changed. We decided to rebrand from the previous name wice to avoid any potential trademark issues with the WireGuard project as well as another small German company named WICE. +The project name cunīcu [kʊˈniːkʊ] is derived from the latin noun cunīculus which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as cunīcu builds tunnels between otherwise hard to reach network locations.

This also gave us the opportunity to redesign the logo which you find further down in the sticker design.

Stickers

We have stickers! Just drop me a mail at 📧 info@cunicu.li and I will send you some or talk to me at some of the upcoming conferences.

The sticker design
The sticker design
]]>
Steffen Vogel https://github.com/stv0g diff --git a/blog/rss.xml b/blog/rss.xml index e8fa3a9f..0caf42c0 100644 --- a/blog/rss.xml +++ b/blog/rss.xml @@ -4,7 +4,7 @@ cunīcu Blog https://cunicu.li/blog cunīcu Blog - Thu, 08 Sep 2022 00:00:00 GMT + Thu, 15 Sep 2022 00:00:00 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed en @@ -12,9 +12,13 @@ <![CDATA[Welcome]]> https://cunicu.li/blog/welcome welcome - Thu, 08 Sep 2022 00:00:00 GMT - - Hello, welcome to the cunīcu blog. We will start posting some updates here soon.

]]>
+ Thu, 15 Sep 2022 00:00:00 GMT + + Hello, welcome to the first post in the cunīcu project blog!

While the project is still in its infancy there are some updates in TL;DR.

First release

We are planning to publish the first official release within the next 4-10 weeks 🎉. +The release pipeline, packaging and self-update feature and more has already been implemented. +We just need to finish the last features and do quite some more testing.

Website, Docs and Twitter

The project has now its dedicated website, GitHub organization and Twitter handle (@cunicuVPN). +Feel free to follow us there for updates!

You might also have realized that the project name has changed. We decided to rebrand from the previous name wice to avoid any potential trademark issues with the WireGuard project as well as another small German company named WICE. +The project name cunīcu [kʊˈniːkʊ] is derived from the latin noun cunīculus which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as cunīcu builds tunnels between otherwise hard to reach network locations.

This also gave us the opportunity to redesign the logo which you find further down in the sticker design.

Stickers

We have stickers! Just drop me a mail at 📧 info@cunicu.li and I will send you some or talk to me at some of the upcoming conferences.

The sticker design
The sticker design
]]>
hello diff --git a/blog/tags.html b/blog/tags.html index 2f752d66..e4703889 100644 --- a/blog/tags.html +++ b/blog/tags.html @@ -21,14 +21,14 @@ - - - + + +
-

Tags

- - +

Tags

+ + \ No newline at end of file diff --git a/blog/tags/hello.html b/blog/tags/hello.html index dbd870cb..22f6ca0f 100644 --- a/blog/tags/hello.html +++ b/blog/tags/hello.html @@ -21,14 +21,18 @@ - - - + + +
-

One post tagged with "hello"

View All Tags

· One min read
Steffen Vogel

Hello, welcome to the cunīcu blog. We will start posting some updates here soon.

- - +

One post tagged with "hello"

View All Tags

· 2 min read
Steffen Vogel

Hello, welcome to the first post in the cunīcu project blog!

While the project is still in its infancy there are some updates in TL;DR.

First release

We are planning to publish the first official release within the next 4-10 weeks 🎉. +The release pipeline, packaging and self-update feature and more has already been implemented. +We just need to finish the last features and do quite some more testing.

Website, Docs and Twitter

The project has now its dedicated website, GitHub organization and Twitter handle (@cunicuVPN). +Feel free to follow us there for updates!

You might also have realized that the project name has changed. We decided to rebrand from the previous name wice to avoid any potential trademark issues with the WireGuard project as well as another small German company named WICE. +The project name cunīcu [kʊˈniːkʊ] is derived from the latin noun cunīculus which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as cunīcu builds tunnels between otherwise hard to reach network locations.

This also gave us the opportunity to redesign the logo which you find further down in the sticker design.

Stickers

We have stickers! Just drop me a mail at 📧 info@cunicu.li and I will send you some or talk to me at some of the upcoming conferences.

The sticker design
The sticker design
+ + \ No newline at end of file diff --git a/blog/welcome.html b/blog/welcome.html index e56b42d3..f6996ac5 100644 --- a/blog/welcome.html +++ b/blog/welcome.html @@ -3,7 +3,7 @@ -Welcome | cunīcu +Welcome | cunīcu @@ -21,14 +21,18 @@ - - - + + +
-

Welcome

· One min read
Steffen Vogel

Hello, welcome to the cunīcu blog. We will start posting some updates here soon.

- - +

Welcome

· 2 min read
Steffen Vogel

Hello, welcome to the first post in the cunīcu project blog!

While the project is still in its infancy there are some updates in TL;DR.

First release

We are planning to publish the first official release within the next 4-10 weeks 🎉. +The release pipeline, packaging and self-update feature and more has already been implemented. +We just need to finish the last features and do quite some more testing.

Website, Docs and Twitter

The project has now its dedicated website, GitHub organization and Twitter handle (@cunicuVPN). +Feel free to follow us there for updates!

You might also have realized that the project name has changed. We decided to rebrand from the previous name wice to avoid any potential trademark issues with the WireGuard project as well as another small German company named WICE. +The project name cunīcu [kʊˈniːkʊ] is derived from the latin noun cunīculus which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as cunīcu builds tunnels between otherwise hard to reach network locations.

This also gave us the opportunity to redesign the logo which you find further down in the sticker design.

Stickers

We have stickers! Just drop me a mail at 📧 info@cunicu.li and I will send you some or talk to me at some of the upcoming conferences.

The sticker design
The sticker design
+ + \ No newline at end of file diff --git a/docs.html b/docs.html index 328ae44c..d6946156 100644 --- a/docs.html +++ b/docs.html @@ -21,24 +21,28 @@ - - - + + +
-

cunīcu logo

GitHub Workflow Status +

cunīcu logo

GitHub Workflow Status goreportcard Codacy grade Codecov License GitHub go.mod Go version -Go Reference

danger

🚧 cunīcu is currently still in an Alpha state and not usable yet

cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.

It relies on the awesome pion/ice package for the interactive connectivity establishment as well as bundles the Go user-space implementation of WireGuard in a single binary for environments in which WireGuard kernel support has not landed yet.

Getting started

To use cunīcu follow these steps on each host:

  1. Install cunīcu
  2. Configure your WireGuard interfaces using wg, wg-quick or NetworkManager
  3. Start the cunīcu daemon by running: sudo cunicu daemon

Make sure that in step 2. you have created WireGuard keys and exchanged them by hand between the hosts. +Go Reference

cunīcu is currently still in an Alpha state and not usable yet 🚧

cunīcu is a user-space daemon managing WireGuard® interfaces to establish a mesh of peer-to-peer VPN connections in harsh network environments.

To achieve this, cunīcu utilizes a signaling layer to exchange peer information such as public encryption keys, hostname, advertised networks and reachability information to automate the configuration of the networking links. +From a user perspective, cunīcu alleviates the need of manual configuration such as exchange of public keys, IP addresses, endpoints, etc.. +Hence, it adopts the design goals of the WireGuard project, to be simple and easy to use.

Thanks to Interactive Connectivity Establishment (ICE), cunīcu is capable to establish direct connections between peers which are located behind NAT firewalls such as home routers. +In situations where ICE fails, or direct UDP connectivity is not available, cunīcu falls back to using TURN relays to reroute traffic over an intermediate hop or encapsulate the WireGuard traffic via TURN-TCP.

It relies on the awesome pion/ice package for ICE as well as bundles the a Go user-space implementation of WireGuard in a single binary for systems in which WireGuard kernel support has not landed yet.

With these features, cunīcu can be used to quickly build multi-agent systems or connect field devices such as power grid monitoring infrastructure into a fully connected mesh. +Within the ERIGrid 2.0 project, cunīcu is used to interconnect smart grid laboratories for geographically distributed simulation of energy systems.

The project is currently actively developed by Steffen Vogel at the Institute for Automation of Complex Power Systems (ACS) of RWTH Aachen University

Getting started

To use cunīcu follow these steps on each host:

  1. Install cunīcu
  2. Configure your WireGuard interfaces using wg, wg-quick or NetworkManager
  3. Start the cunīcu daemon by running: sudo cunicu daemon

Make sure that in step 2. you have created WireGuard keys and exchanged them by hand between the hosts. cunīcu does not (yet) discover available peers. You are responsible to add the peers to the WireGuard interface by yourself.

After the cunīcu daemons have been started, they will attempt to discover valid endpoint addresses using the ICE protocol (e.g. contacting STUN servers). These ICE candidates are then exchanged via the signaling server and cunīcu will update the endpoint addresses of the WireGuard peers accordingly. -Once this has been done, the cunīcu logs should show a line state=connected.

Documentation

Documentation of cunīcu can be found in the docs/ directory.

Authors

  • Steffen Vogel (@stv0g, Institute for Automation of Complex Power Systems, RWTH Aachen University)

Join us

Please feel free to join our Slack channel #cunicu in the Gophers workspace and say 👋.

Name

The project name cunīcu [kʊˈniːkʊ] is derived from the latin noun cunīculus which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as cunīcu builds tunnels between otherwise hard to reach network locations. -It has been changed from the former name wice in order to broaden the scope of the project and avoid any potential trademark violations.

License

cunīcu is licensed under the Apache 2.0 license.

Copyright 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University

Funding acknowledgement

European Flag

The development of cunīcu has been supported by the ERIGrid 2.0 project of the H2020 Programme under Grant Agreement No. 870620

Trademark

WireGuard and the WireGuard logo are registered trademarks of Jason A. Donenfeld.

- - +Once this has been done, the cunīcu logs should show a line state=connected.

Authors

  • Steffen Vogel (@stv0g, Institute for Automation of Complex Power Systems, RWTH Aachen University)

Join us

Please feel free to join our Slack channel #cunicu in the Gophers workspace and say 👋.

Name

The project name cunīcu [kʊˈniːkʊ] is derived from the latin noun cunīculus which means rabbit, a rabbit burrow or underground tunnel. We have choosen it as a name for this project as cunīcu builds tunnels between otherwise hard to reach network locations. +It has been changed from the former name wice in order to broaden the scope of the project and avoid any potential trademark violations.

License

cunīcu is licensed under the Apache 2.0 license.

Copyright 2022 Institute for Automation of Complex Power Systems, RWTH Aachen University

Funding acknowledgement

EONERC Logo

The project is currently actively developed by Steffen Vogel at the Institute for Automation of Complex Power Systems (ACS) of RWTH Aachen University

European Flag The development of cunīcu has been supported by the ERIGrid 2.0 project of the H2020 Programme under Grant Agreement No. 870620

Trademark

WireGuard and the WireGuard logo are registered trademarks of Jason A. Donenfeld.

+ + \ No newline at end of file diff --git a/docs/comparison.html b/docs/comparison.html index ebdca067..5d3062d8 100644 --- a/docs/comparison.html +++ b/docs/comparison.html @@ -21,16 +21,16 @@ - - - + + +
-

Comparison with other P2P VPN solutions

There exist a suite of other peer-to-peer VPN solutions comparable to cunīcu:

NameCommercial
Tinc-VPN
weron
Tailscale
Zerotier
netbird (formerly Wiretrustee)

| wg-dynamic +

- - +| Netmaker | |

You might also want to have a look at @HarvsG WireGuardMeshes comparison.

+ + \ No newline at end of file diff --git a/docs/config-reference.html b/docs/config-reference.html new file mode 100644 index 00000000..8fc78e93 --- /dev/null +++ b/docs/config-reference.html @@ -0,0 +1,34 @@ + + + + + +Configuration Reference | cunīcu + + + + + + + + + + + + + + +
+

Configuration Reference

/etc/cunicu.yaml
# An interval at which cunīcu will periodically check for added,
# removed or modified WireGuard interfaces.
watch_interval: 1s

## Signaling backends
#
# These backends are used for exchanging control-plane messages
# between the peers.
# E.g. ICE candidates, Peer information
backends:
- grpc://signal.cunicu.li:443
# - grpc://localhost:8080?insecure=true&skip_verify=true
# - k8s:///path/to/your/kubeconfig.yaml?namespace=default


# RPC control socket settings
rpc:
# Path to a Unix socket for management
# and monitoring of the cunicu daemon.
socket: /var/run/cunicu.sock

# Start of cunīcu daemon will block until
# its unblocked via the control socket.
# Mostly useful for testing automation
wait: false


#### Interface settings start here
# The following settings can be overwritten for each interface
# using the 'interfaces' settings (see below).
# The following settings will be used as default.

## WireGuard interface settings
#
# These settings configure WireGuard specific settings
# of the interface.

# A base64 private key generated by wg genkey.
# Will be automatically generated if not provided.
private_key: KLoqDLKgoqaUkwctTd+Ov3pfImOfadkkvTdPlXsuLWM=

# Create WireGuard interfaces using bundled wireguard-go
# user space implementation. This will be the default
# if there is no WireGuard kernel module present.
userspace: false

# A range constraint for an automatically assigned
# selected listen port.
# If the interface has no listen port specified, cunīcu
# will use the first available port from this range.
listen_port_range:
min: 52820
max: 65535

# A 16-bit port for listening. Optional;
# If not specified, first available port from listen_port_range
# will be used.
listen_port: 51825

# A 32-bit fwmark for outgoing packets which can be used
# for Netfilter or TC classification.
# If set to 0 or "off", this option is disabled.
# May be specified in hexadecimal by prepending "0x". Optional.
fwmark: 0x1000

# The remote WireGuard peers provided as a dictionary
# The keys of this dictionary are used as names for the peers
peers:
test:
# A base64 public key calculated by wg pubkey from a private key,
# and usually transmitted out of band
# to the author of the configuration file.
public_key: FlKHqqQQx+bTAq7+YhwEECwWRg2Ih7NQ48F/SeOYRH8=

# A base64 pre-shared key generated by wg genpsk.
# Optional, and may be omitted.
# This option adds an additional layer of symmetric-key
# cryptography to be mixed into the already existing
# public-key cryptography, for post-quantum resistance.
preshared_key: zu86NBVsWOU3cx4UKOQ6MgNj3gv8GXsV9ATzSemdqlI=

# A pre-shared passphrase which is used to derive a preshared key.
# cunīcu is using Argon2id as the key derivation function.
preshared_key_passphrase: some-shared-passphrase

# An endpoint IP or hostname, followed by a colon,
# and then a port number. This endpoint will be updated
# automatically to the most recent source IP address and
# port of correctly authenticated packets from the peer.
# If provided, no endpoint discovery will be performed.
endpoint: vpn.example.com:51820

# A time duration, between 1 and 65535s inclusive, of how
# often to send an authenticated empty packet to the peer
# for the purpose of keeping a stateful firewall or NAT mapping
# valid persistently. For example, if the interface very rarely
# sends traffic, but it might at anytime receive traffic from a
# peer, and it is behind NAT, the interface might benefit from
# having a persistent keepalive interval of 25 seconds.
# If set to zero, this option is disabled.
# By default or when unspecified, this option is off.
# Most users will not need this. Optional.
persistent_keepalive: 120s

# A comma-separated list of IP (v4 or v6) addresses with
# CIDR masks from which incoming traffic for this peer is
# allowed and to which outgoing traffic for this peer is directed.
# The catch-all 0.0.0.0/0 may be specified for matching
# all IPv4 addresses, and ::/0 may be specified for matching
# all IPv6 addresses. May be specified multiple times.
allowed_ips:
- 192.168.5.0/24

## Basic interface settings
#

# The Maximum Transfer Unit of the WireGuard interface.
# If not specified, the MTU is automatically determined from
# the endpoint addresses or the system default route,
# which is usually a sane choice.
# However, to manually specify an MTU to override this
# automatic discovery, this value may be specified explicitly.
mtu: 1420

# A list of IP (v4 or v6) addresses (optionally with CIDR masks)
# to be assigned to the interface.
# May be specified multiple times.
addresses:
- 10.10.0.1/24

# A list of prefixes which cunicu uses to derive local addresses
# from the interfaces public key
prefixes:
- fc2f:9a4d::/32
- 10.237.0.0/16

# A list of IP (v4 or v6) addresses to be set as the interface's
# DNS servers, or non-IP hostnames to be set as the interface's
# DNS search domains.
# May be specified multiple times.
# Upon bringing the interface up, this runs `resolvconf -a tun.INTERFACE -m 0 -x`
# and upon bringing it down, this runs `resolvconf -d tun.INTERFACE`.
# If these particular invocations of resolvconf(8) are undesirable,
# custom hooks can be used instead.
dns:
- 1.1.1.1


## Config synchronization
#
# Synchronize local WireGuard interface configuration with wg(8) config-files.

# Enable config synchronization
sync_config: false

# Keep watching for changes in the configuration and apply them on-the-fly
watch_config: false

## Route Synchronization
#
# Synchronize the kernel routing table with WireGuard's AllowedIPs setting
#
# It checks for routes in the kernel routing table which have a peers address
# as next-hop and adds those routes to the AllowedIPs setting of the respective peer.
#
# In reverse, also networks listed in a peers AllowedIPs setting will be installed as a
# kernel route with the peers address as the routes next-hop.

# Enable route synchronization
sync_routes: true

# Kernel routing table which is used
# On Linux, see /etc/iproute2/rt_tables for table ids and names
routing_table: 254

# Keep watching the for changes in the kernel routing table via netlink multicast group.
watch_routes: true


## /etc/hosts synchronization
#
# Synchronizes the local /etc/hosts file with host names and addresses of connected peers.

# Enable hosts file synchronization
sync_hosts: true

# The domain name which is appended to each of the peer host names
domain: wg-local


## Peer discovery
#
# Peer discovery finds new peers within the same community and adds them to the respective interface

# Enable/disable peer discovery
discover_peers: true

# The hostname which gets advertised to remote peers
hostname: my-node

# A passphrase shared among all peers of the same community
community: "some-common-password"

# Networks which are reachable via this peer and get advertised to remote peers
# These will be part of this interfaces AllowedIPs at the remote peers.
networks:
- 192.168.1.0/24
- 10.2.0.0/24

# A list of WireGuard public keys which are accepted peers
# If not configured, all peers will be accepted.
whitelist:
- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=

# A list if WireGuard public keys which are rejected as peers
blacklist:
- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=


## Endpoint discovery
#
# Endpoint discovery uses Interactive Connectivity Establishment (ICE) as used by WebRTC to
# gather a list of candidate endpoints and performs connectivity checks to find a suitable
# endpoint address which can be used by WireGuard

# Enable/disable endpoint discovery
discover_endpoints: true

# Interactive Connectivity Establishment (ICE) parameters
ice:
# A list of STUN and TURN servers used by ICE.
urls:
# Community provided STUN/TURN servers
- grpc://relay.cunicu.li

# Public STUN servers
- stun:stun3.l.google.com:19302
- stun:relay.webwormhole.io
- stun:stun.sipgate.net
- stun:stun.ekiga.net
- stun:stun.services.mozilla.com

# Caution: OpenRelay servers are located in Ontario, Canada.
# Beware of the latency!
# See also: https://www.metered.ca/tools/openrelay/
# - turn:openrelayproject:openrelayproject@openrelay.metered.ca:80
# - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443
# - turn:openrelayproject:openrelayproject@openrelay.metered.ca:443?transport=tcp

# Credentials for STUN/TURN servers configured above.
username: ""
password: ""

# Allow connections to STUNS/TURNS servers for which we can not validate TLS certificates.
insecure_skip_verify: false

# Limit available network and candidate types.
# network_types: [udp4, udp6, tcp4, tcp6]
# candidate_types: [host, srflx, prflx, relay]

# A glob(7) pattern to match interfaces against which are used to gather ICE candidates (e.g. \"eth[0-9]\").
interface_filter: "*"

# Lite agents do not perform connectivity check and only provide host candidates.
lite: false

# Enable local Multicast DNS discovery.
mdns: false

# Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.
# If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.
max_binding_requests: 7

# SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.
# This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).
# In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.
# nat_1to1_ips:
# - 10.10.2.3

# Limit the port range used by ICE
port_range:
# Minimum port for allocation policy for ICE sockets (range: 0-65535)
min: 49152

# Maximum port for allocation policy for ICE sockets (range: 0-65535)
max: 65535

# Interval at which the agent performs candidate checks in the connecting phase
check_interval: 200ms

# Time until an Agent transitions disconnected.
# If the duration is 0, the ICE Agent will never go to disconnected
disconnected_timeout: 5s

# Time until an Agent transitions to failed after disconnected
# If the duration is 0, we will never go to failed.
failed_timeout: 5s

# Time to wait before ICE restart
restart_timeout: 5s

# Interval between STUN keepalives (should be less then connection timeout above).
# Af the interval is 0, we never send keepalive packets
keepalive_interval: 2s


## Hook callbacks
#
# Hook callback can be used to invoke subprocesses
# or web-hooks on certain events within cunīcu.
hooks:

# An 'exec' hook spawn a subprocess for each event.
- type: exec
command: ../../scripts/hook.sh

# Prepend additional arguments
args: []

# Pass JSON object via Stdin to command
stdin: true

# Set environment variables for invocation
env:
COLOR: "1"

# A 'web' hook performs HTTP requests for each event.
- type: web

# URL of the webhook endpoint
url: https://my-webhook-endpoint.com/api/v1/webhook

# HTTP method of the request
method: POST

# Additional HTTP headers which are used for the requests
headers:
User-Agent: ahoi
Authorization: Bearer XXXXXX


## Interface specific settings / overwrites.
#
# Most of the top-level settings of this configuration file can be customized
# for specific interfaces.
#
# The keys of the 'interfaces' dictionary are glob(7) patterns which will be
# matched against the interface names.
# Settings are overlayed in the order in which the keys are provided in the
# interface map.
#
# Keys which are not a glob(8) pattern, will be created as new interfaces if
# they do not exist already in the system.
interfaces:
# A simple interface specific setting
# cunicu will set the private key of interface 'wg0' to the provided value.
wg0:
discover_endpoints: false

# No settings are overwritten. But since this is not a glob pattern,
# A new interface named 'wg1' will be created if it does not exist yet.
# The same applies to the previous interface 'wg0'
wg1: {}

# Create a new interface using the wireguard-go user-space implementation.
wg2:
userspace: true

# This pattern configuration will be applied to all interfaces which match the pattern.
# This rule will not create any new interfaces.
wg-work-*:
community: "mysecret-pass"

ice:
urls:
- turn:mysecret.turn-server.com

# Multiple patterns are supported and evaluated in the order they a defined in the configuration file.
#
wg-work-external-*:
ice:
network_types: [ udp6 ]
+ + + + \ No newline at end of file diff --git a/docs/config.html b/docs/config.html new file mode 100644 index 00000000..e559bc49 --- /dev/null +++ b/docs/config.html @@ -0,0 +1,37 @@ + + + + + +Configuration | cunīcu + + + + + + + + + + + + + + +
+

Configuration

This page describes the ways of configuring the cunīcu daemon (cunicu daemon).

Command Line Flags

Basic options of cunicu daemon can be configured by passing command line arguments. +A full overview is available in its manpage.

Configuration File

For more advanced setups, a configuration file can be used for a persistent configuration:

Please have a look at the example configuration file for a full reference of all available settings.

Environment Variables

All the settings from the configuration file can also be passed via environment variables by following the following rules:

  • Convert the setting name to uppercase
  • Prefixing the setting name with CUNICU_
  • Nested settings are separated by underscores

Example: The setting epdisc.ice.max_binding_requests can be set by the environment variable CUNICU_ENDPOINT_DISC_ICE_MAX_BINDING_REQUESTS

note

Setting lists such as epdisc.ice.urls or backends can currently not be set via environment variables.

At Runtime

cunīcu's configuration can also be updated at runtime, elevating the need to restart the daemon to avoid interruption of connectivity.

Please have a look at the cunicu config commands.

DNS Auto-configuration

cunīcu als supports retrieving parts of the configuration via DNS lookups. +This is useful for corporate environments in which a fleet of cunīcu daemon need to be configured centrally.

In this case cunicu daemon is started one or more --domain example.com parameters to look for the following DNS records to obtain its configuration.

STUN and TURN servers used for ICE are retrieved by SVR lookups and other cunīcu settings are retrieved via SRV and TXT lookups:

_stun._udp.example.com.  3600 IN SRV 10 0 3478 stun.example.com.
_stuns._tcp.example.com. 3600 IN SRV 10 0 3478 stun.example.com.
_turn._udp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.
_turn._tcp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.
_turns._tcp.example.com. 3600 IN SRV 10 0 5349 turn.example.com.

example.com. 3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"
example.com. 3600 IN TXT "cunicu-backend=grpc://signal.example.com:443"
example.com. 3600 IN TXT "cunicu-community=my-community-password"
example.com. 3600 IN TXT "cunicu-ice-username=user1"
example.com. 3600 IN TXT "cunicu-ice-password=pass1"
note

The cunicu-backend and cunicu-config TXT records can be provided multiple times. Others not.

Remote Configuration Files

When cunicu daemon can be started with --config options pointing to HTTPS URIs:

cunicu daemon --config http://example.com/cunicu.yaml

cunīcu will download all configuration files in the order they are specified on the command line and merge them subsequently.

This feature can be combined with the DNS auto-configuration method by providing a TXT record pointing to the configuration file:

example.com.             3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"
note

Remote configuration files must be fetched via HTTPS if they are not hosted locally and required a trusted server certificate.

Auto-reload

cunīcu watches local and remote files as well as the DNS configuration for changes and automatically reloads its configuration from them whenever a change has been detected.

For local files the change is detected by inotify(7). +For remote sources, cunīcu periodically checks the Last-Modified and Etag headers in case of HTTP files or the DNS zone's SOA serial number to detect changes without request the full remote source.

note

Configuration file distributed via conicu-config DNS TXT record are not yet monitored for changes.

+ + + + \ No newline at end of file diff --git a/docs/configuration.html b/docs/configuration.html deleted file mode 100644 index 219fa2e9..00000000 --- a/docs/configuration.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -Configuration | cunīcu - - - - - - - - - - - - - - -
-

Configuration

This page describes the ways of configuring the cunicu daemon (cunicu daemon).

Command Line Flags

The cunicu daemon can almost fully be configured by passing command line arguments. -A full overview is available in its manpage.

Configuration File

Alternatively a configuration file can be used for a persistent configuration:

cunicu.yaml
watch_interval: 1s

backends:
- grpc://localhost:8080?insecure=true&skip_verify=true
- k8s:///path/to/your/kubeconfig.yaml?namespace=default

# WireGuard settings
wireguard:
# Create WireGuard interfaces using bundled wireguard-go Userspace implementation
# This will be the default if there is no WireGuard kernel module present.
userspace: false

# Ignore WireGuard interface which do not match this regular expression
interface_filter: .*

# A list of WireGuard interfaces which should be configured
interfaces:
- wg-vpn

# Port range for ListenPort setting of newly created WireGuard interfaces
# cunīcu will select the first available port in this range.
port:
min: 52820
max: 65535

# Control socket settings
socket:
path: /var/run/cunicu.sock

# Start of cunīcu daemon will block until its unblocked via the control socket
# Mostly useful for testing automation
wait: false

# Synchronize WireGuard interface configurations with wg(8) config-files.
config_sync:
enabled: false

# Directory where Wireguard configuration files are located.
# We expect the same format as used by wg(8) and wg-quick(8).
# Filenames must match the interface name with a '.conf' suffix.
path: /etc/wireguard

# Watch the configuration files for changes and apply them accordingly.
watch: false

# Synchronize WireGuard AllowedIPs with Kernel routing table
route_sync:
enabled: true

table: main

# Discovery of other WireGuard peers
peer_disc:
enabled: true

# A list of WireGuard public keys which are accepted peers
whitelist:
- coNsGPwVPdpahc8U+dbbWGzTAdCd6+1BvPIYg10wDCI=
- AOZzBaNsoV7P8vo0D5UmuIJUQ7AjMbHbGt2EA8eAuEc=

# A passphrase shared among all peers of the same community
community: "some-common-password"

# Discovery of WireGuard endpoint addressesendpoint_disc:
enabled: true

# Interactive Connectivity Establishment parameters
ice:
# A list of STUN and TURN servers used by ICE
urls:
- stun:stun.l.google.com:19302

# Credentials for STUN/TURN servers configured above
username: ""
password: ""

# Allow connections to STUNS/TURNS servers for which
# we cant validate their TLS certificates
insecure_skip_verify: false

# Limit available network and candidate types
network_types: [udp4, udp6, tcp4, tcp6]
candidate_types: [host, srflx, prflx ,relay]

# Regular expression whitelist of interfaces which are used to gather ICE candidates.
interface_filter: .*

# Lite agents do not perform connectivity check and only provide host candidates.
lite: false

# Attempt to find candidates via mDNS discovery
mdns: false

# Sets the max amount of binding requests the agent will send over a candidate pair for validation or nomination.
# If after the the configured number, the candidate is yet to answer a binding request or a nomination we set the pair as failed.
max_binding_requests: 7

# SetNAT1To1IPs sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used.
# This is useful when you are host a server using Pion on an AWS EC2 instance which has a private address, behind a 1:1 DNAT with a public IP (e.g. Elastic IP).
# In this case, you can give the public IP address so that Pion will use the public IP address in its candidate instead of the private IP address.
nat_1to1_ips: []

# Limit the port range used by ICE
port:
min: 49152
max: 65535

# The check interval controls how often our task loop runs when in the connecting state.
check_interval: 200ms

# If the duration is 0, the ICE Agent will never go to disconnected
disconnected_timeout: 5s

# If the duration is 0, we will never go to failed.
failed_timeout: 5s
restart_timeout: 5s

# Determines how often should we send ICE keepalives (should be less then connection timeout above).
# A keepalive interval of 0 means we never send keepalive packets
keepalive_interval: 2s

Environment Variables

All the settings from the configuration file can also be passed via environment variables by following the following rules:

  • Convert the setting name to uppercase
  • Prefixing the setting name with CUNICU_
  • Nested settings are separated by underscores

Example: The setting endpoint_disc.ice.max_binding_requests can be set by the environment variable CUNICU_ENDPOINT_DISC_ICE_MAX_BINDING_REQUESTS

Note: Setting lists such as endpoint_disc.ice.urls or backends can currently not be set via environment variables.

DNS Auto-configuration

cunīcu als supports retrieving parts of the configuration via DNS lookups.

When cunicu daemon is started with a --domain example.com parameter it will look for the following DNS records to obtain its configuration.

STUN and TURN servers used for ICE are retrieved by SVR lookups and other cunīcu settings are retrieved via TXT lookups:

_stun._udp.example.com.  3600 IN SRV 10 0 3478 stun.example.com.
_stuns._tcp.example.com. 3600 IN SRV 10 0 3478 stun.example.com.
_turn._udp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.
_turn._tcp.example.com. 3600 IN SRV 10 0 3478 turn.example.com.
_turns._tcp.example.com. 3600 IN SRV 10 0 5349 turn.example.com.

example.com. 3600 IN TXT "cunicu-backend=p2p"
example.com. 3600 IN TXT "cunicu-peer-disc-community=my-community-password"
example.com. 3600 IN TXT "cunicu-endpoint-disc-ice-username=user1"
example.com. 3600 IN TXT "cunicu-endpoint-disc-ice-password=pass1"
example.com. 3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"

Note: The cunicu-backend and cunicu-config TXT records can be provided multiple times. Others not.

Remote Configuration File

When cunicu daemon can be started with --config options pointing to HTTPS URIs. -cunīcu will download all configuration files in the order they are specified on the command line and merge them subsequently.

This feature can be combined with the DNS auto-configuration method by providing a TXT record pointing to the configuration file:

example.com.             3600 IN TXT "cunicu-config=https://example.com/cunicu.yaml"

Note: Remote configuration files must be fetched via HTTPS if they are not hosted locally and required a trusted server certificate.

- - - - \ No newline at end of file diff --git a/docs/design.html b/docs/design.html index 7f5b66a3..9e64c12b 100644 --- a/docs/design.html +++ b/docs/design.html @@ -3,7 +3,7 @@ -Design | cunīcu +Design | cunīcu @@ -21,14 +21,14 @@ - - - + + +
-

Design

Objectives

  • Encrypt all signaling messages

  • Plug-able signaling backends:

    • GRPC
    • Kubernetes API-server
    • WebSocket
  • Support Trickle ICE

  • Support ICE restart

  • Support ICE-TCP

  • Encrypt exchanged ICE offers with WireGuard keys

  • Seamless switch between ICE candidates and relays

  • Zero configuration

    • Alleviate users of exchanging endpoint IPs & ports
  • Enables direct communication of WireGuard peers behind NAT / UDP-blocking firewalls

  • Single-binary, zero dependency installation

  • Support for user and kernel-space WireGuard implementations

  • Zero performance impact

    • Kernel-side filtering / redirection of WireGuard traffic
    • Fallback to user-space proxying only if no Kernel features are available
  • Minimized attack surface

    • Drop privileges after initial configuration
  • Compatible with existing WireGuard configuration utilities like:

  • Monitoring for new WireGuard interfaces and peers

    • Inotify for new UAPI sockets in /var/run/wireguard
    • Netlink subscription for link updates (patch is pending)

Architecture

  • RFC6544 TCP Candidates with Interactive Connectivity Establishment (ICE)
  • RFC8838 Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol
  • RFC8445 Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal
  • RFC8863 Interactive Connectivity Establishment Patiently Awaiting Connectivity (ICE PAC)
  • RFC8839 Session Description Protocol (SDP) Offer/Answer Procedures for Interactive Connectivity Establishment (ICE)
  • RFC6062 Traversal Using Relays around NAT (TURN) Extensions for TCP Allocations
  • RFC8656 Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)
  • RFC8489 Session Traversal Utilities for NAT (STUN)
  • RFC8866 SDP: Session Description Protocol
  • RFC3264 An Offer/Answer Model with the Session Description Protocol (SDP)
- - +

Design

Architecture

Objectives

  • Encrypt all signaling messages

  • Plug-able signaling backends:

    • GRPC
    • Kubernetes API-server
    • WebSocket
  • Support Trickle ICE

  • Support ICE restart

  • Support ICE-TCP

  • Encrypt exchanged ICE offers with WireGuard keys

  • Seamless switch between ICE candidates and relays

  • Zero configuration

    • Alleviate users of exchanging endpoint IPs & ports
  • Enables direct communication of WireGuard peers behind NAT / UDP-blocking firewalls

  • Single-binary, zero dependency installation

  • Support for user and kernel-space WireGuard implementations

  • Zero performance impact

    • Kernel-side filtering / redirection of WireGuard traffic
    • Fallback to user-space proxying only if no Kernel features are available
  • Minimized attack surface

    • Drop privileges after initial configuration
  • Compatible with existing WireGuard configuration utilities like:

  • Monitoring for new WireGuard interfaces and peers

    • Inotify for new UAPI sockets in /var/run/wireguard
    • Netlink subscription for link updates (patch is pending)
  • RFC6544 TCP Candidates with Interactive Connectivity Establishment (ICE)
  • RFC8838 Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol
  • RFC8445 Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal
  • RFC8863 Interactive Connectivity Establishment Patiently Awaiting Connectivity (ICE PAC)
  • RFC8839 Session Description Protocol (SDP) Offer/Answer Procedures for Interactive Connectivity Establishment (ICE)
  • RFC6062 Traversal Using Relays around NAT (TURN) Extensions for TCP Allocations
  • RFC8656 Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)
  • RFC8489 Session Traversal Utilities for NAT (STUN)
  • RFC8866 SDP: Session Description Protocol
  • RFC3264 An Offer/Answer Model with the Session Description Protocol (SDP)
  • RFC7064 URI Scheme for the Session Traversal Utilities for NAT (STUN) Protocol
  • RFC7065 Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers
+ + \ No newline at end of file diff --git a/docs/development.html b/docs/development.html index e73f6939..4195ac56 100644 --- a/docs/development.html +++ b/docs/development.html @@ -3,7 +3,7 @@ -Development | cunīcu +Development | cunīcu @@ -21,14 +21,18 @@ - - - + + +
-

Development

cunīcu is written in 100% Go and as such we heavily rely on the awesome tooling and packages for Golang:

  • GoReleaser for release automation
  • Ginkgo and Gomega for testing
  • Pion for its ICE, STUN, TURN implementation
  • Gont for end-to-end testing in various network topologies

Furthermore use the following services to manage our development:

  • GitHub for source code management and CI pipelines
  • Codacy for code quality checks
  • Codecov for code coverage analysis
- - +

Development

cunīcu is written almost completely in Go and heavily relies on awesome tooling and packages for Golang:

  • GoReleaser for release automation
  • Ginkgo and Gomega for testing
  • Pion for its ICE, STUN, TURN implementation
  • Gont for end-to-end testing in various network topologies

Furthermore use the following services to manage our development:

  • GitHub for source code management and CI pipelines
  • Codacy for code quality checks
  • Codecov for code coverage analysis

Testing

We aim to maintain a test coverage above 80% of the lines of code. +Please make sure that your merge requests include tests which do not lower the coverage percentage.

cunīcu's code-base is tested using the Ginkgo/Gomega testing framework. +Unit tests can be found alongside the code in files with a _test.go suffix. +End-to-end (e2e) integration tests can be found in the test/e2e directory.

The e2e tests use Gont to construct virtual network environment using Linux's net namespaces and veth point-to-point links. +This allows us to test cunīcu in both simple and complex network topologies including, L2 switches, L3 routers, firewalls and NAT boxes.

+ + \ No newline at end of file diff --git a/docs/development/proxying.html b/docs/development/proxying.html index aaa2d5d0..3750bb17 100644 --- a/docs/development/proxying.html +++ b/docs/development/proxying.html @@ -21,13 +21,13 @@ - - - + + +
-

Proxying

cunīcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports.

Kernel WireGuard module

User-space

For each WG peer a new local UDP socket is opened. +

Proxying

cunīcu implements multiple ways of running an ICE agent alongside WireGuard on the same UDP ports.

Kernel WireGuard module

User-space

For each WG peer a new local UDP socket is opened. cunīcu will update the endpoint address of the peer to this the local address of the new sockets.

WireGuard traffic is proxied by cunīcu between the local UDP and the ICE socket.

RAW Sockets + BPF filter (Kernel)

We allocate a single Linux RAW socket and assign a eBPF filter to this socket which will only match STUN traffic to a specific UDP port. UDP headers are parsed/produced by cunīcu. cunīcu uses a UDPMux to mux all peers ICE Agents over this single RAW socket.

NFtables port-redirection (Kernel)

Two Nftables (nft) rules are added to filter input & output chains respectively. @@ -35,8 +35,8 @@ The input rule will match all non-STUN traffic directed at the local port of the The output rule will mach all traffic originating from the listen port of the WG interface and directed to the port of the remote candidate and rewrites the source port to the port of the local ICE candidate.

WireGuard traffic passes only through the Netfilter chains and remains inside the kernel. Only STUN binding requests are passed to cunīcu.

$ sudo nft list ruleset
table inet cunicu {
chain ingress {
type filter hook input priority raw; policy accept;
udp dport 37281 @th,96,32 != 554869826 notrack udp dport set 1001
}

chain egress {
type filter hook output priority raw; policy accept;
udp sport 1001 udp dport 38767 notrack udp sport set 37281
}
}

IPTables port-redirection

Similar to NFTables port-natting by using the legacy IPTables API.

User-space WireGuard implementation

User-space Proxy

Just like for the Kernel WireGuard module, a dedicated UDP socket for each WG peer is created. cunīcu will update the endpoint address of the peer to this the local address of the new sockets.

WireGuard traffic is proxied by cunīcu between the local UDP and the ICE socket.

In-process socket

cunīcu implements wireguard-go's conn.Bind interface to handle WireGuard's network IO.

WireGuard traffic is passed directly between conn.Bind and Pion's ice.Conn. -No round-trip through the kernel stack is required.

Note: This variant only works for the compiled-in version of wireguard-go in cunīcu.

Flowchart

- - +No round-trip through the kernel stack is required.

note

This variant only works for the compiled-in version of wireguard-go in cunīcu.

Flowchart

+ + \ No newline at end of file diff --git a/docs/development/signaling.html b/docs/development/signaling.html index 6fe72a9f..aed29fe4 100644 --- a/docs/development/signaling.html +++ b/docs/development/signaling.html @@ -21,13 +21,13 @@ - - - + + +
-

Session Signaling

Lets assume two peers PaP_a & PbP_b are seeking to establish a ICE session.

The smaller public key (PK) of the two peers takes the role of the controlling agent. +

Session Signaling

Lets assume two peers PaP_a & PbP_b are seeking to establish a ICE session.

The smaller public key (PK) of the two peers takes the role of the controlling agent. In this example PA has the role of the controlling agent as: PK(Pa)<PK(Pb)PK(P_a) < PK(P_b).

Session Description

Session descriptions are exchanged by one or more the signaling backends via signaling envelopes which contain signaling messages. The envelopes are containers which encrypt the carried message via asymmetric cryptography using the public key of the recipient.

Both the envelope and the message are serialized using Protobuf.

Checkout the pkg/pb/signaling.proto for details.

Backends

cunīcu can support multiple backends for signaling session information such as session IDs, ICE candidates, public keys and STUN credentials.

Available backends

  • gRPC
  • Kubernetes API server

For the use within a Kubernetes cluster also a dedicated backend using the Kubernetes api-server is available. -Checkout the Backend interface for implementing your own backend.

Semantics

A backend must:

  • Must facilitate a reliable delivery envelopes between peers using their public keys as addresses.
  • Must support delivery of envelopes to a group of recipients (e.g. multicast).
  • May deliver the envelopes out-of-order.
  • May discard envelopes if the recipient is not yet known or reachable.
  • Shall be stateless. It shall not buffer or record any envelopes.

Interface

All signaling backends implement the rather simple signaling.Backend interface:

type Message = pb.SignalingMessage

type MessageHandler interface {
OnSignalingMessage(*crypto.PublicKeyPair, *Message)
}

type Backend interface {
io.Closer

// Publish a signaling message to a specific peer
Publish(ctx context.Context, kp *crypto.KeyPair, msg *Message) error

// Subscribe to messages send by a specific peer
Subscribe(ctx context.Context, kp *crypto.KeyPair, h MessageHandler) error

// Subscribe to all messages irrespectively of sender
SubscribeAll(ctx context.Context, sk *crypto.Key, h MessageHandler) error

// Returns the backends type identifier
Type() pb.BackendType
}
- - +Checkout the Backend interface for implementing your own backend.

Semantics

A backend must:

  • Must facilitate a reliable delivery envelopes between peers using their public keys as addresses.
  • Must support delivery of envelopes to a group of recipients (e.g. multicast).
  • May deliver the envelopes out-of-order.
  • May discard envelopes if the recipient is not yet known or reachable.
  • Shall be stateless. It shall not buffer or record any envelopes.

Interface

All signaling backends implement the rather simple signaling.Backend interface:

type Message = pb.SignalingMessage

type MessageHandler interface {
OnSignalingMessage(*crypto.PublicKeyPair, *Message)
}

type Backend interface {
io.Closer

// Publish a signaling message to a specific peer
Publish(ctx context.Context, kp *crypto.KeyPair, msg *Message) error

// Subscribe to messages send by a specific peer
Subscribe(ctx context.Context, kp *crypto.KeyPair, h MessageHandler) error

// Subscribe to all messages irrespectively of sender
SubscribeAll(ctx context.Context, sk *crypto.Key, h MessageHandler) error

// Returns the backends type identifier
Type() pb.BackendType
}
+ + \ No newline at end of file diff --git a/docs/development/todo.html b/docs/development/todo.html index 9e6c9779..5789c3be 100644 --- a/docs/development/todo.html +++ b/docs/development/todo.html @@ -21,14 +21,14 @@ - - - + + +
-

TODOs

Please also have a look at the current GitHub issues of the project.

- - +

TODOs

Please also have a look at the current GitHub issues of the project.

+ + \ No newline at end of file diff --git a/docs/features.html b/docs/features.html new file mode 100644 index 00000000..e2504668 --- /dev/null +++ b/docs/features.html @@ -0,0 +1,36 @@ + + + + + +Features | cunīcu + + + + + + + + + + + + + + +
+

Features

The cunīcu daemon supports many features which are implemented by separate software modules/packages. +This structure promotes the separation of concerns within the code-base and allows for use-cases in which only subsets of features are used. +E.g. we can use cunīcu for the post-quantum safe exchange of pre-shared keys without any of the other features like peer or endpoint discovery. With very few exceptions all of the features listed below can be used separately.

Currently, the following features are implemented as separate modules:

+ + + + \ No newline at end of file diff --git a/docs/features/autocfg.html b/docs/features/autocfg.html index e9f6804e..ff753877 100644 --- a/docs/features/autocfg.html +++ b/docs/features/autocfg.html @@ -3,7 +3,7 @@ -Auto-configuration | cunīcu +Auto-configuration | cunīcu @@ -21,14 +21,14 @@ - - - + + + - - +

Auto-configuration

The auto-configuration feature assigns link-local IP addresses to WireGuard interfaces as well as configures several other common settings such as MTU, IP addresses or DNS settings.

This feature automatically assigns each interface link-local IPv4 and IPv6 addresses derived from the interface's public key.

This enables peer-to-peer communication when no site-local or global addresses are assigned yet.

Address calculation

Addresses are generated by concatenating a well-known network prefix (fe80::/64, 169.254.0.0/16) with an host part derived from the public key PKPK of the peer/interface using the 64-bit SipHash64\mathrm{SipHash}_{64} hashing function:

H = SipHash64(PK)Hfold = (H0xFFFF)(H16)IPv6linklocal = {fe80:  H }/64IPv4linklocal = {169.254.  Hfold }/16\begin{align} H~=&~\mathrm{SipHash}_{64}(PK) \\ H_{fold}~=&~(H \land \mathrm{0xFFFF}) \barwedge (H \gg 16) \\ \mathrm{IPv6}_{link-local}~=&~\{ \mathrm{fe80:}~||~H~\} /64 \\ \mathrm{IPv4}_{link-local}~=&~\{ \mathrm{169.254.}~||~H_{fold}~\}/16 \\ \end{align}

This addresses calculation can be performed with the cunicu addresses sub-command.

Missing settings

The following settings are automatically assigned if they have not been set before:

  • Private Key: a new random private key will be generated.
  • Listen port: the next free port in the configured listen port range is used (see wireguard.listen_port_range setting).
  • MTU: is automatically determined from the endpoint addresses or the system default route.

Configuration

Section "autocfg" of /etc/cunicu.yaml

+ + \ No newline at end of file diff --git a/docs/features/cfgsync.html b/docs/features/cfgsync.html index e23c6e92..56681ce8 100644 --- a/docs/features/cfgsync.html +++ b/docs/features/cfgsync.html @@ -3,7 +3,7 @@ -Config-file Synchronization | cunīcu +Config-file Synchronization | cunīcu @@ -21,14 +21,14 @@ - - - + + + - - +

Config Synchronization

The config synchronization feature keeps interface configuration provided via configuration files in sync with the kernel.

Configuration

Section "cfgsync" of /etc/cunicu.yaml

+ + \ No newline at end of file diff --git a/docs/features/epdisc.html b/docs/features/epdisc.html index cb464eb8..397b2716 100644 --- a/docs/features/epdisc.html +++ b/docs/features/epdisc.html @@ -3,7 +3,7 @@ -Endpoint Discovery | cunīcu +Endpoint Discovery | cunīcu @@ -21,14 +21,14 @@ - - - + + + - - + + + \ No newline at end of file diff --git a/docs/features/hooks.html b/docs/features/hooks.html index 05af4943..3c30edbb 100644 --- a/docs/features/hooks.html +++ b/docs/features/hooks.html @@ -3,7 +3,7 @@ -Hooks | cunīcu +Hooks | cunīcu @@ -21,14 +21,14 @@ - - - + + + - - +

Hooks

The hooks feature allows the user to configure a list of hook functions which are triggered by certain events within the daemon.

Configuration

Section "hooks" of /etc/cunicu.yaml
## Hook callbacks
#
# Hook callback can be used to invoke subprocesses
# or web-hooks on certain events within cunīcu.
hooks:

# An 'exec' hook spawn a subprocess for each event.
- type: exec
command: ../../scripts/hook.sh

# Prepend additional arguments
args: []

# Pass JSON object via Stdin to command
stdin: true

# Set environment variables for invocation
env:
COLOR: "1"

# A 'web' hook performs HTTP requests for each event.
- type: web

# URL of the webhook endpoint
url: https://my-webhook-endpoint.com/api/v1/webhook

# HTTP method of the request
method: POST

# Additional HTTP headers which are used for the requests
headers:
User-Agent: ahoi
Authorization: Bearer XXXXXX
+ + \ No newline at end of file diff --git a/docs/features/hsync.html b/docs/features/hsync.html index 78223d9f..934a080f 100644 --- a/docs/features/hsync.html +++ b/docs/features/hsync.html @@ -3,7 +3,7 @@ -Hosts-file Synchronization | cunīcu +Hosts-file Synchronization | cunīcu @@ -21,14 +21,16 @@ - - - + + + - - +

Hosts-file Synchronization

The hosts-file synchronization updates your local hosts(5) file (/etc/hosts) with entries for each peer.

As hostname, cunicu uses the first 8 characters of the Base64-encoded public key as well as an optional hostname. +This optional hostname can either be configured by the user in the configuration file or is discovered via the peer-discovery feature.

Example

The following snippet shows the local hosts file of an Ubuntu 20.04 system with two entries added by cunicu. +As shown here, all entries managed by cunicu are marked with a comment prefixed with # cunicu:

/etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

fe80::13a9:c799:cead:4f28 buxfBfaN.wg-local fra-1.wg-local # cunicu: ifname=wg0, ifindex=9, pk=buxfBfaNZI8UFT0cB1aj9YanhbLfxlTfd/hH3DrGaFA=
fe80::1fed:fabb:a9f6:d78 ZEki/XKE.wg-local # cunicu: ifname=wg1, ifindex=10, pk=ZEki/XKEsqdjFyURo5Sm+g3vXSKJKpV5WmwWKAQqo2c=

Configuration

Section "hsync" of /etc/cunicu.yaml

+ + \ No newline at end of file diff --git a/docs/features/pdisc.html b/docs/features/pdisc.html index 96e3594b..b7f841b2 100644 --- a/docs/features/pdisc.html +++ b/docs/features/pdisc.html @@ -3,7 +3,7 @@ -Peer Discovery | cunīcu +Peer Discovery | cunīcu @@ -21,14 +21,16 @@ - - - + + + - - +

Peer Discovery

The peer discovery feature can be used to find other peers. +A set of peers is identified by a common community passphrase.

Peers belonging to the same community will be added as WireGuard peers to the interface configuration.

No other tasks are performed. +Paired with other features like the endpoint discovery, auto configuration or route synchronization, the peer discovery is a cornerstone of a zero-configuration peer-to-peer VPN.

In addition to community passphrase, peers can be accepted by white- and blacklist filtering.

Configuration

Section "pdisc" of /etc/cunicu.yaml

+ + \ No newline at end of file diff --git a/docs/features/pske.html b/docs/features/pske.html index 0f0b1ed8..22dd6a6f 100644 --- a/docs/features/pske.html +++ b/docs/features/pske.html @@ -21,14 +21,14 @@ - - - + + + - - + + + \ No newline at end of file diff --git a/docs/features/rtsync.html b/docs/features/rtsync.html index 7e42db62..bd409809 100644 --- a/docs/features/rtsync.html +++ b/docs/features/rtsync.html @@ -3,7 +3,7 @@ -Route Synchronization | cunīcu +Route Synchronization | cunīcu @@ -21,14 +21,14 @@ - - - + + + - - +

Route Synchronization

The route synchronization feature keeps the kernel routing table in sync with WireGuard's AllowedIPs setting.

This synchronization is bi-directional:

  • Networks with are found in a Peers AllowedIP list will be installed as a kernel route.
  • Kernel routes with the peers link-local IP address as next-hop will be added to the Peers AllowedIPs list.

This rather simple feature allows user to pair cunicu with a software routing daemon like Bird2 while using a single WireGuard interface with multiple peer-to-peer links.

Configuration

Section "rtsync" of /etc/cunicu.yaml

+ + \ No newline at end of file diff --git a/docs/install.html b/docs/install.html new file mode 100644 index 00000000..29db61bf --- /dev/null +++ b/docs/install.html @@ -0,0 +1,40 @@ + + + + + +Installation | cunīcu + + + + + + + + + + + + + + +
+

Installation

This guide shows how to install cunīcu. +cunīcu can be installed either from source, or from pre-built binary releases.

From the Binary Releases

Every release of cunīcu provides binary releases for a variety of OSes. +These binary versions can be manually downloaded and installed.

By Hand

  1. Download your desired version
  2. Unzip it: gunzip cunicu_0.0.1_linux_amd64.tar.gz
  3. Move the unzipped binary to its desired destination: mv cunicu /usr/local/bin/cunicu
  4. Make it executable: chmod +x /usr/local/bin/cunicu
  5. From there, you should be able to run the client and add the stable repo: cunicu help.
note

cunīcu automated tests are performed for Linux, macOS and Windows on x86_64, ARMv6, ARMv8 amd ARM64 architectures. +Testing of other OSes are the responsibility of the community requesting cunīcu for the OS in question.

From Script

cunīcu also has an installer script that will automatically grab the latest version of cunīcu and install it locally.

You can fetch that script, and then execute it locally. +It's well documented so that you can read through it and understand what it is doing before you run it.

curl -fsSL -o get_cunicu.sh get.cunicu.li
chmod 700 get_cunicu.sh
./get_cunicu.sh

Yes, you can curl -fsSL get.cunicu.li | bash if you want to live on the edge.

Through Package Managers

cunīcu provides the ability to install via operating system package managers.

From Apt (Debian, Ubuntu)

sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) trusted=yes] https://packages.cunicu.li/apt/ /" | sudo tee /etc/apt/sources.list.d/cunicu.list
sudo apt-get update
sudo apt-get install cunicu

From Yum (Redhat, Fedora, RockyLinux)

sudo cat > /etc/yum.repos.d/cunicu.repo <<EOF
[cunicu]
name=RIasC
baseurl=https://packages.cunicu.li/yum/
enabled=1
gpgcheck=0
EOF
sudo yum install cunicu

From Homebrew (macOS)

A formulae for cunīcu is available in our Homebrew Tap: https://github.com/stv0g/homebrew-cunicu.

brew tap stv0g/cunicu
brew install cunicu

From Archlinux User Repository (AUR)

cunīcu is available in the Archlinux User Repository: https://aur.archlinux.org/packages/cunicu-bin.

via Yaourt
yaourt -S cunicu-bin
or via Packer
packer -S cunicu-bin
or via yay
yay cunicu-bin

From Source (all)

Building cunīcu is fairly easy and allows you to install the latest unreleased version.

You must have a working Go environment.

go install github.com/stv0g/cunicu/cmd/cunicu@latest

If required, it will fetch the dependencies and cache them, and validate configuration. +It will then compile cunīcu and place it in ${GOPATH}/bin/cunicu.

Conclusion

In most cases, installation is as simple as getting a pre-built cunīcu binary. +This document covers additional cases for those who want to do more sophisticated things with cunīcu.

Once you have cunīcu successfully installed, you can move on to using cunīcu to setup your mesh VPN network.

+ + + + \ No newline at end of file diff --git a/docs/installation.html b/docs/installation.html deleted file mode 100644 index 1c048861..00000000 --- a/docs/installation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - -Installation | cunīcu - - - - - - - - - - - - - - -
-

Installation

This guide shows how to install cunīcu. -cunīcu can be installed either from source, or from pre-built binary releases.

From the Binary Releases

Every release of cunīcu provides binary releases for a variety of OSes. -These binary versions can be manually downloaded and installed.

By Hand

  1. Download your desired version
  2. Unzip it: gunzip cunicu_0.0.1_linux_amd64.gz
  3. Move the unzipped binary to its desired destination: mv cunicu_0.0.1_linux_amd64 /usr/local/bin/cunicu
  4. Make it executable: chmod +x /usr/local/bin/cunicu
  5. From there, you should be able to run the client and add the stable repo: cunicu help.

Note: cunīcu automated tests are performed for Linux, macOS and Windows on x86_64, ARMv6, ARMv8 amd ARM64 architectures. -Testing of other OSes are the responsibility of the community requesting cunīcu for the OS in question.

From Script

cunīcu also has an installer script that will automatically grab the latest version of cunīcu and install it locally.

You can fetch that script, and then execute it locally. -It's well documented so that you can read through it and understand what it is doing before you run it.

curl -fsSL -o get_cunicu.sh https://raw.githubusercontent.com/stv0g/cunicu/master/scripts/get_cunicu.sh
chmod 700 get_cunicu.sh
./get_cunicu.sh

Yes, you can curl https://raw.githubusercontent.com/stv0g/cunicu/master/scripts/get_cunicu.sh | bash if you want to live on the edge.

Through Package Managers

cunīcu provides the ability to install via operating system package managers.

From Apt (Debian, Ubuntu)

sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) trusted=yes] https://packages.riasc.eu/apt/ /" | sudo tee /etc/apt/sources.list.d/riasc.list
sudo apt-get update
sudo apt-get install cunicu

From Yum (Redhat, Fedora, RockyLinux)

sudo cat > /etc/yum.repos.d/riasc.repo <<EOF
[riasc]
name=RIasC
baseurl=https://packages.riasc.eu/yum/
enabled=1
gpgcheck=0
EOF
sudo yum install cunīcu

From Homebrew (macOS)

brew tap stv0g/cunicu
brew install cunicu

From Source (all)

Building cunīcu is fairly easy and allows you to install the latest unreleased version.

You must have a working Go environment.

go install github.com/stv0g/cunicu/cmd/cunicu@latest

If required, it will fetch the dependencies and cache them, and validate configuration. -It will then compile cunīcu and place it in ${GOPATH}/bin/cunicu.

Conclusion

In most cases, installation is as simple as getting a pre-built cunīcu binary. -This document covers additional cases for those who want to do more sophisticated things with cunīcu.

Once you have cunīcu successfully installed, you can move on to using cunīcu to setup your mesh VPN network.

- - - - \ No newline at end of file diff --git a/docs/usage.html b/docs/usage.html index fbced7ca..97f9d546 100644 --- a/docs/usage.html +++ b/docs/usage.html @@ -21,14 +21,14 @@ - - - + + +
-

Usage

Command Line

For a detailed documentation of the cunicu command-line tool please have a look at the following page:

Daemon

Sending a SIGUSR1 signal to the daemon will trigger an immediate synchronization of all WireGuard interfaces.

- - +

Usage

Command Line

For a detailed documentation of the cunicu command-line tool please have a look at the following page:

Daemon

Sending a SIGUSR1 signal to the daemon will trigger an immediate synchronization of all WireGuard interfaces.

+ + \ No newline at end of file diff --git a/docs/usage/man.html b/docs/usage/man.html index fe3e5602..6a0e93d5 100644 --- a/docs/usage/man.html +++ b/docs/usage/man.html @@ -21,14 +21,18 @@ - - - + + +
-

cunicu

cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.

Synopsis

It relies on the awesome pion/ice package for the interactive connectivity establishment as well as bundles the Go user-space implementation of WireGuard in a single binary for environments in which WireGuard kernel support has not landed yet.

Options

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level
-h, --help help for cunicu

SEE ALSO

- - +

cunicu

cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.

Synopsis

   (\(\       ▟▀▀▙ █  █ █▀▀▙ ▀▀▀ ▟▀▀▙ █  ▙     
(-,-) █ █ █ █ █ ▀█ █ █ █ (\_/)
o_(")(") ▜▄▄▛ ▜▄▄▛ █ █ ▄█▄ ▜▄▄▛ ▜▄▄▛ (•_•)
zero-conf • p2p • mesh • vpn /> ❤️ WireGuard™

cunīcu is a user-space daemon managing WireGuard® interfaces to +establish peer-to-peer connections in harsh network environments.

It relies on the awesome pion/ice package for the interactive +connectivity establishment as well as bundles the Go user-space +implementation of WireGuard in a single binary for environments +in which WireGuard kernel support has not landed yet.

Options

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level
-h, --help help for cunicu

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/addresses.html b/docs/usage/man/addresses.html index e3e87563..f49cc540 100644 --- a/docs/usage/man/addresses.html +++ b/docs/usage/man/addresses.html @@ -21,15 +21,15 @@ - - - + + +
-

cunicu addresses

Calculate link-local IPv4 and IPv6 addresses from a WireGuard X25519 public key

Synopsis

cunīcu auto-configuration feature derives and assigns link-local IPv4 and IPv6 addresses based on the public key of the WireGuard interface. -This sub-command accepts a WireGuard public key on the standard input and prints out the calculated IP addresses on the standard output.

cunicu addresses [flags]

Examples

$ wg genkey | wg pubkey | cunicu addresses
fe80::e3be:9673:5a98:9348/64
169.254.29.188/16

Options

  -h, --help   help for addresses
-4, --ipv4 Print IPv4 address only
-6, --ipv6 Print IPv6 address only

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu addresses

Calculate link-local IPv4 and IPv6 addresses from a WireGuard X25519 public key

Synopsis

cunīcu auto-configuration feature derives and assigns link-local IPv4 and IPv6 addresses based on the public key of the WireGuard interface. +This sub-command accepts a WireGuard public key on the standard input and prints out the calculated IP addresses on the standard output.

cunicu addresses [flags]

Examples

$ wg genkey | wg pubkey | cunicu addresses
fc2f:9a4d:777f:7a97:8197:4a5d:1d1b:ed79
10.237.119.127

Options

  -h, --help   help for addresses
-m, --mask Print CIDR mask

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/completion.html b/docs/usage/man/completion.html index dfe7d358..574c83d2 100644 --- a/docs/usage/man/completion.html +++ b/docs/usage/man/completion.html @@ -21,15 +21,15 @@ - - - + + +
-

cunicu completion

Generate the autocompletion script for the specified shell

Synopsis

Generate the autocompletion script for cunicu for the specified shell. -See each sub-command's help for details on how to use the generated script.

Options

  -h, --help   help for completion

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu completion

Generate the autocompletion script for the specified shell

Synopsis

Generate the autocompletion script for cunicu for the specified shell. +See each sub-command's help for details on how to use the generated script.

Options

  -h, --help   help for completion

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/completion/bash.html b/docs/usage/man/completion/bash.html index fd1ddd0a..991556ba 100644 --- a/docs/usage/man/completion/bash.html +++ b/docs/usage/man/completion/bash.html @@ -21,15 +21,15 @@ - - - + + +
-

cunicu completion bash

Generate the autocompletion script for bash

Synopsis

Generate the autocompletion script for the bash shell.

This script depends on the 'bash-completion' package. -If it is not installed already, you can install it via your OS's package manager.

To load completions in your current shell session:

source <(cunicu completion bash)

To load completions for every new session, execute once:

Linux:

cunicu completion bash > /etc/bash_completion.d/cunicu

macOS:

cunicu completion bash > $(brew --prefix)/etc/bash_completion.d/cunicu

You will need to start a new shell for this setup to take effect.

cunicu completion bash

Options

  -h, --help              help for bash
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu completion bash

Generate the autocompletion script for bash

Synopsis

Generate the autocompletion script for the bash shell.

This script depends on the 'bash-completion' package. +If it is not installed already, you can install it via your OS's package manager.

To load completions in your current shell session:

source <(cunicu completion bash)

To load completions for every new session, execute once:

Linux:

cunicu completion bash > /etc/bash_completion.d/cunicu

macOS:

cunicu completion bash > $(brew --prefix)/etc/bash_completion.d/cunicu

You will need to start a new shell for this setup to take effect.

cunicu completion bash

Options

  -h, --help              help for bash
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/completion/fish.html b/docs/usage/man/completion/fish.html index df9136d7..09ce0ecb 100644 --- a/docs/usage/man/completion/fish.html +++ b/docs/usage/man/completion/fish.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu completion fish

Generate the autocompletion script for fish

Synopsis

Generate the autocompletion script for the fish shell.

To load completions in your current shell session:

cunicu completion fish | source

To load completions for every new session, execute once:

cunicu completion fish > ~/.config/fish/completions/cunicu.fish

You will need to start a new shell for this setup to take effect.

cunicu completion fish [flags]

Options

  -h, --help              help for fish
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu completion fish

Generate the autocompletion script for fish

Synopsis

Generate the autocompletion script for the fish shell.

To load completions in your current shell session:

cunicu completion fish | source

To load completions for every new session, execute once:

cunicu completion fish > ~/.config/fish/completions/cunicu.fish

You will need to start a new shell for this setup to take effect.

cunicu completion fish [flags]

Options

  -h, --help              help for fish
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/completion/powershell.html b/docs/usage/man/completion/powershell.html index 1dde4eee..7239dcc1 100644 --- a/docs/usage/man/completion/powershell.html +++ b/docs/usage/man/completion/powershell.html @@ -21,15 +21,15 @@ - - - + + +
-

cunicu completion powershell

Generate the autocompletion script for powershell

Synopsis

Generate the autocompletion script for powershell.

To load completions in your current shell session:

cunicu completion powershell | Out-String | Invoke-Expression

To load completions for every new session, add the output of the above command -to your powershell profile.

cunicu completion powershell [flags]

Options

  -h, --help              help for powershell
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu completion powershell

Generate the autocompletion script for powershell

Synopsis

Generate the autocompletion script for powershell.

To load completions in your current shell session:

cunicu completion powershell | Out-String | Invoke-Expression

To load completions for every new session, add the output of the above command +to your powershell profile.

cunicu completion powershell [flags]

Options

  -h, --help              help for powershell
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/completion/zsh.html b/docs/usage/man/completion/zsh.html index f06ea67f..72745846 100644 --- a/docs/usage/man/completion/zsh.html +++ b/docs/usage/man/completion/zsh.html @@ -21,15 +21,15 @@ - - - + + +
-

cunicu completion zsh

Generate the autocompletion script for zsh

Synopsis

Generate the autocompletion script for the zsh shell.

If shell completion is not already enabled in your environment you will need -to enable it. You can execute the following once:

echo "autoload -U compinit; compinit" >> ~/.zshrc

To load completions in your current shell session:

source <(cunicu completion zsh); compdef _cunicu cunicu

To load completions for every new session, execute once:

Linux:

cunicu completion zsh > "${fpath[1]}/_cunicu"

macOS:

cunicu completion zsh > $(brew --prefix)/share/zsh/site-functions/_cunicu

You will need to start a new shell for this setup to take effect.

cunicu completion zsh [flags]

Options

  -h, --help              help for zsh
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu completion zsh

Generate the autocompletion script for zsh

Synopsis

Generate the autocompletion script for the zsh shell.

If shell completion is not already enabled in your environment you will need +to enable it. You can execute the following once:

echo "autoload -U compinit; compinit" >> ~/.zshrc

To load completions in your current shell session:

source <(cunicu completion zsh); compdef _cunicu cunicu

To load completions for every new session, execute once:

Linux:

cunicu completion zsh > "${fpath[1]}/_cunicu"

macOS:

cunicu completion zsh > $(brew --prefix)/share/zsh/site-functions/_cunicu

You will need to start a new shell for this setup to take effect.

cunicu completion zsh [flags]

Options

  -h, --help              help for zsh
--no-descriptions disable completion descriptions

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/config.html b/docs/usage/man/config.html index 6fa8e28d..e99a91e3 100644 --- a/docs/usage/man/config.html +++ b/docs/usage/man/config.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu config

Manage configuration of a running cunīcu daemon.

Synopsis

Options

  -h, --help                help for config
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
  • cunicu config get - Get current value of a configuration setting
  • cunicu config set - Update the value of a configuration setting
- - +

cunicu config

Manage configuration of a running cunīcu daemon.

Synopsis

Options

  -h, --help                help for config
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
  • cunicu config get - Get current value of a configuration setting
  • cunicu config reload - Reload the configuration of the cunīcu daemon
  • cunicu config set - Update the value of a configuration setting
+ + \ No newline at end of file diff --git a/docs/usage/man/config/get.html b/docs/usage/man/config/get.html index d17b0dea..df4c8728 100644 --- a/docs/usage/man/config/get.html +++ b/docs/usage/man/config/get.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu config get

Get current value of a configuration setting

cunicu config get [key] [flags]

Options

  -h, --help   help for get

Options inherited from parent commands

  -C, --color string        Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu config - Manage configuration of a running cunīcu daemon.
- - +

cunicu config get

Get current value of a configuration setting

cunicu config get [key] [flags]

Options

  -h, --help   help for get

Options inherited from parent commands

  -q, --color string        Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu config - Manage configuration of a running cunīcu daemon.
+ + \ No newline at end of file diff --git a/docs/usage/man/config/reload.html b/docs/usage/man/config/reload.html new file mode 100644 index 00000000..ecd1df9d --- /dev/null +++ b/docs/usage/man/config/reload.html @@ -0,0 +1,34 @@ + + + + + +cunicu config reload | cunīcu + + + + + + + + + + + + + + +
+

cunicu config reload

Reload the configuration of the cunīcu daemon

cunicu config reload [flags]

Options

  -h, --help   help for reload

Options inherited from parent commands

  -q, --color string        Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu config - Manage configuration of a running cunīcu daemon.
+ + + + \ No newline at end of file diff --git a/docs/usage/man/config/set.html b/docs/usage/man/config/set.html index 4dfac808..9110277e 100644 --- a/docs/usage/man/config/set.html +++ b/docs/usage/man/config/set.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu config set

Update the value of a configuration setting

cunicu config set key value [flags]

Options

  -h, --help   help for set

Options inherited from parent commands

  -C, --color string        Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu config - Manage configuration of a running cunīcu daemon.
- - +

cunicu config set

Update the value of a configuration setting

cunicu config set key value [flags]

Options

  -h, --help   help for set

Options inherited from parent commands

  -q, --color string        Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu config - Manage configuration of a running cunīcu daemon.
+ + \ No newline at end of file diff --git a/docs/usage/man/daemon.html b/docs/usage/man/daemon.html index b0a17aa5..72e1da9c 100644 --- a/docs/usage/man/daemon.html +++ b/docs/usage/man/daemon.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu daemon

Start the daemon

cunicu daemon [interface-names...] [flags]

Examples

$ cunicu daemon -u -x mysecretpass wg0

Options

  -A, --auto-config                         Enable setup of link-local addresses and missing interface options (default true)
-b, --backend URL One or more URLs to signaling backends
-x, --community passphrase A passphrase shared with other peers in the same community
-c, --config filename One or more filenames of configuration files
-w, --config-path directory The directory of WireGuard wg/wg-quick configuration files
-S, --config-sync Enable synchronization of WireGuard configuration files (default true)
-W, --config-watch Watch and synchronize changes to the WireGuard configuration files
-D, --domain domain A DNS domain name used for DNS auto-configuration
-I, --endpoint-disc Enable ICE endpoint discovery (default true)
-H, --host-sync Enable synchronization of /etc/hosts file (default true)
--ice-candidate-type candidate-type Usable candidate-types (one of host, srflx, prflx, relay)
--ice-network-type network-type Usable network-types (one of udp4, udp6, tcp4, tcp6)
-P, --password password The password for STUN/TURN credentials
-R, --route-sync Enable synchronization of AllowedIPs and Kernel routing table (default true)
-T, --route-table string Kernel routing table to use (default "main")
-s, --rpc-socket path The path of the unix socket used by other cunicu commands
--rpc-wait Wait until first client connected to control socket before continuing start
-a, --url URL One or more URLs of STUN and/or TURN servers
-U, --username username The username for STUN/TURN credentials
-i, --watch-interval duration An interval at which we are periodically polling the kernel for updates on WireGuard interfaces
-f, --wg-interface-filter regex A regex for filtering WireGuard interfaces (e.g. "wg-.*") (default ".*")
-u, --wg-userspace Create new interfaces with userspace WireGuard implementation
-h, --help help for daemon

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu daemon

Start the daemon

cunicu daemon [interface-names...] [flags]

Examples

$ cunicu daemon -u -x mysecretpass wg0

Options

  -b, --backend URL                         One or more URLs to signaling backends
-x, --community passphrase A passphrase shared with other peers in the same community
-c, --config filename One or more filenames of configuration files
-E, --discover-endpoints Enable ICE endpoint discovery (default true)
-P, --discover-peers Enable peer discovery (default true)
-D, --domain domain A DNS domain name used for DNS auto-configuration
--ice-candidate-type candidate-type Usable candidate-types (one of host, srflx, prflx, relay)
--ice-network-type network-type Usable network-types (one of udp4, udp6, tcp4, tcp6)
-p, --password password The password for STUN/TURN credentials
-T, --routing-table int Kernel routing table to use (default 254)
-s, --rpc-socket path The path of the unix socket used by other cunicu commands
--rpc-wait Wait until first client connected to control socket before continuing start
-C, --sync-config Enable synchronization of configuration files (default true)
-H, --sync-hosts Enable synchronization of /etc/hosts file (default true)
-R, --sync-routes Enable synchronization of AllowedIPs with Kernel routes (default true)
-a, --url URL One or more URLs of STUN and/or TURN servers
-u, --username username The username for STUN/TURN credentials
-w, --watch-config Watch configuration files for changes and apply changes at runtime.
-i, --watch-interval duration An interval at which we are periodically polling the kernel for updates on WireGuard interfaces
-U, --wg-userspace Use user-space WireGuard implementation for newly created interfaces
-h, --help help for daemon

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/invite.html b/docs/usage/man/invite.html new file mode 100644 index 00000000..f73d9ac8 --- /dev/null +++ b/docs/usage/man/invite.html @@ -0,0 +1,34 @@ + + + + + +cunicu invite | cunīcu + + + + + + + + + + + + + + +
+

cunicu invite

Add a new peer to the local daemon configuration and return the required configuration for this new peer

cunicu invite [interface] [flags]

Options

  -h, --help                help for invite
-L, --listen-port int Listen port for generated config (default 51820)
-Q, --qr-code Show config as QR code in terminal
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + + + \ No newline at end of file diff --git a/docs/usage/man/monitor.html b/docs/usage/man/monitor.html index dd4865e7..9d98e614 100644 --- a/docs/usage/man/monitor.html +++ b/docs/usage/man/monitor.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu monitor

Monitor the cunīcu daemon for events

cunicu monitor [flags]

Options

  -f, --format format       Output format (one of: json, logger, human) (default "human")
-h, --help help for monitor
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu monitor

Monitor the cunīcu daemon for events

cunicu monitor [flags]

Options

  -f, --format format       Output format (one of: json, logger, human) (default "human")
-h, --help help for monitor
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/relay.html b/docs/usage/man/relay.html new file mode 100644 index 00000000..6cd1aecc --- /dev/null +++ b/docs/usage/man/relay.html @@ -0,0 +1,35 @@ + + + + + +cunicu relay | cunīcu + + + + + + + + + + + + + + +
+

cunicu relay

Start relay API server

Synopsis

This command starts a gRPC server providing cunicu agents with a list of available STUN and TURN servers.

Note: Currently this command does not run a TURN server itself. But relies on an external server like Coturn.

With this feature you can distribute a list of available STUN/TURN servers easily to a fleet of agents. +It also allows to issue short-lived HMAC-SHA1 credentials based the proposed TURN REST API and thereby static long term credentials.

The command expects a list of STUN or TURN URLs according to RFC7065/RFC7064 with a few extensions:

  • A secret for the TURN REST API can be provided by the 'secret' query parameter

    • Example: turn:server.com?secret=rest-api-secret
  • A time-to-live to the TURN REST API secrets can be provided by the 'ttl' query parameter

    • Example: turn:server.com?ttl=1h
  • Static TURN credentials can be provided by the URIs user info

cunicu relay URL... [flags]

Examples

relay turn:server.com?secret=rest-api-secret&ttl=1h

Options

  -h, --help            help for relay
-L, --listen string listen address (default ":8080")
-S, --secure listen with TLS

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + + + \ No newline at end of file diff --git a/docs/usage/man/reload.html b/docs/usage/man/reload.html new file mode 100644 index 00000000..d3a8b719 --- /dev/null +++ b/docs/usage/man/reload.html @@ -0,0 +1,34 @@ + + + + + +cunicu reload | cunīcu + + + + + + + + + + + + + + +
+

cunicu reload

Reload the configuration of the cunīcu daemon

cunicu reload [flags]

Options

  -h, --help                help for reload
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + + + \ No newline at end of file diff --git a/docs/usage/man/restart.html b/docs/usage/man/restart.html index 96962192..df9813ec 100644 --- a/docs/usage/man/restart.html +++ b/docs/usage/man/restart.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu restart

Restart the cunīcu daemon

cunicu restart [flags]

Options

  -h, --help                help for restart
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu restart

Restart the cunīcu daemon

cunicu restart [flags]

Options

  -h, --help                help for restart
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/self-update.html b/docs/usage/man/self-update.html index 41ae98af..50758a0a 100644 --- a/docs/usage/man/self-update.html +++ b/docs/usage/man/self-update.html @@ -21,17 +21,17 @@ - - - + + +
-

cunicu self-update

Update the cunīcu binary

Synopsis

The command "self-update" downloads the latest stable release of cunicu from +

cunicu self-update

Update the cunīcu binary

Synopsis

The command "self-update" downloads the latest stable release of cunicu from GitHub and replaces the currently running binary. After download, the authenticity of the binary is verified using the GPG signature on the release -files.

cunicu self-update [flags]

Options

  -h, --help              help for self-update
-o, --output filename Save the downloaded file as filename (default "cunicu")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +files.

cunicu self-update [flags]

Options

  -h, --help              help for self-update
-o, --output filename Save the downloaded file as filename (default "cunicu")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/selfupdate.html b/docs/usage/man/selfupdate.html index 798ea95c..146a0c4d 100644 --- a/docs/usage/man/selfupdate.html +++ b/docs/usage/man/selfupdate.html @@ -21,15 +21,15 @@ - - - + + +
-

cunicu selfupdate

Update the cunīcu binary

Synopsis

Downloads the latest stable release of cunīcu from GitHub and replaces the currently running binary. -After download, the authenticity of the binary is verified using the GPG signature on the release files.

cunicu selfupdate [flags]

Options

  -h, --help              help for selfupdate
-o, --output filename Save the downloaded file as filename (default "cunicu")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu selfupdate

Update the cunīcu binary

Synopsis

Downloads the latest stable release of cunīcu from GitHub and replaces the currently running binary. +After download, the authenticity of the binary is verified using the GPG signature on the release files.

cunicu selfupdate [flags]

Options

  -h, --help              help for selfupdate
-o, --output filename Save the downloaded file as filename (default "cunicu")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/signal.html b/docs/usage/man/signal.html index 2d6f9111..4ba3308e 100644 --- a/docs/usage/man/signal.html +++ b/docs/usage/man/signal.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu signal

Start gRPC signaling server

cunicu signal [flags]

Options

  -h, --help            help for signal
-L, --listen string listen address (default ":8080")
-S, --secure listen with TLS

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu signal

Start gRPC signaling server

cunicu signal [flags]

Options

  -h, --help            help for signal
-L, --listen string listen address (default ":8080")
-S, --secure listen with TLS

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/status.html b/docs/usage/man/status.html index f9148454..a0a76c7d 100644 --- a/docs/usage/man/status.html +++ b/docs/usage/man/status.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu status

Show current status of the cunīcu daemon, its interfaces and peers

cunicu status [interface-name [peer-public-key]] [flags]

Options

  -f, --format format       Output format (one of: human, json) (default "human")
-h, --help help for status
-i, --indent Format and indent JSON ouput (default true)
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu status

Show current status of the cunīcu daemon, its interfaces and peers

cunicu status [interface-name [peer-public-key]] [flags]

Options

  -f, --format format       Output format (one of: human, json) (default "human")
-h, --help help for status
-i, --indent Format and indent JSON ouput (default true)
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/stop.html b/docs/usage/man/stop.html index 46b7b951..400a9e93 100644 --- a/docs/usage/man/stop.html +++ b/docs/usage/man/stop.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu stop

Shutdown the cunīcu daemon

cunicu stop [flags]

Options

  -h, --help                help for stop
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu stop

Shutdown the cunīcu daemon

cunicu stop [flags]

Options

  -h, --help                help for stop
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/sync.html b/docs/usage/man/sync.html index fa3997a8..3378a94d 100644 --- a/docs/usage/man/sync.html +++ b/docs/usage/man/sync.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu sync

Synchronize cunīcu daemon state

Synopsis

Synchronizes the internal daemon state with kernel routes, interfaces and addresses

cunicu sync [flags]

Options

  -h, --help                help for sync
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu sync

Synchronize cunīcu daemon state

Synopsis

Synchronizes the internal daemon state with kernel routes, interfaces and addresses

cunicu sync [flags]

Options

  -h, --help                help for sync
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/version.html b/docs/usage/man/version.html index d4d91f5d..d8b851f6 100644 --- a/docs/usage/man/version.html +++ b/docs/usage/man/version.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu version

Show version of the cunīcu binary and optionally also a running daemon

cunicu version [flags]

Examples

$ sudo cunicu version
client: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)
daemon: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)

Options

  -f, --format format   Output format (one of: human, json) (default "human")
-h, --help help for version
-s, --short Only show version and nothing else

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
- - +

cunicu version

Show version of the cunīcu binary and optionally also a running daemon

cunicu version [flags]

Examples

$ sudo cunicu version
client: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)
daemon: v0.1.2 (os=linux, arch=arm64, commit=b22ee3e7, branch=master, built-at=2022-09-09T13:44:22+02:00, built-by=goreleaser)

Options

  -f, --format format   Output format (one of: human, json) (default "human")
-h, --help help for version
-s, --short Only show version and nothing else

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
+ + \ No newline at end of file diff --git a/docs/usage/man/wg.html b/docs/usage/man/wg.html index fd0ae192..d45bfb27 100644 --- a/docs/usage/man/wg.html +++ b/docs/usage/man/wg.html @@ -21,15 +21,15 @@ - - - + + +
-

cunicu wg

WireGuard commands

Synopsis

The wg sub-command mimics the wg(8) commands of the wireguard-tools package. -In contrast to the wg(8) command, the cunico sub-command delegates it tasks to a running cunucu daemon.

Currently, only a subset of the wg(8) are supported.

Options

  -h, --help   help for wg

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
  • cunicu wg genkey - Generates a random private key in base64 and prints it to standard output.
  • cunicu wg genpsk - Generates a random preshared key in base64 and prints it to standard output.
  • cunicu wg pubkey - Calculates a public key and prints it in base64 to standard output.
  • cunicu wg show - Shows current WireGuard configuration and runtime information of specified [interface].
  • cunicu wg showconf - Shows the current configuration and information of the provided WireGuard interface
- - +

cunicu wg

WireGuard commands

Synopsis

The wg sub-command mimics the wg(8) commands of the wireguard-tools package. +In contrast to the wg(8) command, the cunico sub-command delegates it tasks to a running cunucu daemon.

Currently, only a subset of the wg(8) are supported.

Options

  -h, --help   help for wg

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

  • cunicu - cunīcu is a user-space daemon managing WireGuard® interfaces to establish peer-to-peer connections in harsh network environments.
  • cunicu wg genkey - Generates a random private key in base64 and prints it to standard output.
  • cunicu wg genpsk - Generates a random preshared key in base64 and prints it to standard output.
  • cunicu wg pubkey - Calculates a public key and prints it in base64 to standard output.
  • cunicu wg show - Shows current WireGuard configuration and runtime information of specified [interface].
  • cunicu wg showconf - Shows the current configuration and information of the provided WireGuard interface
+ + \ No newline at end of file diff --git a/docs/usage/man/wg/genkey.html b/docs/usage/man/wg/genkey.html index 0b752716..deb2e59f 100644 --- a/docs/usage/man/wg/genkey.html +++ b/docs/usage/man/wg/genkey.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu wg genkey

Generates a random private key in base64 and prints it to standard output.

cunicu wg genkey [flags]

Options

  -h, --help   help for genkey

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu wg genkey

Generates a random private key in base64 and prints it to standard output.

cunicu wg genkey [flags]

Options

  -h, --help   help for genkey

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/wg/genpsk.html b/docs/usage/man/wg/genpsk.html index 99aab7ee..96e15a92 100644 --- a/docs/usage/man/wg/genpsk.html +++ b/docs/usage/man/wg/genpsk.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu wg genpsk

Generates a random preshared key in base64 and prints it to standard output.

cunicu wg genpsk [flags]

Options

  -h, --help   help for genpsk

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu wg genpsk

Generates a random preshared key in base64 and prints it to standard output.

cunicu wg genpsk [flags]

Options

  -h, --help   help for genpsk

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/wg/pubkey.html b/docs/usage/man/wg/pubkey.html index 01e5d764..378e5461 100644 --- a/docs/usage/man/wg/pubkey.html +++ b/docs/usage/man/wg/pubkey.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu wg pubkey

Calculates a public key and prints it in base64 to standard output.

Synopsis

Calculates a public key and prints it in base64 to standard output from a corresponding private key (generated with genkey) given in base64 on standard input.

cunicu wg pubkey [flags]

Examples

# A private key and a corresponding public key may be generated at once by calling:
$ umask 077
$ wg genkey | tee private.key | wg pubkey > public.key

Options

  -h, --help   help for pubkey

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu wg pubkey

Calculates a public key and prints it in base64 to standard output.

Synopsis

Calculates a public key and prints it in base64 to standard output from a corresponding private key (generated with genkey) given in base64 on standard input.

cunicu wg pubkey [flags]

Examples

# A private key and a corresponding public key may be generated at once by calling:
$ umask 077
$ wg genkey | tee private.key | wg pubkey > public.key

Options

  -h, --help   help for pubkey

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/wg/show.html b/docs/usage/man/wg/show.html index 62f835a8..f43fc73b 100644 --- a/docs/usage/man/wg/show.html +++ b/docs/usage/man/wg/show.html @@ -21,16 +21,16 @@ - - - + + +
-

cunicu wg show

Shows current WireGuard configuration and runtime information of specified [interface].

Synopsis

Shows current WireGuard configuration and runtime information of specified [interface].

If no [interface] is specified, [interface] defaults to 'all'.

If 'interfaces' is specified, prints a list of all WireGuard interfaces, one per line, and quits.

If no options are given after the interface specification, then prints a list of all attributes in a visually pleasing way meant for the terminal. +

cunicu wg show

Shows current WireGuard configuration and runtime information of specified [interface].

Synopsis

Shows current WireGuard configuration and runtime information of specified [interface].

If no [interface] is specified, [interface] defaults to 'all'.

If 'interfaces' is specified, prints a list of all WireGuard interfaces, one per line, and quits.

If no options are given after the interface specification, then prints a list of all attributes in a visually pleasing way meant for the terminal. Otherwise, prints specified information grouped by newlines and tabs, meant to be used in scripts.

For this script-friendly display, if 'all' is specified, then the first field for all categories of information is the interface name.

If 'dump' is specified, then several lines are printed; the first contains in order separated by tab: private-key, public-key, listen-port, fwmark. -Subsequent lines are printed for each peer and contain in order separated by tab: public-key, preshared-key, endpoint, allowed-ips, latest-handshake, transfer-rx, transfer-tx, persistent-keepalive.

cunicu wg show { interface-name | all | interfaces } [{ public-key | private-key | listen-port | fwmark | peers | preshared-keys | endpoints | allowed-ips | latest-handshakes | transfer | persistent-keepalive | dump }] [flags]

Options

  -h, --help                help for show
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +Subsequent lines are printed for each peer and contain in order separated by tab: public-key, preshared-key, endpoint, allowed-ips, latest-handshake, transfer-rx, transfer-tx, persistent-keepalive.

cunicu wg show { interface-name | all | interfaces } [{ public-key | private-key | listen-port | fwmark | peers | preshared-keys | endpoints | allowed-ips | latest-handshakes | transfer | persistent-keepalive | dump }] [flags]

Options

  -h, --help                help for show
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/man/wg/showconf.html b/docs/usage/man/wg/showconf.html index 8c13d47b..e5bfb867 100644 --- a/docs/usage/man/wg/showconf.html +++ b/docs/usage/man/wg/showconf.html @@ -21,14 +21,14 @@ - - - + + +
-

cunicu wg showconf

Shows the current configuration and information of the provided WireGuard interface

Synopsis

Shows the current configuration of interface-name in the wg(8) format.

cunicu wg showconf interface-name [flags]

Options

  -h, --help                help for showconf
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -C, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

- - +

cunicu wg showconf

Shows the current configuration and information of the provided WireGuard interface

Synopsis

Shows the current configuration of interface-name in the wg(8) format.

cunicu wg showconf interface-name [flags]

Options

  -h, --help                help for showconf
-s, --rpc-socket string Unix control and monitoring socket (default "/var/run/cunicu.sock")

Options inherited from parent commands

  -q, --color string       Enable colorization of output (one of: auto, always, never) (default "auto")
-l, --log-file string path of a file to write logs to
-d, --log-level string log level (one of: debug, info, warn, error, dpanic, panic, and fatal) (default "info")
-v, --verbose int verbosity level

SEE ALSO

+ + \ No newline at end of file diff --git a/docs/usage/upgrade.html b/docs/usage/upgrade.html index ad9cb82f..5076fea9 100644 --- a/docs/usage/upgrade.html +++ b/docs/usage/upgrade.html @@ -21,14 +21,14 @@ - - - + + +
-
- - +
+ + \ No newline at end of file diff --git a/docs/usage/usecases.html b/docs/usage/usecases.html index 6a2989b7..3b0e8571 100644 --- a/docs/usage/usecases.html +++ b/docs/usage/usecases.html @@ -21,14 +21,14 @@ - - - + + +
-

Use-cases

Zero-configuration

Invocation: cunicu

Start user-space WireGuard daemon

Invocation: cunicu wg1

Peer discovery

Note: Not implemented yet

Invocation: cunicu --community my-community-passphrase --backend p2p

- - +

Use-cases

Zero-configuration

Invocation: cunicu

Start user-space WireGuard daemon

Invocation: cunicu wg1

Peer discovery

Invocation: cunicu --community my-community-passphrase

+ + \ No newline at end of file diff --git a/img/cunicu_sticker.svg b/img/cunicu_sticker.svg new file mode 100644 index 00000000..71932ea3 --- /dev/null +++ b/img/cunicu_sticker.svg @@ -0,0 +1,588 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/eonerc.png b/img/eonerc.png new file mode 100644 index 00000000..81c3ad0c Binary files /dev/null and b/img/eonerc.png differ diff --git a/index.html b/index.html index ccbbbb31..60d44dc1 100644 --- a/index.html +++ b/index.html @@ -21,14 +21,14 @@ - - - + + +
-
Easy to Use

Easy to Use

Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly.

Connectivity everywhere

cunīcu embraces open standards and uses various WebRTC-related RFCs like the Interactive Connectivity Establishment (ICE) to establish peer-to-peer connections even in restrictive network environments.

Powered by WireGuard®

cunīcu is using user- or kernelspace WireGuard® implementation to provide state-of-the-art security and performance.

- - +
Easy to Use

Easy to Use

Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly.

Connectivity everywhere

cunīcu embraces open standards and uses various WebRTC-related RFCs like the Interactive Connectivity Establishment (ICE) to establish peer-to-peer connections even in restrictive network environments.

Powered by WireGuard®

cunīcu is using user- or kernelspace WireGuard® implementation to provide state-of-the-art security and performance.

+ + \ No newline at end of file diff --git a/markdown-page.html b/markdown-page.html index fec55d54..6ae8eb4c 100644 --- a/markdown-page.html +++ b/markdown-page.html @@ -21,14 +21,14 @@ - - - + + +
-

Markdown page example

You don't need React to write simple standalone pages.

- - +

Markdown page example

You don't need React to write simple standalone pages.

+ + \ No newline at end of file diff --git a/search-index-default.json b/search-index-default.json index 6ecd4a24..0794484e 100644 --- a/search-index-default.json +++ b/search-index-default.json @@ -1 +1 @@ -{"documents":[{"id":1,"pageTitle":"Welcome","sectionTitle":"Welcome","sectionRoute":"/blog/welcome","type":"blog"}],"index":{"version":"2.3.9","fields":["title","content","tags"],"fieldVectors":[["title/1",[0,0.182]],["content/1",[0,0.182,1,0.182,2,0.288,3,0.288,4,0.288,5,0.288,6,0.288,7,0.288,8,0.288]],["tags/1",[1,0.182]]],"invertedIndex":[["blog",{"_index":3,"title":{},"content":{"1":{}},"tags":{}}],["cunīcu",{"_index":2,"title":{},"content":{"1":{}},"tags":{}}],["hello",{"_index":1,"title":{},"content":{"1":{}},"tags":{"1":{}}}],["here",{"_index":7,"title":{},"content":{"1":{}},"tags":{}}],["post",{"_index":5,"title":{},"content":{"1":{}},"tags":{}}],["soon",{"_index":8,"title":{},"content":{"1":{}},"tags":{}}],["start",{"_index":4,"title":{},"content":{"1":{}},"tags":{}}],["updat",{"_index":6,"title":{},"content":{"1":{}},"tags":{}}],["welcom",{"_index":0,"title":{"1":{}},"content":{"1":{}},"tags":{}}]],"pipeline":["stemmer"]}} \ No newline at end of file +{"documents":[{"id":1,"pageTitle":"Welcome","sectionTitle":"Welcome","sectionRoute":"/blog/welcome","type":"blog"},{"id":2,"pageTitle":"Welcome","sectionTitle":"First release","sectionRoute":"/blog/welcome#first-release","type":"blog"},{"id":3,"pageTitle":"Welcome","sectionTitle":"Website, Docs and Twitter","sectionRoute":"/blog/welcome#website-docs-and-twitter","type":"blog"},{"id":4,"pageTitle":"Welcome","sectionTitle":"Stickers","sectionRoute":"/blog/welcome#stickers","type":"blog"}],"index":{"version":"2.3.9","fields":["title","content","tags"],"fieldVectors":[["title/1",[0,0.841]],["content/1",[0,0.919,1,0.919,2,0.473,3,1.596,4,0.919,5,1.147,6,1.596,7,1.596,8,1.596,9,0.473,10,1.596]],["tags/1",[1,0.311]],["title/2",[2,0.337,11,0.655]],["content/2",[2,0.372,9,0.372,11,0.981,12,1.255,13,1.255,14,1.255,15,1.255,16,1.255,17,1.255,18,1.255,19,1.255,20,0.723,21,1.255,22,1.255,23,1.255,24,1.703,25,1.703,26,1.255,27,1.255,28,1.255,29,1.255,30,1.255,31,1.255,32,1.255]],["tags/2",[]],["title/3",[33,0.536,34,0.932,35,0.536]],["content/3",[4,0.693,5,1.03,9,0.231,33,0.449,35,0.449,36,0.779,37,0.779,38,0.779,39,0.779,40,0.779,41,0.779,42,0.779,43,0.779,44,0.779,45,0.779,46,1.79,47,0.779,48,0.779,49,0.779,50,0.779,51,1.204,52,0.779,53,0.779,54,0.779,55,0.779,56,0.779,57,0.779,58,0.779,59,0.779,60,0.779,61,0.779,62,0.779,63,0.779,64,0.779,65,0.779,66,0.779,67,0.779,68,1.204,69,0.779,70,0.779,71,1.204,72,0.779,73,0.779,74,0.779,75,0.779,76,0.779,77,0.779,78,0.779,79,0.779,80,0.779,81,0.779,82,0.779,83,0.779,84,0.779,85,0.779,86,0.779,87,0.231,88,0.449]],["tags/3",[]],["title/4",[87,0.433]],["content/4",[20,0.936,87,0.597,88,0.936,89,1.625,90,1.625,91,1.625,92,1.625,93,1.625,94,1.625,95,1.625]],["tags/4",[]]],"invertedIndex":[["",{"_index":20,"title":{},"content":{"2":{},"4":{}},"tags":{}}],["10",{"_index":18,"title":{},"content":{"2":{}},"tags":{}}],["4",{"_index":17,"title":{},"content":{"2":{}},"tags":{}}],["alreadi",{"_index":26,"title":{},"content":{"2":{}},"tags":{}}],["anoth",{"_index":58,"title":{},"content":{"3":{}},"tags":{}}],["avoid",{"_index":52,"title":{},"content":{"3":{}},"tags":{}}],["between",{"_index":74,"title":{},"content":{"3":{}},"tags":{}}],["blog",{"_index":6,"title":{},"content":{"1":{}},"tags":{}}],["build",{"_index":73,"title":{},"content":{"3":{}},"tags":{}}],["burrow",{"_index":69,"title":{},"content":{"3":{}},"tags":{}}],["chang",{"_index":47,"title":{},"content":{"3":{}},"tags":{}}],["choosen",{"_index":72,"title":{},"content":{"3":{}},"tags":{}}],["compani",{"_index":61,"title":{},"content":{"3":{}},"tags":{}}],["confer",{"_index":95,"title":{},"content":{"4":{}},"tags":{}}],["cunicuvpn",{"_index":41,"title":{},"content":{"3":{}},"tags":{}}],["cunīcu",{"_index":4,"title":{},"content":{"1":{},"3":{}},"tags":{}}],["cunīculu",{"_index":66,"title":{},"content":{"3":{}},"tags":{}}],["decid",{"_index":48,"title":{},"content":{"3":{}},"tags":{}}],["dedic",{"_index":37,"title":{},"content":{"3":{}},"tags":{}}],["deriv",{"_index":63,"title":{},"content":{"3":{}},"tags":{}}],["design",{"_index":88,"title":{},"content":{"3":{},"4":{}},"tags":{}}],["doc",{"_index":34,"title":{"3":{}},"content":{},"tags":{}}],["down",{"_index":86,"title":{},"content":{"3":{}},"tags":{}}],["drop",{"_index":89,"title":{},"content":{"4":{}},"tags":{}}],["featur",{"_index":24,"title":{},"content":{"2":{}},"tags":{}}],["feel",{"_index":42,"title":{},"content":{"3":{}},"tags":{}}],["find",{"_index":84,"title":{},"content":{"3":{}},"tags":{}}],["finish",{"_index":29,"title":{},"content":{"2":{}},"tags":{}}],["first",{"_index":2,"title":{"2":{}},"content":{"1":{},"2":{}},"tags":{}}],["follow",{"_index":44,"title":{},"content":{"3":{}},"tags":{}}],["free",{"_index":43,"title":{},"content":{"3":{}},"tags":{}}],["further",{"_index":85,"title":{},"content":{"3":{}},"tags":{}}],["gave",{"_index":80,"title":{},"content":{"3":{}},"tags":{}}],["german",{"_index":60,"title":{},"content":{"3":{}},"tags":{}}],["github",{"_index":38,"title":{},"content":{"3":{}},"tags":{}}],["handl",{"_index":40,"title":{},"content":{"3":{}},"tags":{}}],["hard",{"_index":76,"title":{},"content":{"3":{}},"tags":{}}],["hello",{"_index":1,"title":{},"content":{"1":{}},"tags":{"1":{}}}],["implement",{"_index":27,"title":{},"content":{"2":{}},"tags":{}}],["infanc",{"_index":8,"title":{},"content":{"1":{}},"tags":{}}],["info@cunicu.li",{"_index":91,"title":{},"content":{"4":{}},"tags":{}}],["issu",{"_index":55,"title":{},"content":{"3":{}},"tags":{}}],["kʊˈniːk",{"_index":62,"title":{},"content":{"3":{}},"tags":{}}],["last",{"_index":30,"title":{},"content":{"2":{}},"tags":{}}],["latin",{"_index":64,"title":{},"content":{"3":{}},"tags":{}}],["locat",{"_index":79,"title":{},"content":{"3":{}},"tags":{}}],["logo",{"_index":83,"title":{},"content":{"3":{}},"tags":{}}],["mail",{"_index":90,"title":{},"content":{"4":{}},"tags":{}}],["mean",{"_index":67,"title":{},"content":{"3":{}},"tags":{}}],["more",{"_index":25,"title":{},"content":{"2":{}},"tags":{}}],["name",{"_index":46,"title":{},"content":{"3":{}},"tags":{}}],["need",{"_index":28,"title":{},"content":{"2":{}},"tags":{}}],["network",{"_index":78,"title":{},"content":{"3":{}},"tags":{}}],["next",{"_index":16,"title":{},"content":{"2":{}},"tags":{}}],["noun",{"_index":65,"title":{},"content":{"3":{}},"tags":{}}],["now",{"_index":36,"title":{},"content":{"3":{}},"tags":{}}],["offici",{"_index":14,"title":{},"content":{"2":{}},"tags":{}}],["opportun",{"_index":81,"title":{},"content":{"3":{}},"tags":{}}],["organ",{"_index":39,"title":{},"content":{"3":{}},"tags":{}}],["otherwis",{"_index":75,"title":{},"content":{"3":{}},"tags":{}}],["packag",{"_index":22,"title":{},"content":{"2":{}},"tags":{}}],["pipelin",{"_index":21,"title":{},"content":{"2":{}},"tags":{}}],["plan",{"_index":12,"title":{},"content":{"2":{}},"tags":{}}],["post",{"_index":3,"title":{},"content":{"1":{}},"tags":{}}],["potenti",{"_index":53,"title":{},"content":{"3":{}},"tags":{}}],["previou",{"_index":50,"title":{},"content":{"3":{}},"tags":{}}],["project",{"_index":5,"title":{},"content":{"1":{},"3":{}},"tags":{}}],["publish",{"_index":13,"title":{},"content":{"2":{}},"tags":{}}],["quit",{"_index":31,"title":{},"content":{"2":{}},"tags":{}}],["rabbit",{"_index":68,"title":{},"content":{"3":{}},"tags":{}}],["reach",{"_index":77,"title":{},"content":{"3":{}},"tags":{}}],["realiz",{"_index":45,"title":{},"content":{"3":{}},"tags":{}}],["rebrand",{"_index":49,"title":{},"content":{"3":{}},"tags":{}}],["redesign",{"_index":82,"title":{},"content":{"3":{}},"tags":{}}],["releas",{"_index":11,"title":{"2":{}},"content":{"2":{}},"tags":{}}],["self",{"_index":23,"title":{},"content":{"2":{}},"tags":{}}],["send",{"_index":92,"title":{},"content":{"4":{}},"tags":{}}],["small",{"_index":59,"title":{},"content":{"3":{}},"tags":{}}],["sticker",{"_index":87,"title":{"4":{}},"content":{"3":{},"4":{}},"tags":{}}],["still",{"_index":7,"title":{},"content":{"1":{}},"tags":{}}],["talk",{"_index":93,"title":{},"content":{"4":{}},"tags":{}}],["test",{"_index":32,"title":{},"content":{"2":{}},"tags":{}}],["tl;dr",{"_index":10,"title":{},"content":{"1":{}},"tags":{}}],["trademark",{"_index":54,"title":{},"content":{"3":{}},"tags":{}}],["tunnel",{"_index":71,"title":{},"content":{"3":{}},"tags":{}}],["twitter",{"_index":35,"title":{"3":{}},"content":{"3":{}},"tags":{}}],["underground",{"_index":70,"title":{},"content":{"3":{}},"tags":{}}],["upcom",{"_index":94,"title":{},"content":{"4":{}},"tags":{}}],["updat",{"_index":9,"title":{},"content":{"1":{},"2":{},"3":{}},"tags":{}}],["websit",{"_index":33,"title":{"3":{}},"content":{"3":{}},"tags":{}}],["week",{"_index":19,"title":{},"content":{"2":{}},"tags":{}}],["welcom",{"_index":0,"title":{"1":{}},"content":{"1":{}},"tags":{}}],["well",{"_index":57,"title":{},"content":{"3":{}},"tags":{}}],["wice",{"_index":51,"title":{},"content":{"3":{}},"tags":{}}],["wireguard",{"_index":56,"title":{},"content":{"3":{}},"tags":{}}],["within",{"_index":15,"title":{},"content":{"2":{}},"tags":{}}]],"pipeline":["stemmer"]}} \ No newline at end of file diff --git a/search-index-docs-default-current.json b/search-index-docs-default-current.json index 244ea4e2..e56f35b4 100644 --- a/search-index-docs-default-current.json +++ b/search-index-docs-default-current.json @@ -1 +1 @@ -{"documents":[{"id":2,"pageTitle":"","sectionTitle":"Getting started","sectionRoute":"/docs#getting-started","type":"docs"},{"id":3,"pageTitle":"","sectionTitle":"Documentation","sectionRoute":"/docs#documentation","type":"docs"},{"id":4,"pageTitle":"","sectionTitle":"Authors","sectionRoute":"/docs#authors","type":"docs"},{"id":5,"pageTitle":"","sectionTitle":"Join us","sectionRoute":"/docs#join-us","type":"docs"},{"id":6,"pageTitle":"","sectionTitle":"Name","sectionRoute":"/docs#name","type":"docs"},{"id":7,"pageTitle":"","sectionTitle":"License","sectionRoute":"/docs#license","type":"docs"},{"id":8,"pageTitle":"","sectionTitle":"Funding acknowledgement","sectionRoute":"/docs#funding-acknowledgement","type":"docs"},{"id":9,"pageTitle":"","sectionTitle":"Trademark","sectionRoute":"/docs#trademark","type":"docs"},{"id":10,"pageTitle":"","sectionTitle":"Comparison with other P2P VPN solutions","sectionRoute":"/docs/comparison","type":"docs"},{"id":11,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/docs/configuration","type":"docs"},{"id":12,"pageTitle":"","sectionTitle":"Command Line Flags","sectionRoute":"/docs/configuration#command-line-flags","type":"docs"},{"id":13,"pageTitle":"","sectionTitle":"Configuration File","sectionRoute":"/docs/configuration#configuration-file","type":"docs"},{"id":14,"pageTitle":"","sectionTitle":"Environment Variables","sectionRoute":"/docs/configuration#environment-variables","type":"docs"},{"id":15,"pageTitle":"","sectionTitle":"DNS Auto-configuration","sectionRoute":"/docs/configuration#dns-auto-configuration","type":"docs"},{"id":16,"pageTitle":"","sectionTitle":"Remote Configuration File","sectionRoute":"/docs/configuration#remote-configuration-file","type":"docs"},{"id":17,"pageTitle":"","sectionTitle":"Design","sectionRoute":"/docs/design","type":"docs"},{"id":18,"pageTitle":"","sectionTitle":"Objectives","sectionRoute":"/docs/design#objectives","type":"docs"},{"id":19,"pageTitle":"","sectionTitle":"Architecture","sectionRoute":"/docs/design#architecture","type":"docs"},{"id":20,"pageTitle":"","sectionTitle":"Related RFCs","sectionRoute":"/docs/design#related-rfcs","type":"docs"},{"id":21,"pageTitle":"","sectionTitle":"Development","sectionRoute":"/docs/development","type":"docs"},{"id":22,"pageTitle":"","sectionTitle":"Proxying","sectionRoute":"/docs/development/proxying","type":"docs"},{"id":23,"pageTitle":"","sectionTitle":"Kernel WireGuard module","sectionRoute":"/docs/development/proxying#kernel-wireguard-module","type":"docs"},{"id":24,"pageTitle":"","sectionTitle":"User-space","sectionRoute":"/docs/development/proxying#user-space","type":"docs"},{"id":25,"pageTitle":"","sectionTitle":"RAW Sockets + BPF filter (Kernel)","sectionRoute":"/docs/development/proxying#raw-sockets--bpf-filter-kernel","type":"docs"},{"id":26,"pageTitle":"","sectionTitle":"NFtables port-redirection (Kernel)","sectionRoute":"/docs/development/proxying#nftables-port-redirection-kernel","type":"docs"},{"id":27,"pageTitle":"","sectionTitle":"IPTables port-redirection","sectionRoute":"/docs/development/proxying#iptables-port-redirection","type":"docs"},{"id":28,"pageTitle":"","sectionTitle":"User-space WireGuard implementation","sectionRoute":"/docs/development/proxying#user-space-wireguard-implementation","type":"docs"},{"id":29,"pageTitle":"","sectionTitle":"User-space Proxy","sectionRoute":"/docs/development/proxying#user-space-proxy","type":"docs"},{"id":30,"pageTitle":"","sectionTitle":"In-process socket","sectionRoute":"/docs/development/proxying#in-process-socket","type":"docs"},{"id":31,"pageTitle":"","sectionTitle":"Flowchart","sectionRoute":"/docs/development/proxying#flowchart","type":"docs"},{"id":32,"pageTitle":"","sectionTitle":"Session Signaling","sectionRoute":"/docs/development/signaling","type":"docs"},{"id":33,"pageTitle":"","sectionTitle":"Session Description","sectionRoute":"/docs/development/signaling#session-description","type":"docs"},{"id":34,"pageTitle":"","sectionTitle":"Backends","sectionRoute":"/docs/development/signaling#backends","type":"docs"},{"id":35,"pageTitle":"","sectionTitle":"Available backends","sectionRoute":"/docs/development/signaling#available-backends","type":"docs"},{"id":36,"pageTitle":"","sectionTitle":"Semantics","sectionRoute":"/docs/development/signaling#semantics","type":"docs"},{"id":37,"pageTitle":"","sectionTitle":"Interface","sectionRoute":"/docs/development/signaling#interface","type":"docs"},{"id":38,"pageTitle":"","sectionTitle":"TODOs","sectionRoute":"/docs/development/todo","type":"docs"},{"id":39,"pageTitle":"","sectionTitle":"Auto-configuration","sectionRoute":"/docs/features/autocfg","type":"docs"},{"id":40,"pageTitle":"","sectionTitle":"Config-file Synchronization","sectionRoute":"/docs/features/cfgsync","type":"docs"},{"id":41,"pageTitle":"","sectionTitle":"Endpoint Discovery","sectionRoute":"/docs/features/epdisc","type":"docs"},{"id":42,"pageTitle":"","sectionTitle":"Hooks","sectionRoute":"/docs/features/hooks","type":"docs"},{"id":44,"pageTitle":"","sectionTitle":"Hosts-file Synchronization","sectionRoute":"/docs/features/hsync","type":"docs"},{"id":43,"pageTitle":"","sectionTitle":"Peer Discovery","sectionRoute":"/docs/features/pdisc","type":"docs"},{"id":45,"pageTitle":"","sectionTitle":"Pre-shared Key Establishment","sectionRoute":"/docs/features/pske","type":"docs"},{"id":46,"pageTitle":"","sectionTitle":"Route Synchronization","sectionRoute":"/docs/features/rtsync","type":"docs"},{"id":47,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/docs/installation","type":"docs"},{"id":48,"pageTitle":"","sectionTitle":"From the Binary Releases","sectionRoute":"/docs/installation#from-the-binary-releases","type":"docs"},{"id":49,"pageTitle":"","sectionTitle":"By Hand","sectionRoute":"/docs/installation#by-hand","type":"docs"},{"id":50,"pageTitle":"","sectionTitle":"From Script","sectionRoute":"/docs/installation#from-script","type":"docs"},{"id":51,"pageTitle":"","sectionTitle":"Through Package Managers","sectionRoute":"/docs/installation#through-package-managers","type":"docs"},{"id":52,"pageTitle":"","sectionTitle":"From Apt (Debian, Ubuntu)","sectionRoute":"/docs/installation#from-apt-debian-ubuntu","type":"docs"},{"id":53,"pageTitle":"","sectionTitle":"From Yum (Redhat, Fedora, RockyLinux)","sectionRoute":"/docs/installation#from-yum-redhat-fedora-rockylinux","type":"docs"},{"id":54,"pageTitle":"","sectionTitle":"From Homebrew (macOS)","sectionRoute":"/docs/installation#from-homebrew-macos","type":"docs"},{"id":55,"pageTitle":"","sectionTitle":"From Source (all)","sectionRoute":"/docs/installation#from-source-all","type":"docs"},{"id":56,"pageTitle":"","sectionTitle":"Conclusion","sectionRoute":"/docs/installation#conclusion","type":"docs"},{"id":57,"pageTitle":"","sectionTitle":"Usage","sectionRoute":"/docs/usage","type":"docs"},{"id":58,"pageTitle":"","sectionTitle":"Command Line","sectionRoute":"/docs/usage#command-line","type":"docs"},{"id":59,"pageTitle":"","sectionTitle":"Daemon","sectionRoute":"/docs/usage#daemon","type":"docs"},{"id":60,"pageTitle":"","sectionTitle":"cunicu","sectionRoute":"/docs/usage/man#cunicu","type":"docs"},{"id":61,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man#synopsis","type":"docs"},{"id":62,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man#options","type":"docs"},{"id":63,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man#see-also","type":"docs"},{"id":64,"pageTitle":"","sectionTitle":"cunicu addresses","sectionRoute":"/docs/usage/man/addresses#cunicu-addresses","type":"docs"},{"id":65,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/addresses#synopsis","type":"docs"},{"id":66,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/docs/usage/man/addresses#examples","type":"docs"},{"id":67,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/addresses#options","type":"docs"},{"id":68,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/addresses#options-inherited-from-parent-commands","type":"docs"},{"id":69,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/addresses#see-also","type":"docs"},{"id":70,"pageTitle":"","sectionTitle":"cunicu completion","sectionRoute":"/docs/usage/man/completion#cunicu-completion","type":"docs"},{"id":71,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/completion#synopsis","type":"docs"},{"id":72,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/completion#options","type":"docs"},{"id":73,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/completion#options-inherited-from-parent-commands","type":"docs"},{"id":74,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/completion#see-also","type":"docs"},{"id":75,"pageTitle":"","sectionTitle":"cunicu completion bash","sectionRoute":"/docs/usage/man/completion/bash#cunicu-completion-bash","type":"docs"},{"id":76,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/completion/bash#synopsis","type":"docs"},{"id":77,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/completion/bash#options","type":"docs"},{"id":78,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/completion/bash#options-inherited-from-parent-commands","type":"docs"},{"id":79,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/completion/bash#see-also","type":"docs"},{"id":85,"pageTitle":"","sectionTitle":"cunicu completion fish","sectionRoute":"/docs/usage/man/completion/fish#cunicu-completion-fish","type":"docs"},{"id":86,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/completion/fish#synopsis","type":"docs"},{"id":87,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/completion/fish#options","type":"docs"},{"id":88,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/completion/fish#options-inherited-from-parent-commands","type":"docs"},{"id":89,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/completion/fish#see-also","type":"docs"},{"id":80,"pageTitle":"","sectionTitle":"cunicu completion powershell","sectionRoute":"/docs/usage/man/completion/powershell#cunicu-completion-powershell","type":"docs"},{"id":81,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/completion/powershell#synopsis","type":"docs"},{"id":82,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/completion/powershell#options","type":"docs"},{"id":83,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/completion/powershell#options-inherited-from-parent-commands","type":"docs"},{"id":84,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/completion/powershell#see-also","type":"docs"},{"id":90,"pageTitle":"","sectionTitle":"cunicu completion zsh","sectionRoute":"/docs/usage/man/completion/zsh#cunicu-completion-zsh","type":"docs"},{"id":91,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/completion/zsh#synopsis","type":"docs"},{"id":92,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/completion/zsh#options","type":"docs"},{"id":93,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/completion/zsh#options-inherited-from-parent-commands","type":"docs"},{"id":94,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/completion/zsh#see-also","type":"docs"},{"id":95,"pageTitle":"","sectionTitle":"cunicu config","sectionRoute":"/docs/usage/man/config#cunicu-config","type":"docs"},{"id":96,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/config#synopsis","type":"docs"},{"id":97,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/config#options","type":"docs"},{"id":98,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/config#options-inherited-from-parent-commands","type":"docs"},{"id":99,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/config#see-also","type":"docs"},{"id":100,"pageTitle":"","sectionTitle":"cunicu config get","sectionRoute":"/docs/usage/man/config/get#cunicu-config-get","type":"docs"},{"id":101,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/config/get#options","type":"docs"},{"id":102,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/config/get#options-inherited-from-parent-commands","type":"docs"},{"id":103,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/config/get#see-also","type":"docs"},{"id":104,"pageTitle":"","sectionTitle":"cunicu config set","sectionRoute":"/docs/usage/man/config/set#cunicu-config-set","type":"docs"},{"id":105,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/config/set#options","type":"docs"},{"id":106,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/config/set#options-inherited-from-parent-commands","type":"docs"},{"id":107,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/config/set#see-also","type":"docs"},{"id":108,"pageTitle":"","sectionTitle":"cunicu daemon","sectionRoute":"/docs/usage/man/daemon#cunicu-daemon","type":"docs"},{"id":109,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/docs/usage/man/daemon#examples","type":"docs"},{"id":110,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/daemon#options","type":"docs"},{"id":111,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/daemon#options-inherited-from-parent-commands","type":"docs"},{"id":112,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/daemon#see-also","type":"docs"},{"id":113,"pageTitle":"","sectionTitle":"cunicu monitor","sectionRoute":"/docs/usage/man/monitor#cunicu-monitor","type":"docs"},{"id":114,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/monitor#options","type":"docs"},{"id":115,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/monitor#options-inherited-from-parent-commands","type":"docs"},{"id":116,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/monitor#see-also","type":"docs"},{"id":117,"pageTitle":"","sectionTitle":"cunicu restart","sectionRoute":"/docs/usage/man/restart#cunicu-restart","type":"docs"},{"id":118,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/restart#options","type":"docs"},{"id":119,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/restart#options-inherited-from-parent-commands","type":"docs"},{"id":120,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/restart#see-also","type":"docs"},{"id":121,"pageTitle":"","sectionTitle":"cunicu self-update","sectionRoute":"/docs/usage/man/self-update#cunicu-self-update","type":"docs"},{"id":122,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/self-update#synopsis","type":"docs"},{"id":123,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/self-update#options","type":"docs"},{"id":124,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/self-update#options-inherited-from-parent-commands","type":"docs"},{"id":125,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/self-update#see-also","type":"docs"},{"id":126,"pageTitle":"","sectionTitle":"cunicu selfupdate","sectionRoute":"/docs/usage/man/selfupdate#cunicu-selfupdate","type":"docs"},{"id":127,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/selfupdate#synopsis","type":"docs"},{"id":128,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/selfupdate#options","type":"docs"},{"id":129,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/selfupdate#options-inherited-from-parent-commands","type":"docs"},{"id":130,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/selfupdate#see-also","type":"docs"},{"id":131,"pageTitle":"","sectionTitle":"cunicu signal","sectionRoute":"/docs/usage/man/signal#cunicu-signal","type":"docs"},{"id":132,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/signal#options","type":"docs"},{"id":133,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/signal#options-inherited-from-parent-commands","type":"docs"},{"id":134,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/signal#see-also","type":"docs"},{"id":135,"pageTitle":"","sectionTitle":"cunicu status","sectionRoute":"/docs/usage/man/status#cunicu-status","type":"docs"},{"id":136,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/status#options","type":"docs"},{"id":137,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/status#options-inherited-from-parent-commands","type":"docs"},{"id":138,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/status#see-also","type":"docs"},{"id":139,"pageTitle":"","sectionTitle":"cunicu stop","sectionRoute":"/docs/usage/man/stop#cunicu-stop","type":"docs"},{"id":140,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/stop#options","type":"docs"},{"id":141,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/stop#options-inherited-from-parent-commands","type":"docs"},{"id":142,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/stop#see-also","type":"docs"},{"id":143,"pageTitle":"","sectionTitle":"cunicu sync","sectionRoute":"/docs/usage/man/sync#cunicu-sync","type":"docs"},{"id":144,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/sync#synopsis","type":"docs"},{"id":145,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/sync#options","type":"docs"},{"id":146,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/sync#options-inherited-from-parent-commands","type":"docs"},{"id":147,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/sync#see-also","type":"docs"},{"id":148,"pageTitle":"","sectionTitle":"cunicu version","sectionRoute":"/docs/usage/man/version#cunicu-version","type":"docs"},{"id":149,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/docs/usage/man/version#examples","type":"docs"},{"id":150,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/version#options","type":"docs"},{"id":151,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/version#options-inherited-from-parent-commands","type":"docs"},{"id":152,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/version#see-also","type":"docs"},{"id":153,"pageTitle":"","sectionTitle":"cunicu wg","sectionRoute":"/docs/usage/man/wg#cunicu-wg","type":"docs"},{"id":154,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/wg#synopsis","type":"docs"},{"id":155,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/wg#options","type":"docs"},{"id":156,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/wg#options-inherited-from-parent-commands","type":"docs"},{"id":157,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/wg#see-also","type":"docs"},{"id":158,"pageTitle":"","sectionTitle":"cunicu wg genkey","sectionRoute":"/docs/usage/man/wg/genkey#cunicu-wg-genkey","type":"docs"},{"id":159,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/wg/genkey#options","type":"docs"},{"id":160,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/wg/genkey#options-inherited-from-parent-commands","type":"docs"},{"id":161,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/wg/genkey#see-also","type":"docs"},{"id":162,"pageTitle":"","sectionTitle":"cunicu wg genpsk","sectionRoute":"/docs/usage/man/wg/genpsk#cunicu-wg-genpsk","type":"docs"},{"id":163,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/wg/genpsk#options","type":"docs"},{"id":164,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/wg/genpsk#options-inherited-from-parent-commands","type":"docs"},{"id":165,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/wg/genpsk#see-also","type":"docs"},{"id":166,"pageTitle":"","sectionTitle":"cunicu wg pubkey","sectionRoute":"/docs/usage/man/wg/pubkey#cunicu-wg-pubkey","type":"docs"},{"id":167,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/wg/pubkey#synopsis","type":"docs"},{"id":168,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/docs/usage/man/wg/pubkey#examples","type":"docs"},{"id":169,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/wg/pubkey#options","type":"docs"},{"id":170,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/wg/pubkey#options-inherited-from-parent-commands","type":"docs"},{"id":171,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/wg/pubkey#see-also","type":"docs"},{"id":172,"pageTitle":"","sectionTitle":"cunicu wg show","sectionRoute":"/docs/usage/man/wg/show#cunicu-wg-show","type":"docs"},{"id":173,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/wg/show#synopsis","type":"docs"},{"id":174,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/wg/show#options","type":"docs"},{"id":175,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/wg/show#options-inherited-from-parent-commands","type":"docs"},{"id":176,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/wg/show#see-also","type":"docs"},{"id":177,"pageTitle":"","sectionTitle":"cunicu wg showconf","sectionRoute":"/docs/usage/man/wg/showconf#cunicu-wg-showconf","type":"docs"},{"id":178,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/docs/usage/man/wg/showconf#synopsis","type":"docs"},{"id":179,"pageTitle":"","sectionTitle":"Options","sectionRoute":"/docs/usage/man/wg/showconf#options","type":"docs"},{"id":180,"pageTitle":"","sectionTitle":"Options inherited from parent commands","sectionRoute":"/docs/usage/man/wg/showconf#options-inherited-from-parent-commands","type":"docs"},{"id":181,"pageTitle":"","sectionTitle":"SEE ALSO","sectionRoute":"/docs/usage/man/wg/showconf#see-also","type":"docs"},{"id":182,"pageTitle":"","sectionTitle":"Self-update","sectionRoute":"/docs/usage/upgrade","type":"docs"},{"id":183,"pageTitle":"","sectionTitle":"Use-cases","sectionRoute":"/docs/usage/usecases","type":"docs"},{"id":184,"pageTitle":"","sectionTitle":"Zero-configuration","sectionRoute":"/docs/usage/usecases#zero-configuration","type":"docs"},{"id":185,"pageTitle":"","sectionTitle":"Start user-space WireGuard daemon","sectionRoute":"/docs/usage/usecases#start-user-space-wireguard-daemon","type":"docs"},{"id":186,"pageTitle":"","sectionTitle":"Peer discovery","sectionRoute":"/docs/usage/usecases#peer-discovery","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content","tags"],"fieldVectors":[["title/2",[0,4.266,1,2.526]],["content/2",[1,2.253,2,2.546,3,1.866,4,1.852,5,4.256,6,1.945,7,3.109,8,1.449,9,1.017,10,1.802,11,1.462,12,1.596,13,2.194,14,2.38,15,1.603,16,1.449,17,1.945,18,0.351,19,2.38,20,2.662,21,2.662,22,1.945,23,1.192,24,3.508,25,2.38,26,1.773,27,3.805,28,1.852,29,1.891,30,2.38,31,2.056,32,2.662,33,2.194,34,2.194,35,2.626,36,2.194,37,2.194,38,2.38,39,2.056,40,2.662,41,1.643,42,2.626,43,1.643,44,1.704,45,1.449,46,1.305,47,2.38,48,1.852,49,2.662,50,1.056,51,1.409,52,1.773,53,2.662]],["tags/2",[]],["title/3",[54,4.011]],["content/3",[3,1.81,54,4.806,55,7.215,56,6.45,57,5.947]],["tags/3",[]],["title/4",[58,6.021]],["content/4",[59,6.336,60,6.336,61,6.336,62,5.665,63,4.628,64,5.665,65,5.665,66,5.223,67,5.665,68,5.665,69,5.665]],["tags/4",[]],["title/5",[70,5.383]],["content/5",[18,0.853,70,5.782,71,4.724,72,6.468,73,6.468,74,6.468,75,6.468,76,6.468,77,6.468,78,2.426]],["tags/5",[]],["title/6",[79,3.59]],["content/6",[3,1.482,26,2.727,79,4.132,80,5.712,81,4.093,82,3.66,83,4.093,84,4.093,85,4.093,86,3.66,87,5.907,88,4.093,89,4.093,90,5.907,91,4.093,92,3.66,93,3.66,94,4.093,95,4.093,96,1.794,97,3.66,98,3.16,99,4.093,100,4.093,101,3.16,102,4.093,103,4.093,104,3.66,105,4.093,106,3.374,107,4.093]],["tags/6",[]],["title/7",[108,5.383]],["content/7",[3,1.443,62,5.143,63,4.202,64,5.143,65,5.143,66,4.741,67,5.143,68,5.143,69,5.143,108,6.669,109,3.43,110,5.753,111,5.143,112,5.753,113,5.753]],["tags/7",[]],["title/8",[114,4.772,115,4.772]],["content/8",[3,1.558,80,5.119,109,3.703,111,5.552,116,5.119,117,4.137,118,6.21,119,6.21,120,6.21,121,6.21,122,6.21,123,6.21]],["tags/8",[]],["title/9",[106,4.963]],["content/9",[10,2.48,106,5.684,124,6.896,125,6.896,126,6.896,127,6.896]],["tags/9",[]],["title/10",[128,3.372,129,3.015,130,2.603,131,3.015]],["content/10",[3,1.164,12,1.741,29,2.296,78,3.361,79,2.767,130,4.985,131,4.149,132,3.825,133,4.641,134,4.641,135,4.641,136,4.641,137,4.641,138,4.641,139,4.641,140,4.641,141,4.641,142,4.641,143,4.641,144,4.641,145,4.641]],["tags/10",[]],["title/11",[9,2.3]],["content/11",[9,2.577,15,2.486,18,1.088,146,4.023,147,6.747,148,5.561]],["tags/11",[]],["title/12",[52,2.632,149,1.172,150,1.732]],["content/12",[9,2.372,15,1.872,18,0.819,28,4.321,52,4.137,149,1.843,151,6.21,152,4.795,153,6.21,154,6.21,155,6.21,156,6.21]],["tags/12",[]],["title/13",[9,1.823,157,1.559]],["content/13",[1,0.37,2,2.22,3,0.329,7,1.354,9,1.463,10,1.564,11,1.316,12,0.492,15,0.211,16,0.381,22,0.959,23,0.313,28,0.913,29,0.659,33,0.577,34,1.082,35,0.432,36,1.627,37,1.627,39,0.54,41,0.432,42,1.442,43,2.363,44,0.84,47,0.625,57,0.577,63,0.511,78,3.026,79,0.417,86,0.625,96,0.307,97,0.625,98,0.54,130,0.54,157,0.763,158,0.7,159,0.625,160,0.7,161,0.7,162,0.7,163,0.37,164,0.7,165,0.7,166,1.948,167,0.577,168,1.354,169,1.174,170,0.392,171,0.218,172,0.758,173,0.577,174,0.7,175,3.508,176,0.7,177,1.082,178,1.313,179,1.174,180,1.313,181,1.706,182,1.708,183,1.854,184,0.7,185,0.7,186,0.625,187,0.577,188,1.313,189,0.7,190,1.854,191,1.313,192,0.981,193,0.868,194,0.511,195,0.404,196,0.625,197,0.625,198,0.7,199,0.7,200,0.577,201,0.577,202,0.81,203,1.082,204,0.361,205,0.7,206,0.876,207,0.7,208,1.082,209,0.511,210,0.7,211,0.54,212,0.7,213,0.7,214,0.7,215,1.174,216,0.7,217,0.625,218,0.54,219,1.082,220,0.7,221,1.528,222,0.625,223,1.354,224,0.7,225,1.237,226,0.577,227,1.313,228,0.7,229,0.7,230,0.577,231,0.577,232,0.913,233,0.7,234,1.082,235,0.7,236,0.577,237,1.266,238,0.32,239,0.625,240,0.511,241,0.625,242,0.7,243,0.54,244,0.625,245,1.174,246,0.625,247,0.577,248,0.7,249,0.7,250,0.625,251,0.625,252,0.7,253,1.313,254,1.013,255,0.7,256,0.625,257,0.625,258,0.625,259,0.625,260,0.7,261,0.625,262,0.625,263,0.511,264,0.625,265,1.313,266,1.29,267,0.577,268,1.013,269,0.466,270,0.7,271,1.313,272,0.7,273,1.174,274,1.082,275,1.432,276,0.625,277,1.174,278,1.313,279,0.7,280,0.7,281,1.174,282,0.7,283,0.7,284,0.7,285,1.313,286,2.709,287,1.313,288,0.7,289,1.174,290,0.7,291,0.7,292,0.625,293,0.913,294,0.625,295,0.7,296,0.7,297,0.577,298,0.7,299,0.625,300,0.7,301,0.7,302,1.174,303,0.625,304,0.7,305,0.54,306,0.7,307,0.7,308,1.174,309,1.658,310,0.735,311,0.625,312,0.7,313,1.854,314,0.7,315,0.7,316,0.7,317,1.658,318,0.7,319,0.7,320,0.625,321,0.7,322,0.7]],["tags/13",[]],["title/14",[323,2.183,324,4.266]],["content/14",[4,4.034,9,1.524,44,3.711,79,3.457,152,3.08,157,1.303,163,2.111,166,5.42,181,2.914,323,3.124,324,6.105,325,3.566,326,3.989,327,3.989,328,3.989,329,3.989,330,3.989,331,3.566,332,3.989,333,2.775,334,3.989,335,3.989,336,2.657,337,3.288,338,3.989,339,1.91]],["tags/14",[]],["title/15",[9,1.51,340,3.051,341,1.456]],["content/15",[1,1.071,2,0.969,3,0.853,4,1.408,9,1.298,15,0.61,18,0.914,29,0.72,35,2.097,37,2.265,41,1.249,42,1.249,44,2.176,117,1.348,163,1.071,166,1.249,204,1.043,232,1.408,234,1.668,239,1.809,240,1.478,269,1.348,309,5.13,336,1.348,340,2.624,342,2.024,343,4.394,344,2.024,345,4.394,346,1.809,347,5.555,348,1.668,349,2.801,350,2.024,351,2.024,352,5.904,353,2.024,354,6.658,355,5.738,356,5.738,357,5.148,358,3.399,359,2.024,360,2.024,361,4.394,362,2.024,363,2.024,364,2.024,365,2.024,366,3.928,367,2.024,368,2.024,369,2.024,370,1.809,371,1.668,372,2.024,373,2.024]],["tags/15",[]],["title/16",[9,1.51,157,1.291,374,3.051]],["content/16",[1,1.916,3,0.908,7,2.643,9,2.732,15,1.091,18,0.712,42,2.233,44,2.317,52,2.411,101,2.794,149,1.074,157,2.108,204,1.866,251,3.235,269,2.411,336,2.411,340,2.794,341,1.333,347,3.235,349,2.983,352,4.824,354,3.235,370,3.235,374,2.794,375,0.895,376,5.396,377,4.824,378,3.619,379,2.411,380,2.09,381,3.619,382,3.235,383,2.983,384,3.619,385,3.619,386,2.983,387,2.158,388,2.983,389,3.619]],["tags/16",[]],["title/17",[390,6.021]],["content/17",[]],["tags/17",[]],["title/18",[391,6.021]],["content/18",[8,1.047,9,1.618,10,1.913,11,0.661,12,0.722,13,1.586,14,1.72,15,0.58,23,0.861,24,2.685,26,1.282,28,1.339,29,1.158,35,1.187,37,3.12,42,1.187,43,1.187,45,1.772,46,0.943,78,1.869,117,3.32,132,1.586,163,1.018,167,1.586,170,1.078,172,2.446,182,1.187,193,0.9,196,1.72,206,0.722,232,1.339,263,1.405,266,1.339,267,1.586,286,1.485,294,1.72,383,1.586,392,2.912,393,1.586,394,1.924,395,1.485,396,1.72,397,1.586,398,1.924,399,1.72,400,1.339,401,1.72,402,1.924,403,1.924,404,1.924,405,3.786,406,1.924,407,2.231,408,1.72,409,1.586,410,1.339,411,1.924,412,1.485,413,1.047,414,1.586,415,1.896,416,1.924,417,1.924,418,1.924,419,1.405,420,1.586,421,1.339,422,1.924,423,1.339,424,1.924,425,1.924,426,1.924,427,1.924,428,1.924,429,1.924,430,1.924,431,1.72,432,1.924,433,1.924,434,1.924,435,1.924,436,0.992,437,2.01,438,1.924,439,1.924,440,1.924,441,1.924,442,1.924,443,1.405,444,1.924,445,1.924]],["tags/18",[]],["title/19",[446,4.963]],["content/19",[]],["tags/19",[]],["title/20",[447,4.772,448,4.772]],["content/20",[2,1.884,36,1.245,37,3.493,38,5.649,41,2.428,43,2.428,96,1.058,236,5.208,237,3.1,238,2.891,240,2.874,263,3.636,399,2.159,401,3.517,409,5.208,431,3.517,449,2.415,450,2.415,451,2.415,452,2.415,453,2.415,454,2.415,455,6.319,456,2.415,457,2.415,458,2.415,459,2.415,460,2.415,461,3.768,462,3.316,463,4.978,464,3.934,465,2.415,466,2.415,467,3.934,468,3.934,469,2.159,470,2.415,471,2.415,472,2.415,473,2.415,474,2.415]],["tags/20",[]],["title/21",[116,4.963]],["content/21",[2,1.713,3,0.898,4,2.489,37,1.844,41,2.208,63,2.613,96,1.568,116,2.949,168,2.613,170,2.004,200,4.41,240,2.613,268,2.762,289,3.198,337,2.949,475,3.577,476,3.577,477,3.577,478,3.198,479,3.198,480,2.949,481,2.489,482,3.577,483,3.577,484,2.489,485,3.577,486,3.577,487,3.577,488,4.783,489,3.577,490,3.577,491,3.577,492,3.577,493,2.25,494,2.762,495,2.383,496,6.409,497,3.577,498,3.577,499,3.577,500,3.577,501,3.577,502,3.577,503,3.577]],["tags/21",[]],["title/22",[423,4.19]],["content/22",[3,1.558,10,1.843,16,3.379,37,3.201,148,5.119,170,3.479,182,3.832,208,5.119,266,4.321,371,5.119,410,4.321,504,6.21]],["tags/22",[]],["title/23",[10,1.172,172,2.282,173,3.257]],["content/23",[]],["tags/23",[]],["title/24",[407,2.136,415,2.136]],["content/24",[3,1.672,6,3.548,10,1.441,12,1.822,26,3.236,29,2.37,35,2.997,36,3.435,37,2.504,46,2.382,193,3.558,387,4.535,410,4.636,421,3.38,423,3.38,437,4.112,505,4.858]],["tags/24",[]],["title/25",[78,0.978,172,1.506,193,1.22,419,1.904,506,2.149,507,2.607]],["content/25",[2,2.19,3,1.603,29,1.626,37,2.357,41,2.822,177,3.769,182,2.822,193,3.446,266,3.182,276,4.088,410,4.446,412,4.934,419,3.34,421,3.182,469,4.088,506,5.267,508,3.531,509,4.088,510,4.573,511,3.769,512,4.573,513,4.573,514,4.573,515,4.573]],["tags/25",[]],["title/26",[172,1.947,182,2.081,420,2.779,516,2.779]],["content/26",[3,0.492,10,0.982,11,1.137,12,0.735,17,1.432,18,0.259,37,1.706,41,2.042,43,2.649,78,2.67,152,2.555,166,2.042,172,1.132,177,1.616,181,1.432,182,4.015,219,1.616,226,2.727,254,2.555,273,1.753,274,1.616,325,3.838,374,1.513,387,2.56,408,2.958,410,4.253,419,3.136,421,2.987,495,1.306,506,2.727,516,1.616,517,1.753,518,3.309,519,1.96,520,3.539,521,1.38,522,5.044,523,1.96,524,1.96,525,3.309,526,1.753,527,2.727,528,1.96,529,1.96,530,1.513,531,1.96,532,1.96,533,1.96,534,1.96,535,1.96,536,1.96,537,2.958,538,3.309,539,3.309,540,4.293,541,3.309,542,1.96,543,1.96,544,3.309,545,3.309,546,1.96,547,3.309,548,1.96]],["tags/26",[]],["title/27",[182,2.438,420,3.257,549,3.533]],["content/27",[2,3.231,182,4.163,397,5.561,409,5.561,516,5.561,549,6.032,550,6.747,551,6.747]],["tags/27",[]],["title/28",[10,1.001,170,1.889,407,1.509,415,1.509]],["content/28",[]],["tags/28",[]],["title/29",[407,1.769,415,1.769,423,2.749]],["content/29",[3,1.637,6,3.441,10,1.936,12,1.767,22,3.441,26,3.138,29,2.32,35,2.907,36,3.363,37,2.429,46,2.31,172,2.72,173,3.883,193,3.502,387,3.89,410,4.539,421,3.278,423,3.278,437,2.907,552,4.212]],["tags/29",[]],["title/30",[193,2.233,553,4.772]],["content/30",[3,1.571,10,2.152,11,1.527,26,2.959,96,1.947,152,3.43,168,3.245,170,2.489,172,2.565,336,2.959,388,3.662,421,3.091,530,3.43,554,4.443,555,6.262,556,4.443,557,4.443,558,4.443,559,4.443,560,4.443,561,4.443,562,4.443,563,4.443,564,4.443,565,4.443,566,3.972,567,3.972,568,2.649]],["tags/30",[]],["title/31",[569,6.021]],["content/31",[]],["tags/31",[]],["title/32",[45,2.597,461,2.845]],["content/32",[1,0.892,22,2.124,23,0.754,29,1.623,37,0.869,43,1.04,78,3.305,132,1.389,163,0.892,192,1.539,225,0.892,237,2.578,238,0.771,243,2.962,264,1.507,266,2.669,268,2.962,275,2.962,281,2.6,311,3.43,333,1.173,336,1.937,374,2.245,387,2.722,437,2.817,461,1.005,488,1.507,517,2.6,570,1.685,571,1.685,572,1.685,573,1.685,574,1.685,575,1.685,576,1.685,577,1.301,578,2.908,579,5.634,580,1.685,581,1.685,582,1.685,583,1.685,584,2.6,585,5.151,586,5.037,587,1.685,588,2.908,589,2.908,590,1.685,591,1.685,592,3.836,593,1.685,594,5.151,595,2.908,596,2.908,597,1.685,598,1.685,599,1.685,600,1.685,601,1.717,602,4.565]],["tags/32",[]],["title/33",[461,2.845,462,3.178]],["content/33",[2,2.939,23,1.934,24,3.561,44,3.93,45,3.886,163,2.287,225,2.287,392,3.862,393,5.886,461,2.576,462,2.878,603,1.563,604,3.561,605,6.385,606,5.488,607,4.32,608,4.32,609,4.32,610,3.862,611,4.32,612,4.32,613,4.32,614,3.862,615,4.32,616,3.335]],["tags/33",[]],["title/34",[163,3.187]],["content/34",[3,1.443,23,2.575,37,2.966,41,3.55,43,3.55,45,3.13,117,3.832,163,3.045,225,3.045,243,4.441,337,4.741,371,4.741,461,4.448,617,4.202,618,5.753]],["tags/34",[]],["title/35",[28,3.32,163,2.526]],["content/35",[2,3.409,11,1.841,28,3.728,42,4.393,163,4.232,170,3.001,395,4.137,396,7.148,397,5.868,552,4.79,614,4.79,619,5.358,620,5.358]],["tags/35",[]],["title/36",[621,6.021]],["content/36",[2,2.097,23,1.961,26,2.918,29,1.558,36,2.258,39,3.382,101,3.382,117,2.918,163,2.319,225,2.319,349,3.611,605,7.383,610,5.543,622,4.381,623,4.381,624,6.2,625,3.611,626,4.381,627,4.381,628,3.611,629,4.381,630,4.381,631,4.381,632,6.2,633,4.381,634,4.381]],["tags/36",[]],["title/37",[11,2.069]],["content/37",[11,1.949,29,1.636,45,2.504,78,3.084,163,3.002,170,1.646,254,5.38,275,2.268,393,6.091,511,3.792,635,2.627,636,2.938,637,2.938,638,5.671,639,2.938,640,2.938,641,2.938,642,2.938,643,5.671,644,4.601,645,4.601,646,2.938,647,2.249,648,4.601,649,2.938,650,1.825,651,2.938,652,2.938,653,2.938,654,2.938,655,2.938,656,2.938,657,2.938,658,2.938]],["tags/37",[]],["title/38",[659,5.383]],["content/38",[2,1.636,10,0.604,11,0.7,15,0.614,18,0.917,27,1.821,29,1.215,31,4.447,33,1.679,37,1.762,43,2.109,45,1.108,46,0.999,51,1.078,54,1.357,56,1.821,71,1.488,78,1.282,80,1.679,98,1.573,104,1.821,149,0.604,170,1.141,181,1.488,186,1.821,192,2.337,193,0.953,201,1.679,263,1.488,266,1.417,268,1.573,277,1.821,292,1.821,299,1.821,320,3.055,339,0.975,348,1.679,400,1.417,412,1.573,423,2.378,436,1.05,493,0.857,494,2.639,584,1.821,625,1.679,659,1.821,660,3.418,661,2.037,662,2.037,663,3.418,664,2.037,665,2.037,666,2.037,667,2.037,668,2.037,669,2.037,670,2.037,671,2.037,672,2.037,673,2.037,674,2.037,675,2.037,676,2.037,677,1.821,678,2.037,679,2.037,680,3.418,681,2.037,682,2.037,683,2.037,684,2.037,685,2.037,686,1.821,687,1.573,688,6.234,689,2.037,690,1.417,691,1.821,692,1.679,693,2.037,694,2.037,695,1.679,696,2.037,697,2.037,698,2.037,699,1.679]],["tags/38",[]],["title/39",[9,1.823,341,1.758]],["content/39",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/39",[]],["title/40",[157,1.291,202,2.438,204,2.037]],["content/40",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/40",[]],["title/41",[35,2.944,223,3.485]],["content/41",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/41",[]],["title/42",[537,5.383]],["content/42",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/42",[]],["title/44",[7,2.886,157,1.291,202,2.438]],["content/44",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/44",[]],["title/43",[29,1.697,223,3.485]],["content/43",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/43",[]],["title/45",[23,1.509,231,2.779,238,1.543,702,2.779]],["content/45",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/45",[]],["title/46",[202,2.944,218,3.684]],["content/46",[78,2.706,109,4.302,146,4.302,700,2.522,701,4.619]],["tags/46",[]],["title/47",[8,3.277]],["content/47",[3,1.99,8,4.317,51,3.354,413,3.448,484,4.409,495,4.221,702,5.223,703,6.336,704,4.892]],["tags/47",[]],["title/48",[413,2.597,484,3.32]],["content/48",[3,1.558,8,3.379,269,4.137,379,4.137,413,4.263,484,5.45,568,3.703,705,6.21,706,5.552,707,6.21]],["tags/48",[]],["title/49",[25,5.383]],["content/49",[3,1.354,16,1.969,18,0.477,19,3.235,30,3.235,31,2.794,63,2.643,200,4.448,232,2.518,267,2.983,274,2.983,336,2.411,379,2.411,413,1.969,446,2.983,508,2.794,526,3.235,568,2.158,686,3.235,699,2.983,706,4.824,708,5.396,709,5.396,710,3.619,711,3.619,712,3.619,713,3.619,714,5.396,715,2.643,716,3.235,717,2.983,718,2.983,719,2.983,720,3.619,721,1.408,722,2.794,723,3.619,724,3.619,725,3.619,726,3.619,727,3.619,728,3.619]],["tags/49",[]],["title/50",[729,2.817]],["content/50",[3,1.454,8,3.155,16,2.171,54,2.657,78,1.496,386,3.288,387,3.457,530,3.08,568,2.379,692,3.288,715,2.914,716,3.566,729,2.712,730,3.989,731,3.989,732,2.914,733,3.989,734,3.566,735,3.989,736,3.989,737,3.989,738,5.797,739,3.989,740,3.288,741,6.829,742,5.797,743,3.989,744,3.566,745,2.775,746,3.566,747,3.989,748,3.989]],["tags/50",[]],["title/51",[481,2.749,493,1.662,530,3.051]],["content/51",[3,1.657,8,3.594,44,4.228,66,5.443,269,4.399,481,4.595,493,2.777,749,6.604,750,6.604]],["tags/51",[]],["title/52",[751,3.533,752,3.952,753,3.952]],["content/52",[8,3.626,17,5.978,18,0.641,46,2.382,78,2.499,377,4.343,446,4.004,744,4.343,751,7.317,754,4.858,755,4.343,756,4.858,757,4.858,758,2.997,759,4.858,760,4.858,761,4.343,762,4.858]],["tags/52",[]],["title/53",[763,3.015,764,3.372,765,3.372,766,3.372]],["content/53",[3,1.47,8,3.189,17,5.514,78,2.198,763,5.24,767,5.861,768,5.861,769,7.549,770,5.861,771,5.861,772,5.861,773,5.861,774,5.861]],["tags/53",[]],["title/54",[722,3.684,775,4.772]],["content/54",[8,3.837,18,0.93,776,6.982,777,7.052,778,7.052]],["tags/54",[]],["title/55",[495,4.011]],["content/55",[3,1.69,8,3.665,9,1.885,34,4.067,92,4.411,168,4.92,247,4.067,323,2.258,386,4.067,388,4.067,414,4.067,566,4.411,567,4.411,568,2.942,732,3.604,779,4.934,780,4.934,781,4.934,782,4.934,783,4.934,784,4.934,785,4.934]],["tags/55",[]],["title/56",[786,6.021]],["content/56",[0,4.149,2,2.222,3,2.014,8,3.513,48,3.229,54,3.091,96,2.034,130,3.583,297,5.321,413,2.525,604,3.825,635,4.149,699,3.825,702,3.825,704,3.583,746,4.149,787,4.641,788,4.641,789,4.641,790,4.641,791,4.641,792,4.641,793,3.39,794,4.641]],["tags/56",[]],["title/57",[795,5.383]],["content/57",[]],["tags/57",[]],["title/58",[52,3.178,149,1.416]],["content/58",[4,4.409,18,1.046,52,4.221,54,4.221,71,4.628,146,3.778,149,1.88,348,5.223,480,5.223,616,4.892]],["tags/58",[]],["title/59",[15,1.815]],["content/59",[10,1.96,11,2.269,15,1.991,45,3.594,202,4.075,275,5.099,796,6.604,797,6.604,798,6.604]],["tags/59",[]],["title/60",[18,0.794]],["content/60",[3,1.498,10,1.772,11,2.052,15,1.8,29,2.718,96,2.617,237,2.733,238,2.733,323,2.733,407,2.674,415,2.674,493,2.512,799,3.079]],["tags/60",[]],["title/61",[800,3.104]],["content/61",[10,2.088,117,3.509,167,4.341,168,3.848,170,2.95,172,3.042,236,4.341,237,2.41,238,2.41,323,2.41,407,2.358,412,4.067,413,2.866,415,2.358,478,4.709,479,4.709,481,3.665,734,4.709,801,5.267,802,5.267]],["tags/61",[]],["title/62",[375,1.488]],["content/62",[18,0.494,50,2.886,157,1.81,171,1.724,194,1.459,206,1.406,310,1.487,341,2.041,521,1.205,603,2.005,647,1.487,650,1.487,700,1.936,721,2.156,803,1.487,804,2.24,805,2.189,806,1.516,807,1.487,808,1.516,809,1.487,810,2.664,811,1.516,812,1.516,813,1.516,814,1.516,815,1.516,816,1.516,817,2.24,818,1.516]],["tags/62",[]],["title/63",[819,2.388]],["content/63",[1,2.164,3,1.903,9,0.967,10,1.213,11,0.87,12,0.95,15,2.361,16,2.225,18,1.123,23,1.134,29,0.901,36,2.108,42,1.563,45,2.225,46,1.242,51,2.164,149,0.751,202,1.563,204,1.306,225,1.341,305,1.955,339,1.213,375,0.626,380,1.462,387,1.51,395,1.955,400,2.845,413,2.225,436,2.108,443,1.85,493,1.065,568,2.438,601,1.134,690,1.762,695,2.088,729,1.185,820,1.762,821,1.955,822,1.955,823,2.264,824,1.134,825,1.273,826,1.462,827,1.955,828,3.157,829,1.955,830,2.264]],["tags/63",[]],["title/64",[18,0.629,36,2.46]],["content/64",[10,1.919,23,2.895,36,3.334,225,3.424,387,3.857,443,4.724,820,4.5,821,4.994,822,4.994,823,5.782]],["tags/64",[]],["title/65",[800,3.104]],["content/65",[3,1.084,9,1.65,10,1.822,11,1.484,18,0.57,23,2.748,36,3.681,82,3.862,149,1.282,150,1.893,225,3.25,226,3.561,286,3.335,341,1.591,383,3.561,387,2.576,443,3.155,509,3.862,520,3.561,521,1.389,628,3.561,687,3.335,758,2.666,820,3.006,821,3.335,822,3.335,831,4.32,832,4.272]],["tags/65",[]],["title/66",[333,4.19]],["content/66",[12,2.975,18,0.836,36,3.266,78,3.248,833,4.221,834,4.409,835,6.336,836,6.336]],["tags/66",[]],["title/67",[375,1.488]],["content/67",[36,4.344,650,2.369,721,2.974,758,4.715,821,5.9,822,5.9,837,5.973,838,5.973]],["tags/67",[]],["title/68",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/68",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/68",[]],["title/69",[819,2.388]],["content/69",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/69",[]],["title/70",[18,0.629,601,2.136]],["content/70",[380,4.166,729,3.376,824,3.23,825,3.626,826,4.166]],["tags/70",[]],["title/71",[800,3.104]],["content/71",[2,2.806,6,4.281,18,0.773,380,3.384,616,4.525,687,4.525,721,2.281,729,3.532,819,2.324,824,3.379,825,2.945,826,3.384,841,5.861]],["tags/71",[]],["title/72",[375,1.488]],["content/72",[601,3.306,650,2.929,721,3.388]],["tags/72",[]],["title/73",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/73",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/73",[]],["title/74",[819,2.388]],["content/74",[3,0.964,10,1.14,11,1.32,15,1.158,18,1.034,29,2.006,96,1.683,237,1.758,238,1.758,323,1.758,407,1.72,415,1.72,493,1.615,601,3.296,729,3.445,745,3.924,799,1.98,824,3.296,825,3.701,842,4.12,843,4.12,844,4.12]],["tags/74",[]],["title/75",[18,0.521,601,1.769,745,2.749]],["content/75",[729,3.456,745,5.139,824,3.306,825,3.712]],["tags/75",[]],["title/76",[800,3.104]],["content/76",[1,1.772,8,2.769,18,0.907,44,2.143,48,2.329,78,1.909,339,1.603,414,2.759,437,3.14,461,3.034,481,3.541,493,1.408,495,2.23,508,2.584,577,2.584,601,3.624,715,2.445,722,2.584,729,2.381,745,5.42,776,2.759,793,2.445,824,1.498,825,1.682,826,3.555,845,2.993,846,3.347,847,3.929,848,3.347,849,3.347,850,2.759,851,2.759]],["tags/76",[]],["title/77",[375,1.488]],["content/77",[462,5.493,601,3.02,650,2.676,721,3.209,745,4.695,852,5.209]],["tags/77",[]],["title/78",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/78",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/78",[]],["title/79",[819,2.388]],["content/79",[18,0.909,380,3.982,601,3.087,729,3.227,824,3.087,825,3.466,826,3.982]],["tags/79",[]],["title/85",[18,0.521,601,1.769,842,2.886]],["content/85",[729,3.456,824,3.306,825,3.712,842,5.395]],["tags/85",[]],["title/86",[800,3.104]],["content/86",[1,2.196,18,0.921,48,2.886,78,2.237,150,1.818,339,1.986,437,3.68,461,3.556,495,2.763,577,3.202,601,3.62,715,3.03,729,1.941,793,3.03,824,1.857,825,2.084,826,4.031,842,5.576,847,4.604,850,3.419,851,3.419,853,4.148]],["tags/86",[]],["title/87",[375,1.488]],["content/87",[462,5.493,601,3.02,650,2.676,721,3.209,842,4.928,852,5.209]],["tags/87",[]],["title/88",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/88",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/88",[]],["title/89",[819,2.388]],["content/89",[18,0.909,380,3.982,601,3.087,729,3.227,824,3.087,825,3.466,826,3.982]],["tags/89",[]],["title/80",[18,0.521,601,1.769,843,2.886]],["content/80",[729,3.456,824,3.306,825,3.712,843,5.395]],["tags/80",[]],["title/81",[800,3.104]],["content/81",[18,0.826,31,3.43,78,2.349,149,1.318,150,1.947,179,3.972,245,3.972,339,2.127,437,2.742,461,3.734,521,1.428,601,3.525,628,3.662,729,2.079,805,1.476,824,1.989,825,2.233,826,2.565,843,5.752,847,4.835,854,4.443,855,4.443]],["tags/81",[]],["title/82",[375,1.488]],["content/82",[462,5.493,601,3.02,650,2.676,721,3.209,843,4.928,852,5.209]],["tags/82",[]],["title/83",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/83",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/83",[]],["title/84",[819,2.388]],["content/84",[18,0.909,380,3.982,601,3.087,729,3.227,824,3.087,825,3.466,826,3.982]],["tags/84",[]],["title/90",[18,0.521,601,1.769,844,2.886]],["content/90",[729,3.456,824,3.306,825,3.712,844,5.395]],["tags/90",[]],["title/91",[800,3.104]],["content/91",[1,1.6,4,2.104,18,0.931,48,3.274,78,2.167,150,1.325,206,1.765,323,1.383,339,1.448,437,2.903,461,2.806,495,2.014,508,2.334,577,2.334,601,3.495,715,3.437,722,2.334,729,1.414,755,2.703,776,2.492,793,2.208,824,1.353,825,1.519,826,3.764,844,5.159,845,2.703,847,3.633,850,3.878,851,2.492,856,3.023,857,2.492,858,4.705,859,3.023,860,3.023,861,3.023,862,3.023,863,3.023,864,3.023]],["tags/91",[]],["title/92",[375,1.488]],["content/92",[462,5.493,601,3.02,650,2.676,721,3.209,844,4.928,852,5.209]],["tags/92",[]],["title/93",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/93",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/93",[]],["title/94",[819,2.388]],["content/94",[18,0.909,380,3.982,601,3.087,729,3.227,824,3.087,825,3.466,826,3.982]],["tags/94",[]],["title/95",[18,0.629,204,2.46]],["content/95",[3,1.81,9,2.756,15,2.175,16,3.926,493,3.034]],["tags/95",[]],["title/96",[800,3.104]],["content/96",[]],["tags/96",[]],["title/97",[375,1.488]],["content/97",[171,1.859,192,3.162,193,3.575,195,3.449,204,3.079,436,3.079,650,2.369,721,2.974,805,1.984,865,3.25,866,3.449,867,3.449]],["tags/97",[]],["title/98",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/98",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/98",[]],["title/99",[819,2.388]],["content/99",[3,1.182,9,2.492,10,1.398,11,1.619,15,1.42,18,0.987,29,2.32,46,2.31,96,2.064,166,4.618,204,3.363,237,2.155,238,2.155,323,2.155,339,2.256,407,2.109,415,2.109,493,1.981,799,2.429,868,5.377]],["tags/99",[]],["title/100",[18,0.629,204,2.46]],["content/100",[9,2.577,18,0.89,23,3.02,150,2.957,166,4.163,204,3.478,339,3.231,868,5.561]],["tags/100",[]],["title/101",[375,1.488]],["content/101",[650,3,721,3.436]],["tags/101",[]],["title/102",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/102",[50,2.789,157,1.719,171,1.967,192,1.851,193,2.461,194,1.361,195,2.019,206,1.312,310,1.387,341,1.938,436,1.803,521,1.124,603,1.904,647,1.387,700,1.838,803,1.387,804,2.126,805,2.336,806,1.414,807,1.387,808,1.414,809,1.387,810,2.556,811,1.414,812,1.414,813,1.414,814,1.414,815,1.414,816,1.414,817,2.126,818,1.414,865,1.903,866,2.019,867,2.019]],["tags/102",[]],["title/103",[819,2.388]],["content/103",[3,1.73,9,2.634,15,2.079,16,3.753,18,0.909,204,3.555,493,2.9]],["tags/103",[]],["title/104",[18,0.521,166,2.438,204,2.037]],["content/104",[9,2.471,18,0.853,23,2.895,46,3.171,150,2.834,166,4.958,204,3.334,868,6.622]],["tags/104",[]],["title/105",[375,1.488]],["content/105",[166,4.557,650,2.929,721,3.388]],["tags/105",[]],["title/106",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/106",[50,2.789,157,1.719,171,1.967,192,1.851,193,2.461,194,1.361,195,2.019,206,1.312,310,1.387,341,1.938,436,1.803,521,1.124,603,1.904,647,1.387,700,1.838,803,1.387,804,2.126,805,2.336,806,1.414,807,1.387,808,1.414,809,1.387,810,2.556,811,1.414,812,1.414,813,1.414,814,1.414,815,1.414,816,1.414,817,2.126,818,1.414,865,1.903,866,2.019,867,2.019]],["tags/106",[]],["title/107",[819,2.388]],["content/107",[3,1.73,9,2.634,15,2.079,16,3.753,18,0.909,204,3.555,493,2.9]],["tags/107",[]],["title/108",[15,1.438,18,0.629]],["content/108",[1,3.65,11,2.369,15,2.519,18,0.909,79,4.112,150,3.022]],["tags/108",[]],["title/109",[333,4.19]],["content/109",[15,2.079,18,0.909,78,2.587,717,5.684,857,5.684,869,6.896,870,6.896]],["tags/109",[]],["title/110",[375,1.488]],["content/110",[1,0.642,2,1.419,7,1.591,9,1.59,10,1.374,11,1.43,12,1.111,13,1,15,0.366,18,0.16,22,0.886,29,0.432,35,1.344,36,0.626,37,1.527,39,0.937,41,0.749,42,0.749,43,1.828,45,0.66,46,0.595,57,1.795,78,0.817,79,0.724,96,1.298,98,0.937,149,0.36,157,1.36,163,1.153,169,1.947,170,0.68,171,1.567,172,1.711,187,1,192,0.642,193,1.386,194,1.153,197,1.085,201,1.795,202,2.23,204,2.146,206,1.561,208,1,211,1.682,215,2.649,217,1.085,218,2.79,219,2.442,221,3.431,222,1.085,223,0.886,230,1.795,231,1,232,1.515,234,2.442,237,0.555,240,0.886,241,3.721,243,1.682,244,1.947,246,2.649,254,3.576,256,1.085,257,1.085,258,1.085,259,1.085,261,1.085,262,1.085,263,0.886,302,1.947,308,1.085,340,1.682,341,0.802,346,2.649,366,1.085,375,0.3,387,0.724,419,1.591,437,0.749,443,0.886,586,1.085,603,1.506,604,2.442,650,0.864,690,2.061,692,1,717,1,718,1,721,0.848,793,0.886,803,0.481,805,0.403,809,0.481,857,1.795,865,1.185,866,1.258,867,0.701,871,1.214,872,2.178,873,1.214,874,1.214,875,2.178,876,1.214,877,1.214,878,1.214,879,1.214,880,1.214,881,1.214,882,1.214,883,0.937,884,2.178]],["tags/110",[]],["title/111",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/111",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/111",[]],["title/112",[819,2.388]],["content/112",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/112",[]],["title/113",[18,0.629,436,2.46]],["content/113",[3,1.73,15,2.079,18,0.909,150,3.022,436,4.308,695,5.684]],["tags/113",[]],["title/114",[375,1.488]],["content/114",[171,2.096,192,2.612,193,3.151,195,2.849,209,5.601,436,3.472,521,1.586,603,1.786,650,1.957,721,2.621,805,1.639,865,2.685,866,2.849,867,2.849,883,3.81,885,4.067,886,4.934,887,5.551]],["tags/114",[]],["title/115",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/115",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/115",[]],["title/116",[819,2.388]],["content/116",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/116",[]],["title/117",[18,0.629,400,3.32]],["content/117",[3,1.769,15,2.126,18,0.93,150,3.09,400,5.894]],["tags/117",[]],["title/118",[375,1.488]],["content/118",[171,1.859,192,3.162,193,3.575,195,3.449,400,4.156,436,3.079,650,2.369,721,2.974,805,1.984,865,3.25,866,3.449,867,3.449]],["tags/118",[]],["title/119",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/119",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/119",[]],["title/120",[819,2.388]],["content/120",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/120",[]],["title/121",[18,0.521,46,1.938,888,2.886]],["content/121",[3,1.898,46,3.709,413,4.116]],["tags/121",[]],["title/122",[800,3.104]],["content/122",[2,2.326,16,2.643,18,0.879,46,3.267,149,1.441,150,2.129,157,1.587,339,2.326,379,4.438,413,3.626,484,4.636,494,3.75,719,4.004,732,3.548,888,4.867,889,4.343,890,4.343,891,4.343,892,4.343,893,4.343]],["tags/122",[]],["title/123",[375,1.488]],["content/123",[18,0.788,46,2.929,157,1.952,171,1.859,211,5.9,379,3.978,521,1.92,650,2.369,721,2.974,740,4.923,888,4.363,894,5.34]],["tags/123",[]],["title/124",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/124",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/124",[]],["title/125",[819,2.388]],["content/125",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/125",[]],["title/126",[18,0.629,827,3.684]],["content/126",[3,1.898,46,3.709,413,4.116]],["tags/126",[]],["title/127",[800,3.104]],["content/127",[2,2.48,3,1.3,16,2.819,18,0.683,150,2.27,157,1.693,339,2.48,379,4.636,413,3.788,484,4.843,494,3.999,719,4.269,732,3.784,827,3.999,889,4.631,890,4.631,891,4.631,892,4.631,893,4.631]],["tags/127",[]],["title/128",[375,1.488]],["content/128",[18,0.803,157,1.99,171,1.895,211,5.973,379,4.056,521,1.957,650,2.415,721,3.011,740,5.019,827,4.701,894,5.444]],["tags/128",[]],["title/129",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/129",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/129",[]],["title/130",[819,2.388]],["content/130",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/130",[]],["title/131",[18,0.629,45,2.597]],["content/131",[1,3.65,18,0.909,42,4.255,45,4.548,150,3.022,395,5.324]],["tags/131",[]],["title/132",[375,1.488]],["content/132",[36,3.021,45,3.189,171,1.824,250,5.24,527,6.883,650,2.324,721,2.938,805,1.947,807,2.324,865,3.189,895,5.861,896,5.861]],["tags/132",[]],["title/133",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/133",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/133",[]],["title/134",[819,2.388]],["content/134",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/134",[]],["title/135",[18,0.629,828,3.684]],["content/135",[3,1.47,11,2.594,15,1.767,18,0.773,23,2.623,29,2.685,51,3.102,79,3.495,150,2.568,225,3.102,339,2.806,828,5.829]],["tags/135",[]],["title/136",[375,1.488]],["content/136",[171,2.274,192,2.386,193,2.96,195,2.602,209,5.788,221,3.715,436,2.323,521,1.449,603,1.631,650,1.787,721,2.462,805,1.497,828,3.48,865,2.453,866,2.602,867,2.602,883,3.48,885,5.214,887,5.214,897,6.326,898,4.507]],["tags/136",[]],["title/137",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/137",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/137",[]],["title/138",[819,2.388]],["content/138",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/138",[]],["title/139",[18,0.629,829,3.684]],["content/139",[3,1.769,15,2.126,18,0.93,150,3.09,829,5.445,830,6.305]],["tags/139",[]],["title/140",[375,1.488]],["content/140",[171,1.859,192,3.162,193,3.575,195,3.449,436,3.079,650,2.369,721,2.974,805,1.984,829,4.611,865,3.25,866,3.449,867,3.449]],["tags/140",[]],["title/141",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/141",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/141",[]],["title/142",[819,2.388]],["content/142",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/142",[]],["title/143",[18,0.629,690,3.32]],["content/143",[3,1.853,15,2.226,202,4.557,305,5.702]],["tags/143",[]],["title/144",[800,3.104]],["content/144",[11,2.177,15,1.91,18,0.836,36,3.266,150,2.777,172,3.659,202,3.91,218,4.892,305,4.892,690,4.409,899,6.336]],["tags/144",[]],["title/145",[375,1.488]],["content/145",[171,1.859,192,3.162,193,3.575,195,3.449,436,3.079,650,2.369,690,4.156,721,2.974,805,1.984,865,3.25,866,3.449,867,3.449]],["tags/145",[]],["title/146",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/146",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/146",[]],["title/147",[819,2.388]],["content/147",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/147",[]],["title/148",[18,0.629,568,2.845]],["content/148",[3,1.623,15,1.95,16,3.519,18,0.853,51,3.424,150,2.834,375,1.599,413,3.519,568,4.791]],["tags/148",[]],["title/149",[333,4.19]],["content/149",[15,1.42,17,3.441,18,0.621,78,1.767,568,2.809,704,6.237,718,3.883,900,6.524,901,6.524,902,6.524,903,6.524,904,6.524,905,6.524,906,6.524,907,6.524,908,6.524]],["tags/149",[]],["title/150",[375,1.488]],["content/150",[51,2.886,171,1.696,209,5.89,521,1.752,568,4.294,603,1.973,650,2.162,721,2.802,865,2.966,883,4.209,885,4.493,887,5.935,909,5.451,910,5.451]],["tags/150",[]],["title/151",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/151",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/151",[]],["title/152",[819,2.388]],["content/152",[3,1.47,10,1.739,11,2.014,15,1.767,18,0.773,29,2.685,96,2.568,237,2.681,238,2.681,323,2.681,407,2.623,415,2.623,493,2.465,799,3.021]],["tags/152",[]],["title/153",[12,1.79,18,0.629]],["content/153",[10,2.3,149,2.3]],["tags/153",[]],["title/154",[800,3.104]],["content/154",[10,1.488,12,1.881,15,1.511,16,2.728,117,3.34,149,2.461,203,6.372,303,4.482,339,2.401,480,4.132,481,3.488,687,5.257,911,5.014,912,5.014,913,5.014,914,5.014,915,5.014,916,5.014]],["tags/154",[]],["title/155",[375,1.488]],["content/155",[12,2.77,650,2.929,721,3.388]],["tags/155",[]],["title/156",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/156",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/156",[]],["title/157",[819,2.388]],["content/157",[3,0.737,9,1.758,10,1.683,11,1.949,12,2.614,15,0.886,18,0.975,23,2.539,29,1.636,51,3.002,96,1.287,225,1.555,237,1.344,238,1.344,269,1.957,293,2.044,323,1.344,339,2.203,380,1.696,407,1.315,415,1.315,493,1.235,521,1.823,617,3.361,758,3.5,799,1.514,820,2.044,824,2.06,832,3.946,833,1.957,834,2.044,917,3.792,918,4.143,919,2.268,920,2.421,921,2.421,922,2.268]],["tags/157",[]],["title/158",[12,1.482,18,0.521,833,2.632]],["content/158",[12,2.329,18,0.819,23,2.78,150,2.721,293,4.321,521,1.996,758,3.832,824,2.78,832,4.321,833,4.137,917,5.119,918,4.536]],["tags/158",[]],["title/159",[375,1.488]],["content/159",[650,2.929,721,3.388,833,4.92]],["tags/159",[]],["title/160",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/160",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/160",[]],["title/161",[819,2.388]],["content/161",[10,2.191,12,2.77,18,0.974,149,2.191]],["tags/161",[]],["title/162",[12,1.482,18,0.521,919,3.051]],["content/162",[12,2.329,18,0.819,23,2.78,150,2.721,521,1.996,758,3.832,824,2.78,832,4.321,917,5.119,918,4.536,919,4.795,920,5.119]],["tags/162",[]],["title/163",[375,1.488]],["content/163",[650,2.929,721,3.388,919,5.702]],["tags/163",[]],["title/164",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/164",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/164",[]],["title/165",[819,2.388]],["content/165",[10,2.191,12,2.77,18,0.974,149,2.191]],["tags/165",[]],["title/166",[12,1.482,18,0.521,834,2.749]],["content/166",[23,3.087,225,3.65,521,2.217,758,4.255,820,4.798,832,4.798,918,5.037]],["tags/166",[]],["title/167",[800,3.104]],["content/167",[12,2.01,18,0.707,23,3.187,150,2.348,225,2.836,293,3.728,520,4.416,521,1.722,758,3.306,820,3.728,824,2.398,832,4.953,833,3.569,834,3.728,918,5.2,923,4.79,924,4.79]],["tags/167",[]],["title/168",[333,4.19]],["content/168",[12,2.582,23,3.081,48,3.545,78,3.37,225,2.697,293,3.545,761,4.555,824,2.281,833,3.394,834,3.545,923,4.555,925,5.095,926,5.095,927,5.095,928,5.095,929,5.095]],["tags/168",[]],["title/169",[375,1.488]],["content/169",[650,2.929,721,3.388,834,5.139]],["tags/169",[]],["title/170",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/170",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/170",[]],["title/171",[819,2.388]],["content/171",[10,2.191,12,2.77,18,0.974,149,2.191]],["tags/171",[]],["title/172",[12,1.482,18,0.521,51,2.092]],["content/172",[9,2.577,10,2.002,11,2.318,51,3.572,339,3.231,380,3.896,617,4.928,921,5.561]],["tags/172",[]],["title/173",[800,3.104]],["content/173",[2,0.848,6,1.294,9,0.677,10,0.901,11,2.344,12,0.664,18,0.234,23,2.772,29,1.079,35,1.873,51,1.607,52,2.653,71,1.294,78,3.075,79,1.81,93,1.583,101,2.344,148,1.46,150,0.776,159,2.714,171,0.551,181,2.217,182,1.873,187,2.502,225,2.108,247,2.502,286,2.344,293,2.112,317,2.714,331,2.714,339,0.848,375,0.438,380,3.344,382,1.583,511,1.46,527,2.502,603,0.641,606,2.714,617,2.909,625,1.46,677,1.583,691,2.714,729,1.42,732,2.217,758,3.276,920,2.502,921,1.46,924,1.583,930,1.771,931,1.771,932,1.771,933,3.035,934,1.771,935,1.771,936,3.983,937,1.771,938,1.771,939,1.771,940,1.771,941,3.035,942,1.771,943,3.035,944,3.983,945,1.771,946,1.771]],["tags/173",[]],["title/174",[375,1.488]],["content/174",[51,3.162,171,1.859,192,3.162,193,3.575,195,3.449,436,3.079,650,2.369,721,2.974,805,1.984,865,3.25,866,3.449,867,3.449]],["tags/174",[]],["title/175",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/175",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/175",[]],["title/176",[819,2.388]],["content/176",[10,2.191,12,2.77,18,0.974,149,2.191]],["tags/176",[]],["title/177",[12,1.482,18,0.521,922,3.051]],["content/177",[9,2.634,10,2.046,11,2.369,51,3.65,269,4.594,339,3.302,617,5.037]],["tags/177",[]],["title/178",[800,3.104]],["content/178",[9,2.326,11,2.658,12,2.284,18,0.803,51,3.223,79,4.613,150,2.668,203,5.019,209,4.448,339,2.916,922,4.701]],["tags/178",[]],["title/179",[375,1.488]],["content/179",[171,1.859,192,3.162,193,3.575,195,3.449,436,3.079,650,2.369,721,2.974,805,1.984,865,3.25,866,3.449,867,3.449,922,4.611]],["tags/179",[]],["title/180",[149,1.001,375,0.834,839,1.39,840,1.39]],["content/180",[50,2.955,157,1.877,171,1.787,194,1.533,206,1.477,310,1.562,341,2.116,521,1.266,603,2.079,647,1.562,700,2.008,803,1.562,804,2.322,805,2.252,806,1.592,807,1.562,808,1.592,809,1.562,810,2.741,811,1.592,812,1.592,813,1.592,814,1.592,815,1.592,816,1.592,817,2.322,818,1.592]],["tags/180",[]],["title/181",[819,2.388]],["content/181",[10,2.191,12,2.77,18,0.974,149,2.191]],["tags/181",[]],["title/182",[46,2.34,888,3.485]],["content/182",[3,1.498,18,0.788,46,3.747,54,3.978,71,4.363,149,1.772,616,4.611,704,4.611,795,5.34,888,5.582,947,5.973,948,5.973]],["tags/182",[]],["title/183",[2,2.285,297,3.933]],["content/183",[]],["tags/183",[]],["title/184",[9,1.823,405,4.266]],["content/184",[18,1.022,949,6.39]],["tags/184",[]],["title/185",[1,1.557,10,0.873,15,0.886,407,1.316,415,1.316]],["content/185",[18,0.998,949,6.235,950,7.564]],["tags/185",[]],["title/186",[29,1.697,223,3.485]],["content/186",[18,0.871,129,5.904,163,3.496,170,3.699,230,5.443,232,5.664,336,4.399,949,5.443]],["tags/186",[]]],"invertedIndex":[["",{"_index":78,"title":{"25":{}},"content":{"5":{},"10":{},"13":{},"18":{},"26":{},"32":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"50":{},"52":{},"53":{},"66":{},"76":{},"81":{},"86":{},"91":{},"109":{},"110":{},"149":{},"168":{},"173":{}},"tags":{}}],["0",{"_index":309,"title":{},"content":{"13":{},"15":{}},"tags":{}}],["077",{"_index":927,"title":{},"content":{"168":{}},"tags":{}}],["09",{"_index":906,"title":{},"content":{"149":{}},"tags":{}}],["09t13:44:22+02:00",{"_index":907,"title":{},"content":{"149":{}},"tags":{}}],["1",{"_index":595,"title":{},"content":{"32":{}},"tags":{}}],["10",{"_index":356,"title":{},"content":{"15":{}},"tags":{}}],["100",{"_index":476,"title":{},"content":{"21":{}},"tags":{}}],["1001",{"_index":545,"title":{},"content":{"26":{}},"tags":{}}],["169.254.29.188/16",{"_index":836,"title":{},"content":{"66":{}},"tags":{}}],["1:1",{"_index":287,"title":{},"content":{"13":{}},"tags":{}}],["1s",{"_index":162,"title":{},"content":{"13":{}},"tags":{}}],["2",{"_index":21,"title":{},"content":{"2":{}},"tags":{}}],["2.0",{"_index":111,"title":{},"content":{"7":{},"8":{}},"tags":{}}],["200m",{"_index":307,"title":{},"content":{"13":{}},"tags":{}}],["2022",{"_index":113,"title":{},"content":{"7":{}},"tags":{}}],["28865",{"_index":675,"title":{},"content":{"38":{}},"tags":{}}],["2s",{"_index":322,"title":{},"content":{"13":{}},"tags":{}}],["3",{"_index":673,"title":{},"content":{"38":{}},"tags":{}}],["319",{"_index":674,"title":{},"content":{"38":{}},"tags":{}}],["3478",{"_index":357,"title":{},"content":{"15":{}},"tags":{}}],["3600",{"_index":354,"title":{},"content":{"15":{},"16":{}},"tags":{}}],["37281",{"_index":541,"title":{},"content":{"26":{}},"tags":{}}],["38767",{"_index":548,"title":{},"content":{"26":{}},"tags":{}}],["4",{"_index":837,"title":{},"content":{"67":{}},"tags":{}}],["49152",{"_index":301,"title":{},"content":{"13":{}},"tags":{}}],["52820",{"_index":189,"title":{},"content":{"13":{}},"tags":{}}],["5349",{"_index":364,"title":{},"content":{"15":{}},"tags":{}}],["554869826",{"_index":543,"title":{},"content":{"26":{}},"tags":{}}],["5s",{"_index":313,"title":{},"content":{"13":{}},"tags":{}}],["6",{"_index":838,"title":{},"content":{"67":{}},"tags":{}}],["65535",{"_index":191,"title":{},"content":{"13":{}},"tags":{}}],["7",{"_index":283,"title":{},"content":{"13":{}},"tags":{}}],["700",{"_index":743,"title":{},"content":{"50":{}},"tags":{}}],["8080",{"_index":895,"title":{},"content":{"132":{}},"tags":{}}],["870620",{"_index":123,"title":{},"content":{"8":{}},"tags":{}}],["9_28",{"_index":676,"title":{},"content":{"38":{}},"tags":{}}],["_cunicu",{"_index":861,"title":{},"content":{"91":{}},"tags":{}}],["_stun._udp.example.com",{"_index":353,"title":{},"content":{"15":{}},"tags":{}}],["_stuns._tcp.example.com",{"_index":359,"title":{},"content":{"15":{}},"tags":{}}],["_turn._tcp.example.com",{"_index":362,"title":{},"content":{"15":{}},"tags":{}}],["_turn._udp.example.com",{"_index":360,"title":{},"content":{"15":{}},"tags":{}}],["_turns._tcp.example.com",{"_index":363,"title":{},"content":{"15":{}},"tags":{}}],["aachen",{"_index":68,"title":{},"content":{"4":{},"7":{}},"tags":{}}],["abil",{"_index":749,"title":{},"content":{"51":{}},"tags":{}}],["abov",{"_index":245,"title":{},"content":{"13":{},"81":{}},"tags":{}}],["accept",{"_index":226,"title":{},"content":{"13":{},"26":{},"65":{}},"tags":{}}],["access",{"_index":663,"title":{},"content":{"38":{}},"tags":{}}],["accordingli",{"_index":47,"title":{},"content":{"2":{},"13":{}},"tags":{}}],["acknowledg",{"_index":115,"title":{"8":{}},"content":{},"tags":{}}],["acl",{"_index":664,"title":{},"content":{"38":{}},"tags":{}}],["actor",{"_index":584,"title":{},"content":{"32":{},"38":{}},"tags":{}}],["ad",{"_index":519,"title":{},"content":{"26":{}},"tags":{}}],["add",{"_index":31,"title":{},"content":{"2":{},"38":{},"49":{},"81":{}},"tags":{}}],["addit",{"_index":788,"title":{},"content":{"56":{}},"tags":{}}],["address",{"_index":36,"title":{"64":{}},"content":{"2":{},"13":{},"20":{},"24":{},"29":{},"36":{},"63":{},"64":{},"65":{},"66":{},"67":{},"110":{},"132":{},"144":{}},"tags":{}}],["addressesendpoint_disc",{"_index":235,"title":{},"content":{"13":{}},"tags":{}}],["agent",{"_index":266,"title":{},"content":{"13":{},"18":{},"22":{},"25":{},"32":{},"38":{}},"tags":{}}],["agent
2",{"_index":596,"title":{},"content":{"32":{}},"tags":{}}],["agreement",{"_index":122,"title":{},"content":{"8":{}},"tags":{}}],["al",{"_index":342,"title":{},"content":{"15":{}},"tags":{}}],["allevi",{"_index":406,"title":{},"content":{"18":{}},"tags":{}}],["alloc",{"_index":469,"title":{},"content":{"20":{},"25":{}},"tags":{}}],["allow",{"_index":247,"title":{},"content":{"13":{},"55":{},"173":{}},"tags":{}}],["allowedip",{"_index":217,"title":{},"content":{"13":{},"110":{}},"tags":{}}],["alongsid",{"_index":504,"title":{},"content":{"22":{}},"tags":{}}],["alreadi",{"_index":845,"title":{},"content":{"76":{},"91":{}},"tags":{}}],["altern",{"_index":158,"title":{},"content":{"13":{}},"tags":{}}],["alway",{"_index":806,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["amd",{"_index":726,"title":{},"content":{"49":{}},"tags":{}}],["amount",{"_index":272,"title":{},"content":{"13":{}},"tags":{}}],["analysi",{"_index":503,"title":{},"content":{"21":{}},"tags":{}}],["and/or",{"_index":880,"title":{},"content":{"110":{}},"tags":{}}],["android",{"_index":685,"title":{},"content":{"38":{}},"tags":{}}],["answer",{"_index":280,"title":{},"content":{"13":{}},"tags":{}}],["aozzbansov7p8vo0d5umuijuq7ajmbhbgt2ea8eauec",{"_index":229,"title":{},"content":{"13":{}},"tags":{}}],["apach",{"_index":110,"title":{},"content":{"7":{}},"tags":{}}],["api",{"_index":397,"title":{},"content":{"18":{},"27":{},"35":{}},"tags":{}}],["appli",{"_index":216,"title":{},"content":{"13":{}},"tags":{}}],["apt",{"_index":751,"title":{"52":{}},"content":{"52":{}},"tags":{}}],["arch=$(dpkg",{"_index":757,"title":{},"content":{"52":{}},"tags":{}}],["arch=arm64",{"_index":902,"title":{},"content":{"149":{}},"tags":{}}],["architectur",{"_index":446,"title":{"19":{}},"content":{"49":{},"52":{}},"tags":{}}],["argument",{"_index":153,"title":{},"content":{"12":{}},"tags":{}}],["arm64",{"_index":727,"title":{},"content":{"49":{}},"tags":{}}],["armv6",{"_index":724,"title":{},"content":{"49":{}},"tags":{}}],["armv8",{"_index":725,"title":{},"content":{"49":{}},"tags":{}}],["around",{"_index":467,"title":{},"content":{"20":{}},"tags":{}}],["assign",{"_index":509,"title":{},"content":{"25":{},"65":{}},"tags":{}}],["assum",{"_index":571,"title":{},"content":{"32":{}},"tags":{}}],["asymmetr",{"_index":608,"title":{},"content":{"33":{}},"tags":{}}],["at=2022",{"_index":905,"title":{},"content":{"149":{}},"tags":{}}],["attack",{"_index":425,"title":{},"content":{"18":{}},"tags":{}}],["attempt",{"_index":33,"title":{},"content":{"2":{},"13":{},"38":{}},"tags":{}}],["attribut",{"_index":931,"title":{},"content":{"173":{}},"tags":{}}],["authent",{"_index":890,"title":{},"content":{"122":{},"127":{}},"tags":{}}],["authentic/19543988",{"_index":671,"title":{},"content":{"38":{}},"tags":{}}],["author",{"_index":58,"title":{"4":{}},"content":{},"tags":{}}],["auto",{"_index":341,"title":{"15":{},"39":{}},"content":{"16":{},"62":{},"65":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"110":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["autocomplet",{"_index":825,"title":{},"content":{"63":{},"70":{},"71":{},"74":{},"75":{},"76":{},"79":{},"80":{},"81":{},"84":{},"85":{},"86":{},"89":{},"90":{},"91":{},"94":{}},"tags":{}}],["autoload",{"_index":856,"title":{},"content":{"91":{}},"tags":{}}],["autom",{"_index":63,"title":{},"content":{"4":{},"7":{},"13":{},"21":{},"49":{}},"tags":{}}],["automat",{"_index":730,"title":{},"content":{"50":{}},"tags":{}}],["autonumb",{"_index":583,"title":{},"content":{"32":{}},"tags":{}}],["avail",{"_index":28,"title":{"35":{}},"content":{"2":{},"12":{},"13":{},"18":{},"35":{}},"tags":{}}],["avoid",{"_index":104,"title":{},"content":{"6":{},"38":{}},"tags":{}}],["aw",{"_index":290,"title":{},"content":{"13":{}},"tags":{}}],["await",{"_index":458,"title":{},"content":{"20":{}},"tags":{}}],["awesom",{"_index":479,"title":{},"content":{"21":{},"61":{}},"tags":{}}],["b",{"_index":586,"title":{},"content":{"32":{},"110":{}},"tags":{}}],["back",{"_index":599,"title":{},"content":{"32":{}},"tags":{}}],["backend",{"_index":163,"title":{"34":{},"35":{}},"content":{"13":{},"14":{},"15":{},"18":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"110":{},"186":{}},"tags":{}}],["backend=p2p",{"_index":365,"title":{},"content":{"15":{}},"tags":{}}],["base",{"_index":831,"title":{},"content":{"65":{}},"tags":{}}],["base64",{"_index":918,"title":{},"content":{"157":{},"158":{},"162":{},"166":{},"167":{}},"tags":{}}],["baseurl=https://packages.riasc.eu/yum",{"_index":772,"title":{},"content":{"53":{}},"tags":{}}],["bash",{"_index":745,"title":{"75":{}},"content":{"50":{},"74":{},"75":{},"76":{},"77":{}},"tags":{}}],["befor",{"_index":692,"title":{},"content":{"38":{},"50":{},"110":{}},"tags":{}}],["behind",{"_index":294,"title":{},"content":{"13":{},"18":{}},"tags":{}}],["better",{"_index":682,"title":{},"content":{"38":{}},"tags":{}}],["between",{"_index":26,"title":{},"content":{"2":{},"6":{},"18":{},"24":{},"29":{},"30":{},"36":{}},"tags":{}}],["binari",{"_index":413,"title":{"48":{}},"content":{"18":{},"47":{},"48":{},"49":{},"56":{},"61":{},"63":{},"121":{},"122":{},"126":{},"127":{},"148":{}},"tags":{}}],["bind",{"_index":273,"title":{},"content":{"13":{},"26":{}},"tags":{}}],["block",{"_index":196,"title":{},"content":{"13":{},"18":{}},"tags":{}}],["both",{"_index":611,"title":{},"content":{"33":{}},"tags":{}}],["bpf",{"_index":507,"title":{"25":{}},"content":{},"tags":{}}],["branch=mast",{"_index":904,"title":{},"content":{"149":{}},"tags":{}}],["brew",{"_index":776,"title":{},"content":{"54":{},"76":{},"91":{}},"tags":{}}],["broaden",{"_index":102,"title":{},"content":{"6":{}},"tags":{}}],["buffer",{"_index":634,"title":{},"content":{"36":{}},"tags":{}}],["build",{"_index":92,"title":{},"content":{"6":{},"55":{}},"tags":{}}],["built",{"_index":704,"title":{},"content":{"47":{},"56":{},"149":{},"182":{}},"tags":{}}],["bundl",{"_index":167,"title":{},"content":{"13":{},"18":{},"61":{}},"tags":{}}],["burrow",{"_index":88,"title":{},"content":{"6":{}},"tags":{}}],["by=goreleas",{"_index":908,"title":{},"content":{"149":{}},"tags":{}}],["c",{"_index":803,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"110":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["cach",{"_index":783,"title":{},"content":{"55":{}},"tags":{}}],["calcul",{"_index":820,"title":{},"content":{"63":{},"64":{},"65":{},"157":{},"166":{},"167":{}},"tags":{}}],["call",{"_index":925,"title":{},"content":{"168":{}},"tags":{}}],["candid",{"_index":43,"title":{},"content":{"2":{},"13":{},"18":{},"20":{},"26":{},"32":{},"34":{},"38":{},"110":{}},"tags":{}}],["candidate
1",{"_index":600,"title":{},"content":{"32":{}},"tags":{}}],["candidate_typ",{"_index":260,"title":{},"content":{"13":{}},"tags":{}}],["cant",{"_index":249,"title":{},"content":{"13":{}},"tags":{}}],["carri",{"_index":607,"title":{},"content":{"33":{}},"tags":{}}],["case",{"_index":297,"title":{"183":{}},"content":{"13":{},"56":{}},"tags":{}}],["cat",{"_index":767,"title":{},"content":{"53":{}},"tags":{}}],["categori",{"_index":940,"title":{},"content":{"173":{}},"tags":{}}],["certif",{"_index":251,"title":{},"content":{"13":{},"16":{}},"tags":{}}],["chain",{"_index":522,"title":{},"content":{"26":{}},"tags":{}}],["chang",{"_index":98,"title":{},"content":{"6":{},"13":{},"38":{},"110":{}},"tags":{}}],["channel",{"_index":75,"title":{},"content":{"5":{}},"tags":{}}],["check",{"_index":268,"title":{},"content":{"13":{},"21":{},"32":{},"38":{}},"tags":{}}],["check_interv",{"_index":306,"title":{},"content":{"13":{}},"tags":{}}],["checkout",{"_index":614,"title":{},"content":{"33":{},"35":{}},"tags":{}}],["chmod",{"_index":716,"title":{},"content":{"49":{},"50":{}},"tags":{}}],["choosen",{"_index":91,"title":{},"content":{"6":{}},"tags":{}}],["ci",{"_index":497,"title":{},"content":{"21":{}},"tags":{}}],["client",{"_index":718,"title":{},"content":{"49":{},"110":{},"149":{}},"tags":{}}],["close",{"_index":602,"title":{},"content":{"32":{}},"tags":{}}],["cluster",{"_index":620,"title":{},"content":{"35":{}},"tags":{}}],["codaci",{"_index":499,"title":{},"content":{"21":{}},"tags":{}}],["code",{"_index":496,"title":{},"content":{"21":{}},"tags":{}}],["codecov",{"_index":501,"title":{},"content":{"21":{}},"tags":{}}],["color",{"_index":804,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["combin",{"_index":384,"title":{},"content":{"16":{}},"tags":{}}],["command",{"_index":149,"title":{"12":{},"58":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"content":{"12":{},"16":{},"38":{},"58":{},"63":{},"65":{},"81":{},"110":{},"122":{},"153":{},"154":{},"161":{},"165":{},"171":{},"176":{},"181":{},"182":{}},"tags":{}}],["command'",{"_index":841,"title":{},"content":{"71":{}},"tags":{}}],["commerci",{"_index":135,"title":{},"content":{"10":{}},"tags":{}}],["commit=b22ee3e7",{"_index":903,"title":{},"content":{"149":{}},"tags":{}}],["common",{"_index":233,"title":{},"content":{"13":{}},"tags":{}}],["commun",{"_index":232,"title":{},"content":{"13":{},"15":{},"18":{},"49":{},"110":{},"186":{}},"tags":{}}],["community=mi",{"_index":367,"title":{},"content":{"15":{}},"tags":{}}],["compar",{"_index":134,"title":{},"content":{"10":{}},"tags":{}}],["comparison",{"_index":128,"title":{"10":{}},"content":{},"tags":{}}],["compat",{"_index":430,"title":{},"content":{"18":{}},"tags":{}}],["compdef",{"_index":860,"title":{},"content":{"91":{}},"tags":{}}],["compil",{"_index":567,"title":{},"content":{"30":{},"55":{}},"tags":{}}],["compinit",{"_index":858,"title":{},"content":{"91":{}},"tags":{}}],["complet",{"_index":601,"title":{"70":{},"75":{},"80":{},"85":{},"90":{}},"content":{"32":{},"63":{},"72":{},"74":{},"76":{},"77":{},"79":{},"81":{},"82":{},"84":{},"86":{},"87":{},"89":{},"91":{},"92":{},"94":{}},"tags":{}}],["complex",{"_index":64,"title":{},"content":{"4":{},"7":{}},"tags":{}}],["conclus",{"_index":786,"title":{"56":{}},"content":{},"tags":{}}],["conf",{"_index":212,"title":{},"content":{"13":{}},"tags":{}}],["config",{"_index":204,"title":{"40":{},"95":{},"100":{},"104":{}},"content":{"13":{},"15":{},"16":{},"63":{},"97":{},"99":{},"100":{},"103":{},"104":{},"107":{},"110":{}},"tags":{}}],["config/fish/completions/cunicu.fish",{"_index":853,"title":{},"content":{"86":{}},"tags":{}}],["config=https://example.com/cunicu.yaml",{"_index":370,"title":{},"content":{"15":{},"16":{}},"tags":{}}],["config_sync",{"_index":205,"title":{},"content":{"13":{}},"tags":{}}],["configur",{"_index":9,"title":{"11":{},"13":{},"15":{},"16":{},"39":{},"184":{}},"content":{"2":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"18":{},"55":{},"63":{},"65":{},"95":{},"99":{},"100":{},"103":{},"104":{},"107":{},"110":{},"157":{},"172":{},"173":{},"177":{},"178":{}},"tags":{}}],["conn.bind",{"_index":555,"title":{},"content":{"30":{}},"tags":{}}],["connect",{"_index":237,"title":{},"content":{"13":{},"20":{},"32":{},"60":{},"61":{},"69":{},"74":{},"99":{},"110":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"138":{},"142":{},"147":{},"152":{},"157":{}},"tags":{}}],["consgpwvpdpahc8u+dbbwgztadcd6+1bvpiyg10wdci",{"_index":228,"title":{},"content":{"13":{}},"tags":{}}],["construct",{"_index":701,"title":{},"content":{"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{}},"tags":{}}],["contact",{"_index":40,"title":{},"content":{"2":{}},"tags":{}}],["contain",{"_index":606,"title":{},"content":{"33":{},"173":{}},"tags":{}}],["context",{"_index":694,"title":{},"content":{"38":{}},"tags":{}}],["context.context",{"_index":643,"title":{},"content":{"37":{}},"tags":{}}],["continu",{"_index":879,"title":{},"content":{"110":{}},"tags":{}}],["contrast",{"_index":912,"title":{},"content":{"154":{}},"tags":{}}],["control",{"_index":192,"title":{},"content":{"13":{},"32":{},"38":{},"97":{},"102":{},"106":{},"110":{},"114":{},"118":{},"136":{},"140":{},"145":{},"174":{},"179":{}},"tags":{}}],["convert",{"_index":326,"title":{},"content":{"14":{}},"tags":{}}],["copyright",{"_index":112,"title":{},"content":{"7":{}},"tags":{}}],["correspond",{"_index":923,"title":{},"content":{"167":{},"168":{}},"tags":{}}],["cover",{"_index":787,"title":{},"content":{"56":{}},"tags":{}}],["coverag",{"_index":502,"title":{},"content":{"21":{}},"tags":{}}],["creat",{"_index":22,"title":{},"content":{"2":{},"13":{},"29":{},"32":{},"110":{}},"tags":{}}],["credenti",{"_index":243,"title":{},"content":{"13":{},"32":{},"34":{},"110":{}},"tags":{}}],["credentials
1",{"_index":597,"title":{},"content":{"32":{}},"tags":{}}],["crypto.key",{"_index":655,"title":{},"content":{"37":{}},"tags":{}}],["crypto.keypair",{"_index":645,"title":{},"content":{"37":{}},"tags":{}}],["cryptographi",{"_index":609,"title":{},"content":{"33":{}},"tags":{}}],["cunico",{"_index":913,"title":{},"content":{"154":{}},"tags":{}}],["cunicu",{"_index":18,"title":{"60":{},"64":{},"70":{},"75":{},"80":{},"85":{},"90":{},"95":{},"100":{},"104":{},"108":{},"113":{},"117":{},"121":{},"126":{},"131":{},"135":{},"139":{},"143":{},"148":{},"153":{},"158":{},"162":{},"166":{},"172":{},"177":{}},"content":{"2":{},"5":{},"11":{},"12":{},"15":{},"16":{},"26":{},"38":{},"49":{},"52":{},"54":{},"58":{},"62":{},"63":{},"65":{},"66":{},"69":{},"71":{},"74":{},"76":{},"79":{},"81":{},"84":{},"86":{},"89":{},"91":{},"94":{},"99":{},"100":{},"103":{},"104":{},"107":{},"108":{},"109":{},"110":{},"112":{},"113":{},"116":{},"117":{},"120":{},"122":{},"123":{},"125":{},"127":{},"128":{},"130":{},"131":{},"134":{},"135":{},"138":{},"139":{},"142":{},"144":{},"147":{},"148":{},"149":{},"152":{},"157":{},"158":{},"161":{},"162":{},"165":{},"167":{},"171":{},"173":{},"176":{},"178":{},"181":{},"182":{},"184":{},"185":{},"186":{}},"tags":{}}],["cunicu.yaml",{"_index":160,"title":{},"content":{"13":{}},"tags":{}}],["cunicu_",{"_index":329,"title":{},"content":{"14":{}},"tags":{}}],["cunicu_0.0.1_linux_amd64",{"_index":713,"title":{},"content":{"49":{}},"tags":{}}],["cunicu_0.0.1_linux_amd64.gz",{"_index":711,"title":{},"content":{"49":{}},"tags":{}}],["cunicu_endpoint_disc_ice_max_binding_request",{"_index":335,"title":{},"content":{"14":{}},"tags":{}}],["cunucu",{"_index":915,"title":{},"content":{"154":{}},"tags":{}}],["cunīcu",{"_index":3,"title":{},"content":{"2":{},"3":{},"6":{},"7":{},"8":{},"10":{},"13":{},"15":{},"16":{},"21":{},"22":{},"24":{},"25":{},"26":{},"29":{},"30":{},"34":{},"47":{},"48":{},"49":{},"50":{},"51":{},"53":{},"55":{},"56":{},"60":{},"63":{},"65":{},"69":{},"74":{},"95":{},"99":{},"103":{},"107":{},"112":{},"113":{},"116":{},"117":{},"120":{},"121":{},"125":{},"126":{},"127":{},"130":{},"134":{},"135":{},"138":{},"139":{},"142":{},"143":{},"147":{},"148":{},"152":{},"157":{},"182":{}},"tags":{}}],["cunīculu",{"_index":85,"title":{},"content":{"6":{}},"tags":{}}],["curl",{"_index":738,"title":{},"content":{"50":{}},"tags":{}}],["current",{"_index":339,"title":{},"content":{"14":{},"38":{},"63":{},"76":{},"81":{},"86":{},"91":{},"99":{},"100":{},"122":{},"127":{},"135":{},"154":{},"157":{},"172":{},"173":{},"177":{},"178":{}},"tags":{}}],["d",{"_index":809,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"110":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["d)nat",{"_index":288,"title":{},"content":{"13":{}},"tags":{}}],["daemon",{"_index":15,"title":{"59":{},"108":{},"185":{}},"content":{"2":{},"11":{},"12":{},"13":{},"15":{},"16":{},"18":{},"38":{},"59":{},"60":{},"63":{},"69":{},"74":{},"95":{},"99":{},"103":{},"107":{},"108":{},"109":{},"110":{},"112":{},"113":{},"116":{},"117":{},"120":{},"125":{},"130":{},"134":{},"135":{},"138":{},"139":{},"142":{},"143":{},"144":{},"147":{},"148":{},"149":{},"152":{},"154":{},"157":{}},"tags":{}}],["deb",{"_index":756,"title":{},"content":{"52":{}},"tags":{}}],["debian",{"_index":752,"title":{"52":{}},"content":{},"tags":{}}],["debug",{"_index":811,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["dedic",{"_index":552,"title":{},"content":{"29":{},"35":{}},"tags":{}}],["default",{"_index":171,"title":{},"content":{"13":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"97":{},"98":{},"102":{},"106":{},"110":{},"111":{},"114":{},"115":{},"118":{},"119":{},"123":{},"124":{},"128":{},"129":{},"132":{},"133":{},"136":{},"137":{},"140":{},"141":{},"145":{},"146":{},"150":{},"151":{},"156":{},"160":{},"164":{},"170":{},"173":{},"174":{},"175":{},"179":{},"180":{}},"tags":{}}],["deleg",{"_index":914,"title":{},"content":{"154":{}},"tags":{}}],["delet",{"_index":689,"title":{},"content":{"38":{}},"tags":{}}],["deliv",{"_index":627,"title":{},"content":{"36":{}},"tags":{}}],["deliveri",{"_index":624,"title":{},"content":{"36":{}},"tags":{}}],["depend",{"_index":414,"title":{},"content":{"18":{},"55":{},"76":{}},"tags":{}}],["deriv",{"_index":82,"title":{},"content":{"6":{},"65":{}},"tags":{}}],["describ",{"_index":147,"title":{},"content":{"11":{}},"tags":{}}],["descript",{"_index":462,"title":{"33":{}},"content":{"20":{},"33":{},"77":{},"82":{},"87":{},"92":{}},"tags":{}}],["design",{"_index":390,"title":{"17":{}},"content":{},"tags":{}}],["desir",{"_index":708,"title":{},"content":{"49":{}},"tags":{}}],["destin",{"_index":526,"title":{},"content":{"26":{},"49":{}},"tags":{}}],["detail",{"_index":616,"title":{},"content":{"33":{},"58":{},"71":{},"182":{}},"tags":{}}],["determin",{"_index":316,"title":{},"content":{"13":{}},"tags":{}}],["develop",{"_index":116,"title":{"21":{}},"content":{"8":{},"21":{}},"tags":{}}],["diagram",{"_index":697,"title":{},"content":{"38":{}},"tags":{}}],["direct",{"_index":408,"title":{},"content":{"18":{},"26":{}},"tags":{}}],["directli",{"_index":559,"title":{},"content":{"30":{}},"tags":{}}],["directori",{"_index":57,"title":{},"content":{"3":{},"13":{},"110":{}},"tags":{}}],["disabl",{"_index":852,"title":{},"content":{"77":{},"82":{},"87":{},"92":{}},"tags":{}}],["disc",{"_index":366,"title":{},"content":{"15":{},"110":{}},"tags":{}}],["discard",{"_index":629,"title":{},"content":{"36":{}},"tags":{}}],["disconnect",{"_index":311,"title":{},"content":{"13":{},"32":{}},"tags":{}}],["disconnected_timeout",{"_index":312,"title":{},"content":{"13":{}},"tags":{}}],["discov",{"_index":27,"title":{},"content":{"2":{},"38":{}},"tags":{}}],["discoveri",{"_index":223,"title":{"41":{},"43":{},"186":{}},"content":{"13":{},"110":{}},"tags":{}}],["display",{"_index":938,"title":{},"content":{"173":{}},"tags":{}}],["distribut",{"_index":662,"title":{},"content":{"38":{}},"tags":{}}],["dn",{"_index":340,"title":{"15":{}},"content":{"15":{},"16":{},"110":{}},"tags":{}}],["dnat",{"_index":295,"title":{},"content":{"13":{}},"tags":{}}],["do",{"_index":737,"title":{},"content":{"50":{}},"tags":{}}],["doc",{"_index":56,"title":{},"content":{"3":{},"38":{}},"tags":{}}],["document",{"_index":54,"title":{"3":{}},"content":{"3":{},"38":{},"50":{},"56":{},"58":{},"182":{}},"tags":{}}],["domain",{"_index":346,"title":{},"content":{"15":{},"110":{}},"tags":{}}],["done",{"_index":49,"title":{},"content":{"2":{}},"tags":{}}],["donenfeld",{"_index":127,"title":{},"content":{"9":{}},"tags":{}}],["download",{"_index":379,"title":{},"content":{"16":{},"48":{},"49":{},"122":{},"123":{},"127":{},"128":{}},"tags":{}}],["dpanic",{"_index":813,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["dport",{"_index":540,"title":{},"content":{"26":{}},"tags":{}}],["drago",{"_index":435,"title":{},"content":{"18":{}},"tags":{}}],["drop",{"_index":427,"title":{},"content":{"18":{}},"tags":{}}],["dump",{"_index":941,"title":{},"content":{"173":{}},"tags":{}}],["durat",{"_index":308,"title":{},"content":{"13":{},"110":{}},"tags":{}}],["dure",{"_index":681,"title":{},"content":{"38":{}},"tags":{}}],["dynam",{"_index":143,"title":{},"content":{"10":{}},"tags":{}}],["e.g",{"_index":39,"title":{},"content":{"2":{},"13":{},"36":{},"110":{}},"tags":{}}],["each",{"_index":6,"title":{},"content":{"2":{},"24":{},"29":{},"71":{},"173":{}},"tags":{}}],["easi",{"_index":780,"title":{},"content":{"55":{}},"tags":{}}],["ebpf",{"_index":510,"title":{},"content":{"25":{}},"tags":{}}],["ec2",{"_index":291,"title":{},"content":{"13":{}},"tags":{}}],["echo",{"_index":755,"title":{},"content":{"52":{},"91":{}},"tags":{}}],["edg",{"_index":748,"title":{},"content":{"50":{}},"tags":{}}],["effect",{"_index":851,"title":{},"content":{"76":{},"86":{},"91":{}},"tags":{}}],["egress",{"_index":546,"title":{},"content":{"26":{}},"tags":{}}],["elast",{"_index":296,"title":{},"content":{"13":{}},"tags":{}}],["enabl",{"_index":206,"title":{},"content":{"13":{},"18":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"91":{},"93":{},"98":{},"102":{},"106":{},"110":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["enabled=1",{"_index":773,"title":{},"content":{"53":{}},"tags":{}}],["encrypt",{"_index":392,"title":{},"content":{"18":{},"33":{}},"tags":{}}],["end",{"_index":488,"title":{},"content":{"21":{},"32":{}},"tags":{}}],["endpoint",{"_index":35,"title":{"41":{}},"content":{"2":{},"13":{},"15":{},"18":{},"24":{},"29":{},"110":{},"173":{}},"tags":{}}],["endpoint_disc.ice.max_binding_request",{"_index":334,"title":{},"content":{"14":{}},"tags":{}}],["endpoint_disc.ice.url",{"_index":338,"title":{},"content":{"14":{}},"tags":{}}],["envelop",{"_index":605,"title":{},"content":{"33":{},"36":{}},"tags":{}}],["environ",{"_index":323,"title":{"14":{}},"content":{"14":{},"55":{},"60":{},"61":{},"69":{},"74":{},"91":{},"99":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"138":{},"142":{},"147":{},"152":{},"157":{}},"tags":{}}],["eof",{"_index":769,"title":{},"content":{"53":{}},"tags":{}}],["erigrid",{"_index":118,"title":{},"content":{"8":{}},"tags":{}}],["error",{"_index":647,"title":{},"content":{"37":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["establish",{"_index":238,"title":{"45":{}},"content":{"13":{},"20":{},"32":{},"60":{},"61":{},"69":{},"74":{},"99":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"138":{},"142":{},"147":{},"152":{},"157":{}},"tags":{}}],["etc/apt/sources.list.d/riasc.list",{"_index":762,"title":{},"content":{"52":{}},"tags":{}}],["etc/bash_completion.d/cunicu",{"_index":848,"title":{},"content":{"76":{}},"tags":{}}],["etc/host",{"_index":874,"title":{},"content":{"110":{}},"tags":{}}],["etc/wireguard",{"_index":214,"title":{},"content":{"13":{}},"tags":{}}],["etc/yum.repos.d/riasc.repo",{"_index":768,"title":{},"content":{"53":{}},"tags":{}}],["event",{"_index":695,"title":{},"content":{"38":{},"63":{},"113":{}},"tags":{}}],["exampl",{"_index":333,"title":{"66":{},"109":{},"149":{},"168":{}},"content":{"14":{},"32":{}},"tags":{}}],["example.com",{"_index":347,"title":{},"content":{"15":{},"16":{}},"tags":{}}],["exchang",{"_index":24,"title":{},"content":{"2":{},"18":{},"33":{}},"tags":{}}],["execut",{"_index":715,"title":{},"content":{"49":{},"50":{},"76":{},"86":{},"91":{}},"tags":{}}],["exist",{"_index":132,"title":{},"content":{"10":{},"18":{},"32":{}},"tags":{}}],["expect",{"_index":207,"title":{},"content":{"13":{}},"tags":{}}],["express",{"_index":179,"title":{},"content":{"13":{},"81":{}},"tags":{}}],["extens",{"_index":468,"title":{},"content":{"20":{}},"tags":{}}],["extern",{"_index":285,"title":{},"content":{"13":{}},"tags":{}}],["f",{"_index":883,"title":{},"content":{"110":{},"114":{},"136":{},"150":{}},"tags":{}}],["facilit",{"_index":622,"title":{},"content":{"36":{}},"tags":{}}],["fail",{"_index":281,"title":{},"content":{"13":{},"32":{}},"tags":{}}],["failed_timeout",{"_index":314,"title":{},"content":{"13":{}},"tags":{}}],["fairli",{"_index":779,"title":{},"content":{"55":{}},"tags":{}}],["fallback",{"_index":422,"title":{},"content":{"18":{}},"tags":{}}],["fals",{"_index":175,"title":{},"content":{"13":{}},"tags":{}}],["fatal",{"_index":815,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["fe80::e3be:9673:5a98:9348/64",{"_index":835,"title":{},"content":{"66":{}},"tags":{}}],["featur",{"_index":383,"title":{},"content":{"16":{},"18":{},"65":{}},"tags":{}}],["fedora",{"_index":765,"title":{"53":{}},"content":{},"tags":{}}],["feel",{"_index":72,"title":{},"content":{"5":{}},"tags":{}}],["fetch",{"_index":386,"title":{},"content":{"16":{},"50":{},"55":{}},"tags":{}}],["field",{"_index":939,"title":{},"content":{"173":{}},"tags":{}}],["file",{"_index":157,"title":{"13":{},"16":{},"40":{},"44":{}},"content":{"13":{},"14":{},"16":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"110":{},"111":{},"115":{},"119":{},"122":{},"123":{},"124":{},"127":{},"128":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["filenam",{"_index":211,"title":{},"content":{"13":{},"110":{},"123":{},"128":{}},"tags":{}}],["filter",{"_index":419,"title":{"25":{}},"content":{"18":{},"25":{},"26":{},"110":{}},"tags":{}}],["find",{"_index":270,"title":{},"content":{"13":{}},"tags":{}}],["firewal",{"_index":411,"title":{},"content":{"18":{}},"tags":{}}],["first",{"_index":187,"title":{},"content":{"13":{},"110":{},"173":{}},"tags":{}}],["fish",{"_index":842,"title":{"85":{}},"content":{"74":{},"85":{},"86":{},"87":{}},"tags":{}}],["flag",{"_index":150,"title":{"12":{}},"content":{"65":{},"81":{},"86":{},"91":{},"100":{},"104":{},"108":{},"113":{},"117":{},"122":{},"127":{},"131":{},"135":{},"139":{},"144":{},"148":{},"158":{},"162":{},"167":{},"173":{},"178":{}},"tags":{}}],["flowchart",{"_index":569,"title":{"31":{}},"content":{},"tags":{}}],["follow",{"_index":4,"title":{},"content":{"2":{},"14":{},"15":{},"21":{},"58":{},"91":{}},"tags":{}}],["format",{"_index":209,"title":{},"content":{"13":{},"114":{},"136":{},"150":{},"178":{}},"tags":{}}],["former",{"_index":99,"title":{},"content":{"6":{}},"tags":{}}],["formerli",{"_index":141,"title":{},"content":{"10":{}},"tags":{}}],["found",{"_index":55,"title":{},"content":{"3":{}},"tags":{}}],["fpath[1]}/_cunicu",{"_index":862,"title":{},"content":{"91":{}},"tags":{}}],["free",{"_index":73,"title":{},"content":{"5":{}},"tags":{}}],["freebsd",{"_index":684,"title":{},"content":{"38":{}},"tags":{}}],["friendli",{"_index":937,"title":{},"content":{"173":{}},"tags":{}}],["fssl",{"_index":739,"title":{},"content":{"50":{}},"tags":{}}],["full",{"_index":154,"title":{},"content":{"12":{}},"tags":{}}],["fulli",{"_index":151,"title":{},"content":{"12":{}},"tags":{}}],["function",{"_index":947,"title":{},"content":{"182":{}},"tags":{}}],["functions/_cunicu",{"_index":864,"title":{},"content":{"91":{}},"tags":{}}],["fund",{"_index":114,"title":{"8":{}},"content":{},"tags":{}}],["furthermor",{"_index":491,"title":{},"content":{"21":{}},"tags":{}}],["fwmark",{"_index":943,"title":{},"content":{"173":{}},"tags":{}}],["gather",{"_index":264,"title":{},"content":{"13":{},"32":{}},"tags":{}}],["gener",{"_index":824,"title":{},"content":{"63":{},"70":{},"71":{},"74":{},"75":{},"76":{},"79":{},"80":{},"81":{},"84":{},"85":{},"86":{},"89":{},"90":{},"91":{},"94":{},"157":{},"158":{},"162":{},"167":{},"168":{}},"tags":{}}],["genkey",{"_index":833,"title":{"158":{}},"content":{"66":{},"157":{},"158":{},"159":{},"167":{},"168":{}},"tags":{}}],["genpsk",{"_index":919,"title":{"162":{}},"content":{"157":{},"162":{},"163":{}},"tags":{}}],["get",{"_index":0,"title":{"2":{}},"content":{"56":{}},"tags":{}}],["get_cunicu.sh",{"_index":741,"title":{},"content":{"50":{}},"tags":{}}],["ginkgo",{"_index":485,"title":{},"content":{"21":{}},"tags":{}}],["github",{"_index":494,"title":{},"content":{"21":{},"38":{},"122":{},"127":{}},"tags":{}}],["github.com/stv0g/cunicu/cmd/cunicu@latest",{"_index":782,"title":{},"content":{"55":{}},"tags":{}}],["give",{"_index":298,"title":{},"content":{"13":{}},"tags":{}}],["given",{"_index":924,"title":{},"content":{"167":{},"173":{}},"tags":{}}],["go",{"_index":168,"title":{},"content":{"13":{},"21":{},"30":{},"55":{},"61":{}},"tags":{}}],["go'",{"_index":554,"title":{},"content":{"30":{}},"tags":{}}],["golang",{"_index":482,"title":{},"content":{"21":{}},"tags":{}}],["gomega",{"_index":486,"title":{},"content":{"21":{}},"tags":{}}],["gont",{"_index":487,"title":{},"content":{"21":{}},"tags":{}}],["gopath}/bin/cunicu",{"_index":785,"title":{},"content":{"55":{}},"tags":{}}],["gopher",{"_index":76,"title":{},"content":{"5":{}},"tags":{}}],["goreleas",{"_index":483,"title":{},"content":{"21":{}},"tags":{}}],["gpg",{"_index":892,"title":{},"content":{"122":{},"127":{}},"tags":{}}],["gpgcheck=0",{"_index":774,"title":{},"content":{"53":{}},"tags":{}}],["grab",{"_index":731,"title":{},"content":{"50":{}},"tags":{}}],["grant",{"_index":121,"title":{},"content":{"8":{}},"tags":{}}],["group",{"_index":625,"title":{},"content":{"36":{},"38":{},"173":{}},"tags":{}}],["grpc",{"_index":395,"title":{},"content":{"18":{},"35":{},"63":{},"131":{}},"tags":{}}],["grpc://localhost:8080?insecure=true&skip_verify=tru",{"_index":164,"title":{},"content":{"13":{}},"tags":{}}],["guid",{"_index":703,"title":{},"content":{"47":{}},"tags":{}}],["gunzip",{"_index":710,"title":{},"content":{"49":{}},"tags":{}}],["h",{"_index":650,"title":{},"content":{"37":{},"62":{},"67":{},"72":{},"77":{},"82":{},"87":{},"92":{},"97":{},"101":{},"105":{},"110":{},"114":{},"118":{},"123":{},"128":{},"132":{},"136":{},"140":{},"145":{},"150":{},"155":{},"159":{},"163":{},"169":{},"174":{},"179":{}},"tags":{}}],["h2020",{"_index":119,"title":{},"content":{"8":{}},"tags":{}}],["hand",{"_index":25,"title":{"49":{}},"content":{"2":{}},"tags":{}}],["handl",{"_index":556,"title":{},"content":{"30":{}},"tags":{}}],["handshak",{"_index":691,"title":{},"content":{"38":{},"173":{}},"tags":{}}],["hard",{"_index":94,"title":{},"content":{"6":{}},"tags":{}}],["harsh",{"_index":799,"title":{},"content":{"60":{},"69":{},"74":{},"99":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"138":{},"142":{},"147":{},"152":{},"157":{}},"tags":{}}],["header",{"_index":512,"title":{},"content":{"25":{}},"tags":{}}],["heavili",{"_index":477,"title":{},"content":{"21":{}},"tags":{}}],["help",{"_index":721,"title":{},"content":{"49":{},"62":{},"67":{},"71":{},"72":{},"77":{},"82":{},"87":{},"92":{},"97":{},"101":{},"105":{},"110":{},"114":{},"118":{},"123":{},"128":{},"132":{},"136":{},"140":{},"145":{},"150":{},"155":{},"159":{},"163":{},"169":{},"174":{},"179":{}},"tags":{}}],["homebrew",{"_index":775,"title":{"54":{}},"content":{},"tags":{}}],["hook",{"_index":537,"title":{"42":{}},"content":{"26":{}},"tags":{}}],["host",{"_index":7,"title":{"44":{}},"content":{"2":{},"13":{},"16":{},"110":{}},"tags":{}}],["http",{"_index":377,"title":{},"content":{"16":{},"52":{}},"tags":{}}],["https://ieeexplore.ieee.org/document/1437269",{"_index":665,"title":{},"content":{"38":{}},"tags":{}}],["https://link.springer.com/chapter/10.1007%2f978",{"_index":672,"title":{},"content":{"38":{}},"tags":{}}],["https://packages.riasc.eu/apt",{"_index":760,"title":{},"content":{"52":{}},"tags":{}}],["https://raw.githubusercontent.com/stv0g/cunicu/master/scripts/get_cunicu.sh",{"_index":742,"title":{},"content":{"50":{}},"tags":{}}],["https://www.it.iitb.ac.in/~madhumita/access/gcs/a%20trust%20based%20access%20control%20framework%20for%20p2p%20file%20sharing%20systems.pdf",{"_index":666,"title":{},"content":{"38":{}},"tags":{}}],["https://www.springerprofessional.de/en/decentr",{"_index":667,"title":{},"content":{"38":{}},"tags":{}}],["human",{"_index":887,"title":{},"content":{"114":{},"136":{},"150":{}},"tags":{}}],["ic",{"_index":37,"title":{},"content":{"2":{},"13":{},"15":{},"18":{},"20":{},"21":{},"22":{},"24":{},"25":{},"26":{},"29":{},"32":{},"34":{},"38":{},"110":{}},"tags":{}}],["ice.conn",{"_index":561,"title":{},"content":{"30":{}},"tags":{}}],["id",{"_index":618,"title":{},"content":{"34":{}},"tags":{}}],["identifi",{"_index":657,"title":{},"content":{"37":{}},"tags":{}}],["idl",{"_index":594,"title":{},"content":{"32":{}},"tags":{}}],["ignor",{"_index":176,"title":{},"content":{"13":{}},"tags":{}}],["immedi",{"_index":798,"title":{},"content":{"59":{}},"tags":{}}],["impact",{"_index":417,"title":{},"content":{"18":{}},"tags":{}}],["implement",{"_index":170,"title":{"28":{}},"content":{"13":{},"18":{},"21":{},"22":{},"30":{},"35":{},"37":{},"38":{},"61":{},"110":{},"186":{}},"tags":{}}],["increment",{"_index":451,"title":{},"content":{"20":{}},"tags":{}}],["indent",{"_index":897,"title":{},"content":{"136":{}},"tags":{}}],["inet",{"_index":535,"title":{},"content":{"26":{}},"tags":{}}],["info",{"_index":700,"title":{},"content":{"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["inform",{"_index":617,"title":{},"content":{"34":{},"157":{},"172":{},"173":{},"177":{}},"tags":{}}],["ingress",{"_index":536,"title":{},"content":{"26":{}},"tags":{}}],["inherit",{"_index":839,"title":{"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"content":{},"tags":{}}],["initi",{"_index":429,"title":{},"content":{"18":{}},"tags":{}}],["inotifi",{"_index":438,"title":{},"content":{"18":{}},"tags":{}}],["input",{"_index":520,"title":{},"content":{"26":{},"65":{},"167":{}},"tags":{}}],["insecure_skip_verifi",{"_index":252,"title":{},"content":{"13":{}},"tags":{}}],["insid",{"_index":533,"title":{},"content":{"26":{}},"tags":{}}],["instal",{"_index":8,"title":{"47":{}},"content":{"2":{},"18":{},"47":{},"48":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"76":{}},"tags":{}}],["instanc",{"_index":292,"title":{},"content":{"13":{},"38":{}},"tags":{}}],["instead",{"_index":299,"title":{},"content":{"13":{},"38":{}},"tags":{}}],["institut",{"_index":62,"title":{},"content":{"4":{},"7":{}},"tags":{}}],["int",{"_index":818,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["interact",{"_index":236,"title":{},"content":{"13":{},"20":{},"61":{}},"tags":{}}],["interfac",{"_index":11,"title":{"37":{}},"content":{"2":{},"13":{},"18":{},"26":{},"30":{},"35":{},"37":{},"38":{},"59":{},"60":{},"63":{},"65":{},"69":{},"74":{},"99":{},"108":{},"110":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"135":{},"138":{},"142":{},"144":{},"147":{},"152":{},"157":{},"172":{},"173":{},"177":{},"178":{}},"tags":{}}],["interface_filt",{"_index":180,"title":{},"content":{"13":{}},"tags":{}}],["intern",{"_index":899,"title":{},"content":{"144":{}},"tags":{}}],["interv",{"_index":302,"title":{},"content":{"13":{},"110":{}},"tags":{}}],["intf",{"_index":688,"title":{},"content":{"38":{}},"tags":{}}],["investig",{"_index":661,"title":{},"content":{"38":{}},"tags":{}}],["invoc",{"_index":949,"title":{},"content":{"184":{},"185":{},"186":{}},"tags":{}}],["invok",{"_index":854,"title":{},"content":{"81":{}},"tags":{}}],["io",{"_index":558,"title":{},"content":{"30":{}},"tags":{}}],["io.clos",{"_index":640,"title":{},"content":{"37":{}},"tags":{}}],["ip",{"_index":286,"title":{},"content":{"13":{},"18":{},"65":{},"173":{}},"tags":{}}],["iptabl",{"_index":549,"title":{"27":{}},"content":{"27":{}},"tags":{}}],["ipv4",{"_index":821,"title":{},"content":{"63":{},"64":{},"65":{},"67":{}},"tags":{}}],["ipv6",{"_index":822,"title":{},"content":{"63":{},"64":{},"65":{},"67":{}},"tags":{}}],["irrespect",{"_index":651,"title":{},"content":{"37":{}},"tags":{}}],["issu",{"_index":660,"title":{},"content":{"38":{}},"tags":{}}],["it'",{"_index":733,"title":{},"content":{"50":{}},"tags":{}}],["jason",{"_index":126,"title":{},"content":{"9":{}},"tags":{}}],["join",{"_index":70,"title":{"5":{}},"content":{"5":{}},"tags":{}}],["json",{"_index":885,"title":{},"content":{"114":{},"136":{},"150":{}},"tags":{}}],["k8s:///path/to/your/kubeconfig.yaml?namespace=default",{"_index":165,"title":{},"content":{"13":{}},"tags":{}}],["keepal",{"_index":317,"title":{},"content":{"13":{},"173":{}},"tags":{}}],["keepalive_interv",{"_index":321,"title":{},"content":{"13":{}},"tags":{}}],["kernel",{"_index":172,"title":{"23":{},"25":{},"26":{}},"content":{"13":{},"18":{},"26":{},"29":{},"30":{},"61":{},"110":{},"144":{}},"tags":{}}],["key",{"_index":23,"title":{"45":{}},"content":{"2":{},"13":{},"18":{},"32":{},"33":{},"34":{},"36":{},"63":{},"64":{},"65":{},"100":{},"104":{},"135":{},"157":{},"158":{},"162":{},"166":{},"167":{},"168":{},"173":{}},"tags":{}}],["kilo",{"_index":434,"title":{},"content":{"18":{}},"tags":{}}],["known",{"_index":630,"title":{},"content":{"36":{}},"tags":{}}],["kp",{"_index":644,"title":{},"content":{"37":{}},"tags":{}}],["kubernet",{"_index":396,"title":{},"content":{"18":{},"35":{}},"tags":{}}],["kʊˈniːk",{"_index":81,"title":{},"content":{"6":{}},"tags":{}}],["l",{"_index":807,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"132":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["land",{"_index":802,"title":{},"content":{"61":{}},"tags":{}}],["latest",{"_index":732,"title":{},"content":{"50":{},"55":{},"122":{},"127":{},"173":{}},"tags":{}}],["latin",{"_index":83,"title":{},"content":{"6":{}},"tags":{}}],["legaci",{"_index":551,"title":{},"content":{"27":{}},"tags":{}}],["less",{"_index":318,"title":{},"content":{"13":{}},"tags":{}}],["let",{"_index":570,"title":{},"content":{"32":{}},"tags":{}}],["level",{"_index":810,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["licens",{"_index":108,"title":{"7":{}},"content":{"7":{}},"tags":{}}],["limit",{"_index":253,"title":{},"content":{"13":{}},"tags":{}}],["line",{"_index":52,"title":{"12":{},"58":{}},"content":{"2":{},"12":{},"16":{},"58":{},"173":{}},"tags":{}}],["link",{"_index":443,"title":{},"content":{"18":{},"63":{},"64":{},"65":{},"110":{}},"tags":{}}],["linux",{"_index":508,"title":{},"content":{"25":{},"49":{},"76":{},"91":{}},"tags":{}}],["list",{"_index":181,"title":{},"content":{"13":{},"14":{},"26":{},"38":{},"173":{}},"tags":{}}],["listen",{"_index":527,"title":{},"content":{"26":{},"132":{},"173":{}},"tags":{}}],["listenport",{"_index":184,"title":{},"content":{"13":{}},"tags":{}}],["lite",{"_index":265,"title":{},"content":{"13":{}},"tags":{}}],["live",{"_index":747,"title":{},"content":{"50":{}},"tags":{}}],["load",{"_index":847,"title":{},"content":{"76":{},"81":{},"86":{},"91":{}},"tags":{}}],["local",{"_index":387,"title":{},"content":{"16":{},"24":{},"26":{},"29":{},"32":{},"50":{},"63":{},"64":{},"65":{},"110":{}},"tags":{}}],["locat",{"_index":97,"title":{},"content":{"6":{},"13":{}},"tags":{}}],["log",{"_index":50,"title":{},"content":{"2":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["logger",{"_index":886,"title":{},"content":{"114":{}},"tags":{}}],["logo",{"_index":124,"title":{},"content":{"9":{}},"tags":{}}],["look",{"_index":348,"title":{},"content":{"15":{},"38":{},"58":{}},"tags":{}}],["lookup",{"_index":345,"title":{},"content":{"15":{}},"tags":{}}],["loop",{"_index":304,"title":{},"content":{"13":{}},"tags":{}}],["loss",{"_index":680,"title":{},"content":{"38":{}},"tags":{}}],["mach",{"_index":528,"title":{},"content":{"26":{}},"tags":{}}],["maco",{"_index":722,"title":{"54":{}},"content":{"49":{},"76":{},"91":{}},"tags":{}}],["main",{"_index":222,"title":{},"content":{"13":{},"110":{}},"tags":{}}],["make",{"_index":19,"title":{},"content":{"2":{},"49":{}},"tags":{}}],["manag",{"_index":493,"title":{"51":{}},"content":{"21":{},"38":{},"51":{},"60":{},"63":{},"69":{},"74":{},"76":{},"95":{},"99":{},"103":{},"107":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"138":{},"142":{},"147":{},"152":{},"157":{}},"tags":{}}],["manpag",{"_index":156,"title":{},"content":{"12":{}},"tags":{}}],["manual",{"_index":707,"title":{},"content":{"48":{}},"tags":{}}],["match",{"_index":177,"title":{},"content":{"13":{},"25":{},"26":{}},"tags":{}}],["max",{"_index":190,"title":{},"content":{"13":{}},"tags":{}}],["max_binding_request",{"_index":282,"title":{},"content":{"13":{}},"tags":{}}],["mdn",{"_index":271,"title":{},"content":{"13":{}},"tags":{}}],["mean",{"_index":86,"title":{},"content":{"6":{},"13":{}},"tags":{}}],["meant",{"_index":933,"title":{},"content":{"173":{}},"tags":{}}],["merg",{"_index":381,"title":{},"content":{"16":{}},"tags":{}}],["mermaid",{"_index":696,"title":{},"content":{"38":{}},"tags":{}}],["mesh",{"_index":794,"title":{},"content":{"56":{}},"tags":{}}],["messag",{"_index":393,"title":{},"content":{"18":{},"33":{},"37":{}},"tags":{}}],["messagehandl",{"_index":638,"title":{},"content":{"37":{}},"tags":{}}],["method",{"_index":385,"title":{},"content":{"16":{}},"tags":{}}],["mimic",{"_index":911,"title":{},"content":{"154":{}},"tags":{}}],["min",{"_index":188,"title":{},"content":{"13":{}},"tags":{}}],["minim",{"_index":424,"title":{},"content":{"18":{}},"tags":{}}],["miss",{"_index":871,"title":{},"content":{"110":{}},"tags":{}}],["model",{"_index":474,"title":{},"content":{"20":{}},"tags":{}}],["modul",{"_index":173,"title":{"23":{}},"content":{"13":{},"29":{}},"tags":{}}],["monitor",{"_index":436,"title":{"113":{}},"content":{"18":{},"38":{},"63":{},"97":{},"102":{},"106":{},"113":{},"114":{},"118":{},"136":{},"140":{},"145":{},"174":{},"179":{}},"tags":{}}],["more",{"_index":604,"title":{},"content":{"33":{},"56":{},"110":{}},"tags":{}}],["mostli",{"_index":199,"title":{},"content":{"13":{}},"tags":{}}],["move",{"_index":699,"title":{},"content":{"38":{},"49":{},"56":{}},"tags":{}}],["msg",{"_index":646,"title":{},"content":{"37":{}},"tags":{}}],["multi",{"_index":669,"title":{},"content":{"38":{}},"tags":{}}],["multicast",{"_index":626,"title":{},"content":{"36":{}},"tags":{}}],["multipl",{"_index":371,"title":{},"content":{"15":{},"22":{},"34":{}},"tags":{}}],["mux",{"_index":515,"title":{},"content":{"25":{}},"tags":{}}],["mv",{"_index":712,"title":{},"content":{"49":{}},"tags":{}}],["mysecretpass",{"_index":869,"title":{},"content":{"109":{}},"tags":{}}],["name",{"_index":79,"title":{"6":{}},"content":{"6":{},"10":{},"13":{},"14":{},"108":{},"110":{},"135":{},"173":{},"178":{}},"tags":{}}],["name=riasc",{"_index":771,"title":{},"content":{"53":{}},"tags":{}}],["nat",{"_index":409,"title":{},"content":{"18":{},"20":{},"27":{}},"tags":{}}],["nat_1to1_ip",{"_index":300,"title":{},"content":{"13":{}},"tags":{}}],["nebula",{"_index":144,"title":{},"content":{"10":{}},"tags":{}}],["need",{"_index":850,"title":{},"content":{"76":{},"86":{},"91":{}},"tags":{}}],["nest",{"_index":330,"title":{},"content":{"14":{}},"tags":{}}],["netbird",{"_index":140,"title":{},"content":{"10":{}},"tags":{}}],["netfilt",{"_index":531,"title":{},"content":{"26":{}},"tags":{}}],["netlink",{"_index":441,"title":{},"content":{"18":{}},"tags":{}}],["netmak",{"_index":145,"title":{},"content":{"10":{}},"tags":{}}],["network",{"_index":96,"title":{},"content":{"6":{},"13":{},"20":{},"21":{},"30":{},"56":{},"60":{},"69":{},"74":{},"99":{},"110":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"138":{},"142":{},"147":{},"152":{},"157":{}},"tags":{}}],["network_typ",{"_index":255,"title":{},"content":{"13":{}},"tags":{}}],["networkd",{"_index":433,"title":{},"content":{"18":{}},"tags":{}}],["networkmanag",{"_index":14,"title":{},"content":{"2":{},"18":{}},"tags":{}}],["never",{"_index":310,"title":{},"content":{"13":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["new",{"_index":437,"title":{},"content":{"18":{},"24":{},"29":{},"32":{},"76":{},"81":{},"86":{},"91":{},"110":{}},"tags":{}}],["newli",{"_index":185,"title":{},"content":{"13":{}},"tags":{}}],["newlin",{"_index":935,"title":{},"content":{"173":{}},"tags":{}}],["nft",{"_index":518,"title":{},"content":{"26":{}},"tags":{}}],["nftabl",{"_index":516,"title":{"26":{}},"content":{"26":{},"27":{}},"tags":{}}],["nomin",{"_index":278,"title":{},"content":{"13":{}},"tags":{}}],["non",{"_index":524,"title":{},"content":{"26":{}},"tags":{}}],["note",{"_index":336,"title":{},"content":{"14":{},"15":{},"16":{},"30":{},"32":{},"49":{},"186":{}},"tags":{}}],["noth",{"_index":910,"title":{},"content":{"150":{}},"tags":{}}],["notrack",{"_index":544,"title":{},"content":{"26":{}},"tags":{}}],["noun",{"_index":84,"title":{},"content":{"6":{}},"tags":{}}],["number",{"_index":279,"title":{},"content":{"13":{}},"tags":{}}],["o",{"_index":740,"title":{},"content":{"50":{},"123":{},"128":{}},"tags":{}}],["object",{"_index":391,"title":{"18":{}},"content":{},"tags":{}}],["obtain",{"_index":350,"title":{},"content":{"15":{}},"tags":{}}],["offer",{"_index":402,"title":{},"content":{"18":{}},"tags":{}}],["offer/answ",{"_index":464,"title":{},"content":{"20":{}},"tags":{}}],["on",{"_index":603,"title":{},"content":{"33":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"110":{},"111":{},"114":{},"115":{},"119":{},"124":{},"129":{},"133":{},"136":{},"137":{},"141":{},"146":{},"150":{},"151":{},"156":{},"160":{},"164":{},"170":{},"173":{},"175":{},"180":{}},"tags":{}}],["onc",{"_index":48,"title":{},"content":{"2":{},"56":{},"76":{},"86":{},"91":{},"168":{}},"tags":{}}],["onsignalingmessage(*crypto.publickeypair",{"_index":639,"title":{},"content":{"37":{}},"tags":{}}],["open",{"_index":505,"title":{},"content":{"24":{}},"tags":{}}],["openbsd",{"_index":683,"title":{},"content":{"38":{}},"tags":{}}],["oper",{"_index":750,"title":{},"content":{"51":{}},"tags":{}}],["option",{"_index":375,"title":{"62":{},"67":{},"68":{},"72":{},"73":{},"77":{},"78":{},"82":{},"83":{},"87":{},"88":{},"92":{},"93":{},"97":{},"98":{},"101":{},"102":{},"105":{},"106":{},"110":{},"111":{},"114":{},"115":{},"118":{},"119":{},"123":{},"124":{},"128":{},"129":{},"132":{},"133":{},"136":{},"137":{},"140":{},"141":{},"145":{},"146":{},"150":{},"151":{},"155":{},"156":{},"159":{},"160":{},"163":{},"164":{},"169":{},"170":{},"174":{},"175":{},"179":{},"180":{}},"content":{"16":{},"63":{},"110":{},"148":{},"173":{}},"tags":{}}],["order",{"_index":101,"title":{},"content":{"6":{},"16":{},"36":{},"173":{}},"tags":{}}],["origin",{"_index":529,"title":{},"content":{"26":{}},"tags":{}}],["os",{"_index":706,"title":{},"content":{"48":{},"49":{}},"tags":{}}],["os'",{"_index":846,"title":{},"content":{"76":{}},"tags":{}}],["os=linux",{"_index":901,"title":{},"content":{"149":{}},"tags":{}}],["other",{"_index":373,"title":{},"content":{"15":{}},"tags":{}}],["otherwis",{"_index":93,"title":{},"content":{"6":{},"173":{}},"tags":{}}],["ouput",{"_index":898,"title":{},"content":{"136":{}},"tags":{}}],["out",{"_index":628,"title":{},"content":{"36":{},"65":{},"81":{}},"tags":{}}],["output",{"_index":521,"title":{},"content":{"26":{},"62":{},"65":{},"68":{},"73":{},"78":{},"81":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"114":{},"115":{},"119":{},"123":{},"124":{},"128":{},"129":{},"133":{},"136":{},"137":{},"141":{},"146":{},"150":{},"151":{},"156":{},"157":{},"158":{},"160":{},"162":{},"164":{},"166":{},"167":{},"170":{},"175":{},"180":{}},"tags":{}}],["over",{"_index":276,"title":{},"content":{"13":{},"25":{}},"tags":{}}],["overview",{"_index":155,"title":{},"content":{"12":{}},"tags":{}}],["p",{"_index":876,"title":{},"content":{"110":{}},"tags":{}}],["p2p",{"_index":129,"title":{"10":{}},"content":{"186":{}},"tags":{}}],["pa",{"_index":579,"title":{},"content":{"32":{}},"tags":{}}],["pac",{"_index":459,"title":{},"content":{"20":{}},"tags":{}}],["packag",{"_index":481,"title":{"51":{}},"content":{"21":{},"51":{},"61":{},"76":{},"154":{}},"tags":{}}],["packet",{"_index":320,"title":{},"content":{"13":{},"38":{}},"tags":{}}],["page",{"_index":146,"title":{},"content":{"11":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"58":{}},"tags":{}}],["pair",{"_index":277,"title":{},"content":{"13":{},"38":{}},"tags":{}}],["panic",{"_index":814,"title":{},"content":{"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["pap_apa",{"_index":572,"title":{},"content":{"32":{}},"tags":{}}],["paramet",{"_index":239,"title":{},"content":{"13":{},"15":{}},"tags":{}}],["parent",{"_index":840,"title":{"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"content":{},"tags":{}}],["parsed/produc",{"_index":513,"title":{},"content":{"25":{}},"tags":{}}],["part",{"_index":344,"title":{},"content":{"15":{}},"tags":{}}],["particip",{"_index":587,"title":{},"content":{"32":{}},"tags":{}}],["pass",{"_index":152,"title":{},"content":{"12":{},"14":{},"26":{},"30":{}},"tags":{}}],["passphras",{"_index":230,"title":{},"content":{"13":{},"110":{},"186":{}},"tags":{}}],["password",{"_index":234,"title":{},"content":{"13":{},"15":{},"110":{}},"tags":{}}],["password=pass1",{"_index":369,"title":{},"content":{"15":{}},"tags":{}}],["patch",{"_index":444,"title":{},"content":{"18":{}},"tags":{}}],["path",{"_index":194,"title":{},"content":{"13":{},"62":{},"68":{},"73":{},"78":{},"83":{},"88":{},"93":{},"98":{},"102":{},"106":{},"110":{},"111":{},"115":{},"119":{},"124":{},"129":{},"133":{},"137":{},"141":{},"146":{},"151":{},"156":{},"160":{},"164":{},"170":{},"175":{},"180":{}},"tags":{}}],["patient",{"_index":457,"title":{},"content":{"20":{}},"tags":{}}],["pb",{"_index":585,"title":{},"content":{"32":{}},"tags":{}}],["pb.backendtyp",{"_index":658,"title":{},"content":{"37":{}},"tags":{}}],["pb.signalingmessag",{"_index":637,"title":{},"content":{"37":{}},"tags":{}}],["pbp_bpb",{"_index":573,"title":{},"content":{"32":{}},"tags":{}}],["peer",{"_index":29,"title":{"43":{},"186":{}},"content":{"2":{},"10":{},"13":{},"15":{},"18":{},"24":{},"25":{},"29":{},"32":{},"36":{},"37":{},"38":{},"60":{},"63":{},"69":{},"74":{},"99":{},"110":{},"112":{},"116":{},"120":{},"125":{},"130":{},"134":{},"135":{},"138":{},"142":{},"147":{},"152":{},"157":{},"173":{}},"tags":{}}],["peer_disc",{"_index":224,"title":{},"content":{"13":{}},"tags":{}}],["pend",{"_index":445,"title":{},"content":{"18":{}},"tags":{}}],["per",{"_index":677,"title":{},"content":{"38":{},"173":{}},"tags":{}}],["perform",{"_index":267,"title":{},"content":{"13":{},"18":{},"49":{}},"tags":{}}],["period",{"_index":881,"title":{},"content":{"110":{}},"tags":{}}],["persist",{"_index":159,"title":{},"content":{"13":{},"173":{}},"tags":{}}],["ping",{"_index":693,"title":{},"content":{"38":{}},"tags":{}}],["pion",{"_index":289,"title":{},"content":{"13":{},"21":{}},"tags":{}}],["pion'",{"_index":560,"title":{},"content":{"30":{}},"tags":{}}],["pion/ic",{"_index":801,"title":{},"content":{"61":{}},"tags":{}}],["pipelin",{"_index":498,"title":{},"content":{"21":{}},"tags":{}}],["pk",{"_index":576,"title":{},"content":{"32":{}},"tags":{}}],["pk(p_b)pk(pa​)2",{"_index":853,"title":{},"content":{"27":{}},"tags":{}}],["agreement",{"_index":118,"title":{},"content":{"10":{}},"tags":{}}],["ahoi",{"_index":624,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["aim",{"_index":748,"title":{},"content":{"34":{}},"tags":{}}],["al",{"_index":193,"title":{},"content":{"40":{}},"tags":{}}],["allevi",{"_index":657,"title":{},"content":{"14":{}},"tags":{}}],["allnod",{"_index":1020,"title":{},"content":{"47":{}},"tags":{}}],["alloc",{"_index":587,"title":{},"content":{"15":{},"19":{},"26":{}},"tags":{}}],["allow",{"_index":421,"title":{},"content":{"26":{},"34":{},"43":{},"51":{},"62":{},"66":{},"137":{},"192":{}},"tags":{}}],["allowed_ip",{"_index":428,"title":{},"content":{"26":{}},"tags":{}}],["allowedip",{"_index":475,"title":{},"content":{"26":{},"51":{},"125":{}},"tags":{}}],["allrout",{"_index":1022,"title":{},"content":{"47":{}},"tags":{}}],["alongsid",{"_index":758,"title":{},"content":{"16":{},"34":{}},"tags":{}}],["alreadi",{"_index":369,"title":{},"content":{"26":{},"86":{},"105":{}},"tags":{}}],["alway",{"_index":1144,"title":{},"content":{"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["amd",{"_index":1061,"title":{},"content":{"55":{}},"tags":{}}],["amount",{"_index":563,"title":{},"content":{"26":{}},"tags":{}}],["analysi",{"_index":747,"title":{},"content":{"33":{}},"tags":{}}],["and/or",{"_index":1197,"title":{},"content":{"125":{}},"tags":{}}],["android",{"_index":926,"title":{},"content":{"65":{}},"tags":{}}],["answer",{"_index":568,"title":{},"content":{"26":{}},"tags":{}}],["anytim",{"_index":403,"title":{},"content":{"26":{}},"tags":{}}],["aozzbansov7p8vo0d5umuijuq7ajmbhbgt2ea8eauec",{"_index":512,"title":{},"content":{"26":{}},"tags":{}}],["apach",{"_index":106,"title":{},"content":{"9":{}},"tags":{}}],["api",{"_index":650,"title":{},"content":{"14":{},"21":{},"30":{},"93":{},"136":{},"137":{},"138":{}},"tags":{}}],["append",{"_index":494,"title":{},"content":{"26":{}},"tags":{}}],["appli",{"_index":470,"title":{},"content":{"26":{},"125":{}},"tags":{}}],["apt",{"_index":1083,"title":{"58":{}},"content":{"58":{}},"tags":{}}],["arch=$(dpkg",{"_index":1088,"title":{},"content":{"58":{}},"tags":{}}],["arch=arm64",{"_index":1243,"title":{},"content":{"221":{}},"tags":{}}],["architectur",{"_index":645,"title":{"13":{}},"content":{"55":{},"58":{}},"tags":{}}],["archlinux",{"_index":1111,"title":{"61":{}},"content":{"61":{}},"tags":{}}],["arg",{"_index":615,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["argon2id",{"_index":377,"title":{},"content":{"26":{}},"tags":{}}],["argument",{"_index":154,"title":{},"content":{"26":{},"36":{},"67":{}},"tags":{}}],["arm64",{"_index":1062,"title":{},"content":{"55":{}},"tags":{}}],["armv6",{"_index":1059,"title":{},"content":{"55":{}},"tags":{}}],["armv8",{"_index":1060,"title":{},"content":{"55":{}},"tags":{}}],["around",{"_index":708,"title":{},"content":{"15":{}},"tags":{}}],["assign",{"_index":324,"title":{},"content":{"19":{},"26":{},"118":{},"172":{},"173":{},"175":{}},"tags":{}}],["assum",{"_index":829,"title":{},"content":{"27":{}},"tags":{}}],["asymmetr",{"_index":862,"title":{},"content":{"28":{}},"tags":{}}],["at=2022",{"_index":1246,"title":{},"content":{"221":{}},"tags":{}}],["attack",{"_index":670,"title":{},"content":{"14":{}},"tags":{}}],["attempt",{"_index":33,"title":{},"content":{"5":{},"65":{}},"tags":{}}],["attribut",{"_index":1265,"title":{},"content":{"192":{}},"tags":{}}],["aur",{"_index":1113,"title":{"61":{}},"content":{},"tags":{}}],["authent",{"_index":385,"title":{},"content":{"26":{},"151":{},"156":{}},"tags":{}}],["authentic/19543988",{"_index":912,"title":{},"content":{"65":{}},"tags":{}}],["author",{"_index":54,"title":{"6":{}},"content":{"26":{},"67":{}},"tags":{}}],["auto",{"_index":192,"title":{"40":{},"42":{},"172":{}},"content":{"41":{},"43":{},"68":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"118":{},"121":{},"125":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"172":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["autocfg",{"_index":952,"title":{},"content":{"43":{},"176":{}},"tags":{}}],["autocomplet",{"_index":1156,"title":{},"content":{"73":{},"74":{},"77":{},"80":{},"81":{},"84":{},"85":{},"86":{},"89":{},"93":{},"94":{},"95":{},"98":{},"104":{},"105":{},"108":{}},"tags":{}}],["autoload",{"_index":1180,"title":{},"content":{"86":{}},"tags":{}}],["autom",{"_index":59,"title":{},"content":{"6":{},"9":{},"10":{},"26":{},"33":{},"55":{}},"tags":{}}],["automat",{"_index":255,"title":{},"content":{"26":{},"42":{},"56":{},"173":{},"175":{}},"tags":{}}],["autonumb",{"_index":841,"title":{},"content":{"27":{}},"tags":{}}],["avail",{"_index":28,"title":{"30":{}},"content":{"5":{},"14":{},"26":{},"30":{},"36":{},"37":{},"60":{},"61":{},"137":{}},"tags":{}}],["avoid",{"_index":100,"title":{},"content":{"8":{},"39":{},"65":{}},"tags":{}}],["aw",{"_index":577,"title":{},"content":{"26":{}},"tags":{}}],["await",{"_index":699,"title":{},"content":{"15":{}},"tags":{}}],["awesom",{"_index":725,"title":{},"content":{"33":{},"91":{}},"tags":{}}],["b",{"_index":844,"title":{},"content":{"27":{},"125":{}},"tags":{}}],["back",{"_index":856,"title":{},"content":{"27":{}},"tags":{}}],["backend",{"_index":182,"title":{"29":{},"30":{}},"content":{"14":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"38":{},"40":{},"125":{}},"tags":{}}],["backend=grpc://signal.example.com:443",{"_index":225,"title":{},"content":{"40":{}},"tags":{}}],["band",{"_index":357,"title":{},"content":{"26":{}},"tags":{}}],["barwedg",{"_index":981,"title":{},"content":{"174":{}},"tags":{}}],["base",{"_index":754,"title":{},"content":{"34":{},"43":{},"118":{},"137":{}},"tags":{}}],["base64",{"_index":307,"title":{},"content":{"26":{},"46":{},"186":{},"187":{},"202":{},"214":{},"215":{}},"tags":{}}],["baseurl=https://packages.cunicu.li/yum",{"_index":1102,"title":{},"content":{"59":{}},"tags":{}}],["bash",{"_index":1078,"title":{"104":{}},"content":{"56":{},"84":{},"104":{},"105":{},"106":{}},"tags":{}}],["basic",{"_index":151,"title":{},"content":{"26":{},"36":{}},"tags":{}}],["bearer",{"_index":625,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["befor",{"_index":599,"title":{},"content":{"26":{},"56":{},"65":{},"125":{},"175":{}},"tags":{}}],["behind",{"_index":405,"title":{},"content":{"14":{},"26":{}},"tags":{}}],["belong",{"_index":1035,"title":{},"content":{"68":{}},"tags":{}}],["below",{"_index":304,"title":{},"content":{"26":{},"43":{}},"tags":{}}],["benefit",{"_index":406,"title":{},"content":{"26":{}},"tags":{}}],["better",{"_index":923,"title":{},"content":{"65":{}},"tags":{}}],["between",{"_index":26,"title":{},"content":{"5":{},"8":{},"14":{},"18":{},"23":{},"24":{},"26":{},"31":{}},"tags":{}}],["bewar",{"_index":531,"title":{},"content":{"26":{}},"tags":{}}],["bi",{"_index":1040,"title":{},"content":{"51":{}},"tags":{}}],["bin",{"_index":1115,"title":{},"content":{"61":{}},"tags":{}}],["binari",{"_index":660,"title":{"54":{}},"content":{"14":{},"53":{},"54":{},"55":{},"63":{},"91":{},"93":{},"150":{},"151":{},"155":{},"156":{},"220":{}},"tags":{}}],["bind",{"_index":564,"title":{},"content":{"20":{},"26":{}},"tags":{}}],["bird2",{"_index":1041,"title":{},"content":{"51":{}},"tags":{}}],["bit",{"_index":335,"title":{},"content":{"26":{},"174":{}},"tags":{}}],["blacklist",{"_index":511,"title":{},"content":{"26":{},"68":{}},"tags":{}}],["block",{"_index":294,"title":{},"content":{"14":{},"26":{}},"tags":{}}],["both",{"_index":771,"title":{},"content":{"28":{},"34":{}},"tags":{}}],["box",{"_index":775,"title":{},"content":{"34":{}},"tags":{}}],["bpf",{"_index":778,"title":{"19":{}},"content":{},"tags":{}}],["branch=mast",{"_index":1245,"title":{},"content":{"221":{}},"tags":{}}],["brew",{"_index":1109,"title":{},"content":{"60":{},"86":{},"105":{}},"tags":{}}],["bring",{"_index":450,"title":{},"content":{"26":{}},"tags":{}}],["broaden",{"_index":98,"title":{},"content":{"8":{}},"tags":{}}],["buffer",{"_index":878,"title":{},"content":{"31":{}},"tags":{}}],["build",{"_index":88,"title":{},"content":{"8":{},"62":{}},"tags":{}}],["built",{"_index":1043,"title":{},"content":{"53":{},"63":{},"201":{},"221":{}},"tags":{}}],["bundl",{"_index":313,"title":{},"content":{"14":{},"26":{},"91":{}},"tags":{}}],["burrow",{"_index":84,"title":{},"content":{"8":{}},"tags":{}}],["buxfbfan.wg",{"_index":1024,"title":{},"content":{"47":{}},"tags":{}}],["by=goreleas",{"_index":1249,"title":{},"content":{"221":{}},"tags":{}}],["c",{"_index":1190,"title":{},"content":{"125":{},"158":{},"170":{}},"tags":{}}],["cach",{"_index":1124,"title":{},"content":{"62":{}},"tags":{}}],["calcul",{"_index":352,"title":{"174":{}},"content":{"26":{},"93":{},"117":{},"118":{},"174":{},"186":{},"214":{},"215":{}},"tags":{}}],["call",{"_index":1259,"title":{},"content":{"216":{}},"tags":{}}],["callback",{"_index":606,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["canada",{"_index":530,"title":{},"content":{"26":{}},"tags":{}}],["candid",{"_index":43,"title":{},"content":{"5":{},"14":{},"15":{},"20":{},"26":{},"27":{},"29":{},"65":{},"125":{}},"tags":{}}],["candidate
1",{"_index":857,"title":{},"content":{"27":{}},"tags":{}}],["candidate_typ",{"_index":550,"title":{},"content":{"26":{}},"tags":{}}],["capabl",{"_index":1012,"title":{},"content":{"47":{}},"tags":{}}],["carri",{"_index":861,"title":{},"content":{"28":{}},"tags":{}}],["case",{"_index":201,"title":{"206":{}},"content":{"26":{},"40":{},"42":{},"43":{},"63":{}},"tags":{}}],["cat",{"_index":1098,"title":{},"content":{"59":{}},"tags":{}}],["catch",{"_index":423,"title":{},"content":{"26":{}},"tags":{}}],["categori",{"_index":1273,"title":{},"content":{"192":{}},"tags":{}}],["caution",{"_index":527,"title":{},"content":{"26":{}},"tags":{}}],["central",{"_index":200,"title":{},"content":{"40":{}},"tags":{}}],["certain",{"_index":610,"title":{},"content":{"26":{},"66":{},"67":{}},"tags":{}}],["certif",{"_index":251,"title":{},"content":{"26":{},"41":{}},"tags":{}}],["cfgsync",{"_index":953,"title":{},"content":{"43":{},"50":{}},"tags":{}}],["chain",{"_index":788,"title":{},"content":{"20":{}},"tags":{}}],["chang",{"_index":94,"title":{},"content":{"8":{},"26":{},"42":{},"65":{},"125":{}},"tags":{}}],["channel",{"_index":71,"title":{},"content":{"7":{}},"tags":{}}],["charact",{"_index":1000,"title":{},"content":{"46":{}},"tags":{}}],["check",{"_index":261,"title":{},"content":{"26":{},"27":{},"33":{},"42":{},"65":{}},"tags":{}}],["check_interv",{"_index":591,"title":{},"content":{"26":{}},"tags":{}}],["checkout",{"_index":865,"title":{},"content":{"28":{},"30":{}},"tags":{}}],["chmod",{"_index":1052,"title":{},"content":{"55":{},"56":{}},"tags":{}}],["choic",{"_index":437,"title":{},"content":{"26":{}},"tags":{}}],["choosen",{"_index":87,"title":{},"content":{"8":{}},"tags":{}}],["ci",{"_index":741,"title":{},"content":{"33":{}},"tags":{}}],["cidr",{"_index":418,"title":{},"content":{"26":{},"120":{}},"tags":{}}],["classif",{"_index":344,"title":{},"content":{"26":{}},"tags":{}}],["client",{"_index":1053,"title":{},"content":{"55":{},"125":{},"221":{}},"tags":{}}],["close",{"_index":858,"title":{},"content":{"27":{}},"tags":{}}],["cluster",{"_index":868,"title":{},"content":{"30":{}},"tags":{}}],["codaci",{"_index":743,"title":{},"content":{"33":{}},"tags":{}}],["code",{"_index":740,"title":{},"content":{"33":{},"34":{},"43":{},"147":{}},"tags":{}}],["codecov",{"_index":745,"title":{},"content":{"33":{}},"tags":{}}],["colon",{"_index":382,"title":{},"content":{"26":{}},"tags":{}}],["color",{"_index":620,"title":{},"content":{"26":{},"67":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["combin",{"_index":245,"title":{},"content":{"41":{}},"tags":{}}],["comma",{"_index":415,"title":{},"content":{"26":{}},"tags":{}}],["command",{"_index":149,"title":{"36":{},"71":{},"76":{},"83":{},"88":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"content":{"26":{},"36":{},"39":{},"41":{},"65":{},"67":{},"71":{},"93":{},"95":{},"118":{},"125":{},"137":{},"156":{},"174":{},"182":{},"183":{},"190":{},"195":{},"200":{},"201":{},"205":{},"219":{}},"tags":{}}],["command'",{"_index":1168,"title":{},"content":{"81":{}},"tags":{}}],["comment",{"_index":1007,"title":{},"content":{"47":{}},"tags":{}}],["commerci",{"_index":131,"title":{},"content":{"64":{}},"tags":{}}],["commit=b22ee3e7",{"_index":1244,"title":{},"content":{"221":{}},"tags":{}}],["common",{"_index":503,"title":{},"content":{"26":{},"68":{},"172":{}},"tags":{}}],["commun",{"_index":227,"title":{},"content":{"14":{},"26":{},"40":{},"55":{},"68":{},"125":{},"173":{},"209":{}},"tags":{}}],["community=mi",{"_index":226,"title":{},"content":{"40":{}},"tags":{}}],["compar",{"_index":130,"title":{},"content":{"64":{}},"tags":{}}],["comparison",{"_index":124,"title":{"64":{}},"content":{"64":{}},"tags":{}}],["compat",{"_index":675,"title":{},"content":{"14":{}},"tags":{}}],["compdef",{"_index":1184,"title":{},"content":{"86":{}},"tags":{}}],["compil",{"_index":825,"title":{},"content":{"24":{},"62":{}},"tags":{}}],["compinit",{"_index":1182,"title":{},"content":{"86":{}},"tags":{}}],["complet",{"_index":722,"title":{"73":{},"80":{},"85":{},"94":{},"104":{}},"content":{"27":{},"33":{},"74":{},"75":{},"77":{},"82":{},"84":{},"86":{},"87":{},"89":{},"93":{},"95":{},"96":{},"98":{},"105":{},"106":{},"108":{}},"tags":{}}],["complex",{"_index":60,"title":{},"content":{"6":{},"9":{},"10":{},"34":{}},"tags":{}}],["concaten",{"_index":962,"title":{},"content":{"174":{}},"tags":{}}],["concern",{"_index":946,"title":{},"content":{"43":{}},"tags":{}}],["conclus",{"_index":1127,"title":{"63":{}},"content":{},"tags":{}}],["conf",{"_index":1140,"title":{},"content":{"91":{}},"tags":{}}],["config",{"_index":190,"title":{"49":{},"99":{},"109":{},"113":{},"128":{}},"content":{"26":{},"39":{},"40":{},"41":{},"42":{},"43":{},"49":{},"93":{},"101":{},"103":{},"109":{},"112":{},"113":{},"116":{},"125":{},"128":{},"131":{},"147":{}},"tags":{}}],["config/fish/completions/cunicu.fish",{"_index":1177,"title":{},"content":{"74":{}},"tags":{}}],["config=https://example.com/cunicu.yaml",{"_index":224,"title":{},"content":{"40":{},"41":{}},"tags":{}}],["configur",{"_index":9,"title":{"26":{},"35":{},"37":{},"40":{},"41":{},"45":{},"48":{},"50":{},"52":{},"67":{},"69":{},"79":{},"172":{},"176":{},"207":{}},"content":{"5":{},"14":{},"26":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"46":{},"49":{},"62":{},"66":{},"68":{},"93":{},"99":{},"103":{},"109":{},"112":{},"113":{},"116":{},"118":{},"125":{},"128":{},"131":{},"146":{},"168":{},"172":{},"175":{},"186":{},"191":{},"192":{},"196":{},"197":{}},"tags":{}}],["conicu",{"_index":273,"title":{},"content":{"42":{}},"tags":{}}],["conn.bind",{"_index":815,"title":{},"content":{"24":{}},"tags":{}}],["connect",{"_index":189,"title":{},"content":{"15":{},"26":{},"27":{},"39":{},"44":{},"84":{},"90":{},"91":{},"103":{},"122":{},"125":{},"127":{},"135":{},"141":{},"145":{},"149":{},"154":{},"159":{},"163":{},"167":{},"171":{},"181":{},"186":{},"213":{},"224":{}},"tags":{}}],["consgpwvpdpahc8u+dbbwgztadcd6+1bvpiyg10wdci",{"_index":509,"title":{},"content":{"26":{}},"tags":{}}],["constraint",{"_index":323,"title":{},"content":{"26":{}},"tags":{}}],["construct",{"_index":765,"title":{},"content":{"34":{},"78":{}},"tags":{}}],["contact",{"_index":40,"title":{},"content":{"5":{}},"tags":{}}],["contain",{"_index":860,"title":{},"content":{"28":{},"192":{}},"tags":{}}],["context",{"_index":934,"title":{},"content":{"65":{}},"tags":{}}],["context.context",{"_index":886,"title":{},"content":{"32":{}},"tags":{}}],["continu",{"_index":1195,"title":{},"content":{"125":{}},"tags":{}}],["contrast",{"_index":1252,"title":{},"content":{"183":{}},"tags":{}}],["control",{"_index":281,"title":{},"content":{"26":{},"27":{},"65":{},"101":{},"111":{},"115":{},"125":{},"130":{},"133":{},"143":{},"147":{},"161":{},"165":{},"169":{},"179":{},"193":{},"198":{}},"tags":{}}],["convert",{"_index":169,"title":{},"content":{"38":{}},"tags":{}}],["copyright",{"_index":108,"title":{},"content":{"9":{}},"tags":{}}],["cornerston",{"_index":1037,"title":{},"content":{"68":{}},"tags":{}}],["corpor",{"_index":198,"title":{},"content":{"40":{}},"tags":{}}],["correctli",{"_index":384,"title":{},"content":{"26":{}},"tags":{}}],["correspond",{"_index":1257,"title":{},"content":{"215":{},"216":{}},"tags":{}}],["coturn",{"_index":1209,"title":{},"content":{"137":{}},"tags":{}}],["cover",{"_index":1128,"title":{},"content":{"63":{}},"tags":{}}],["coverag",{"_index":746,"title":{},"content":{"33":{},"34":{}},"tags":{}}],["creat",{"_index":22,"title":{},"content":{"5":{},"23":{},"26":{},"27":{},"125":{}},"tags":{}}],["credenti",{"_index":537,"title":{},"content":{"26":{},"27":{},"29":{},"125":{},"137":{}},"tags":{}}],["credentials
1",{"_index":854,"title":{},"content":{"27":{}},"tags":{}}],["crypto.key",{"_index":898,"title":{},"content":{"32":{}},"tags":{}}],["crypto.keypair",{"_index":888,"title":{},"content":{"32":{}},"tags":{}}],["cryptographi",{"_index":367,"title":{},"content":{"26":{},"28":{}},"tags":{}}],["cunico",{"_index":1253,"title":{},"content":{"183":{}},"tags":{}}],["cunicu",{"_index":18,"title":{"73":{},"80":{},"85":{},"90":{},"94":{},"99":{},"104":{},"109":{},"113":{},"117":{},"123":{},"128":{},"132":{},"136":{},"142":{},"146":{},"150":{},"155":{},"160":{},"164":{},"168":{},"177":{},"182":{},"187":{},"191":{},"196":{},"202":{},"210":{},"214":{},"220":{}},"content":{"5":{},"7":{},"20":{},"26":{},"35":{},"36":{},"39":{},"40":{},"41":{},"46":{},"47":{},"51":{},"55":{},"58":{},"59":{},"60":{},"61":{},"65":{},"71":{},"74":{},"77":{},"81":{},"84":{},"86":{},"89":{},"92":{},"93":{},"95":{},"98":{},"103":{},"105":{},"108":{},"109":{},"112":{},"113":{},"116":{},"118":{},"119":{},"122":{},"123":{},"124":{},"125":{},"127":{},"128":{},"131":{},"132":{},"135":{},"137":{},"141":{},"142":{},"145":{},"146":{},"149":{},"151":{},"152":{},"154":{},"156":{},"157":{},"159":{},"160":{},"163":{},"164":{},"167":{},"168":{},"171":{},"174":{},"178":{},"181":{},"186":{},"187":{},"190":{},"192":{},"195":{},"197":{},"200":{},"201":{},"202":{},"205":{},"207":{},"208":{},"209":{},"210":{},"213":{},"215":{},"219":{},"220":{},"221":{},"224":{}},"tags":{}}],["cunicu_",{"_index":172,"title":{},"content":{"38":{}},"tags":{}}],["cunicu_0.0.1_linux_amd64.tar.gz",{"_index":1048,"title":{},"content":{"55":{}},"tags":{}}],["cunicu_endpoint_disc_ice_max_binding_request",{"_index":177,"title":{},"content":{"38":{}},"tags":{}}],["cunucu",{"_index":1255,"title":{},"content":{"183":{}},"tags":{}}],["cunīcu",{"_index":3,"title":{},"content":{"5":{},"8":{},"9":{},"16":{},"18":{},"19":{},"20":{},"23":{},"24":{},"26":{},"29":{},"33":{},"34":{},"35":{},"40":{},"41":{},"42":{},"43":{},"53":{},"54":{},"55":{},"56":{},"57":{},"60":{},"61":{},"62":{},"63":{},"64":{},"67":{},"84":{},"90":{},"91":{},"93":{},"99":{},"103":{},"112":{},"116":{},"118":{},"122":{},"127":{},"128":{},"131":{},"132":{},"135":{},"141":{},"142":{},"145":{},"149":{},"150":{},"151":{},"154":{},"155":{},"159":{},"160":{},"163":{},"164":{},"167":{},"168":{},"171":{},"177":{},"181":{},"186":{},"201":{},"213":{},"220":{},"224":{}},"tags":{}}],["cunīcu'",{"_index":184,"title":{},"content":{"34":{},"39":{}},"tags":{}}],["cunīculu",{"_index":81,"title":{},"content":{"8":{}},"tags":{}}],["curl",{"_index":1071,"title":{},"content":{"56":{}},"tags":{}}],["current",{"_index":112,"title":{},"content":{"10":{},"38":{},"43":{},"65":{},"74":{},"86":{},"93":{},"95":{},"103":{},"105":{},"109":{},"137":{},"151":{},"156":{},"160":{},"183":{},"186":{},"191":{},"192":{},"196":{},"197":{}},"tags":{}}],["custom",{"_index":462,"title":{},"content":{"26":{}},"tags":{}}],["d",{"_index":457,"title":{},"content":{"26":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"125":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["d)nat",{"_index":575,"title":{},"content":{"26":{}},"tags":{}}],["daemon",{"_index":15,"title":{"72":{},"123":{},"208":{}},"content":{"5":{},"14":{},"26":{},"35":{},"36":{},"39":{},"40":{},"41":{},"43":{},"51":{},"65":{},"66":{},"72":{},"84":{},"90":{},"91":{},"93":{},"99":{},"103":{},"112":{},"116":{},"122":{},"123":{},"124":{},"125":{},"127":{},"128":{},"131":{},"132":{},"135":{},"141":{},"142":{},"145":{},"146":{},"149":{},"154":{},"159":{},"160":{},"163":{},"164":{},"167":{},"168":{},"171":{},"177":{},"178":{},"181":{},"183":{},"186":{},"213":{},"220":{},"221":{},"224":{}},"tags":{}}],["deb",{"_index":1087,"title":{},"content":{"58":{}},"tags":{}}],["debian",{"_index":1084,"title":{"58":{}},"content":{},"tags":{}}],["debug",{"_index":1147,"title":{},"content":{"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["dedic",{"_index":812,"title":{},"content":{"23":{},"30":{}},"tags":{}}],["default",{"_index":305,"title":{},"content":{"26":{},"76":{},"83":{},"88":{},"92":{},"97":{},"101":{},"102":{},"107":{},"111":{},"115":{},"121":{},"125":{},"126":{},"130":{},"133":{},"134":{},"139":{},"140":{},"143":{},"144":{},"147":{},"148":{},"152":{},"153":{},"157":{},"158":{},"161":{},"162":{},"165":{},"166":{},"169":{},"170":{},"175":{},"179":{},"180":{},"185":{},"189":{},"192":{},"193":{},"194":{},"198":{},"199":{},"204":{},"211":{},"212":{},"218":{},"222":{},"223":{}},"tags":{}}],["defin",{"_index":643,"title":{},"content":{"26":{}},"tags":{}}],["deleg",{"_index":1254,"title":{},"content":{"183":{}},"tags":{}}],["delet",{"_index":930,"title":{},"content":{"65":{}},"tags":{}}],["deliv",{"_index":873,"title":{},"content":{"31":{}},"tags":{}}],["deliveri",{"_index":872,"title":{},"content":{"31":{}},"tags":{}}],["depend",{"_index":661,"title":{},"content":{"14":{},"62":{},"105":{}},"tags":{}}],["deriv",{"_index":78,"title":{},"content":{"8":{},"26":{},"118":{},"173":{},"174":{}},"tags":{}}],["describ",{"_index":147,"title":{},"content":{"35":{}},"tags":{}}],["descript",{"_index":703,"title":{"28":{}},"content":{"15":{},"28":{},"75":{},"87":{},"96":{},"106":{}},"tags":{}}],["design",{"_index":644,"title":{"12":{}},"content":{},"tags":{}}],["desir",{"_index":1011,"title":{},"content":{"47":{},"55":{}},"tags":{}}],["destin",{"_index":790,"title":{},"content":{"20":{},"55":{}},"tags":{}}],["detail",{"_index":867,"title":{},"content":{"28":{},"71":{},"81":{},"201":{}},"tags":{}}],["detect",{"_index":257,"title":{},"content":{"42":{}},"tags":{}}],["determin",{"_index":434,"title":{},"content":{"26":{},"175":{}},"tags":{}}],["develop",{"_index":114,"title":{"33":{}},"content":{"10":{},"33":{}},"tags":{}}],["diagram",{"_index":936,"title":{},"content":{"65":{}},"tags":{}}],["dictionari",{"_index":350,"title":{},"content":{"26":{}},"tags":{}}],["direct",{"_index":422,"title":{},"content":{"14":{},"20":{},"26":{},"51":{}},"tags":{}}],["directli",{"_index":818,"title":{},"content":{"24":{}},"tags":{}}],["directori",{"_index":764,"title":{},"content":{"34":{}},"tags":{}}],["disabl",{"_index":345,"title":{},"content":{"26":{},"75":{},"87":{},"96":{},"106":{}},"tags":{}}],["discard",{"_index":874,"title":{},"content":{"31":{}},"tags":{}}],["disconnect",{"_index":594,"title":{},"content":{"26":{},"27":{}},"tags":{}}],["disconnected_timeout",{"_index":596,"title":{},"content":{"26":{}},"tags":{}}],["discov",{"_index":27,"title":{},"content":{"5":{},"46":{},"65":{},"125":{}},"tags":{}}],["discover_endpoint",{"_index":518,"title":{},"content":{"26":{}},"tags":{}}],["discover_p",{"_index":500,"title":{},"content":{"26":{}},"tags":{}}],["discoveri",{"_index":386,"title":{"44":{},"68":{},"209":{}},"content":{"26":{},"43":{},"44":{},"46":{},"68":{},"125":{}},"tags":{}}],["display",{"_index":1271,"title":{},"content":{"192":{}},"tags":{}}],["distribut",{"_index":272,"title":{},"content":{"42":{},"65":{},"137":{}},"tags":{}}],["dn",{"_index":191,"title":{"40":{}},"content":{"26":{},"40":{},"41":{},"42":{},"125":{},"172":{}},"tags":{}}],["dnat",{"_index":580,"title":{},"content":{"26":{}},"tags":{}}],["do",{"_index":1070,"title":{},"content":{"56":{}},"tags":{}}],["doc",{"_index":937,"title":{},"content":{"65":{}},"tags":{}}],["document",{"_index":940,"title":{},"content":{"56":{},"63":{},"65":{},"71":{},"201":{}},"tags":{}}],["domain",{"_index":203,"title":{},"content":{"26":{},"40":{},"125":{}},"tags":{}}],["done",{"_index":49,"title":{},"content":{"5":{}},"tags":{}}],["donenfeld",{"_index":123,"title":{},"content":{"11":{}},"tags":{}}],["down",{"_index":456,"title":{},"content":{"26":{}},"tags":{}}],["download",{"_index":240,"title":{},"content":{"41":{},"54":{},"55":{},"151":{},"152":{},"156":{},"157":{}},"tags":{}}],["dpanic",{"_index":1149,"title":{},"content":{"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["dport",{"_index":800,"title":{},"content":{"20":{}},"tags":{}}],["drago",{"_index":680,"title":{},"content":{"14":{}},"tags":{}}],["drop",{"_index":672,"title":{},"content":{"14":{}},"tags":{}}],["dump",{"_index":1274,"title":{},"content":{"192":{}},"tags":{}}],["durat",{"_index":389,"title":{},"content":{"26":{},"125":{}},"tags":{}}],["dure",{"_index":922,"title":{},"content":{"65":{}},"tags":{}}],["dynam",{"_index":139,"title":{},"content":{"64":{}},"tags":{}}],["e",{"_index":1192,"title":{},"content":{"125":{}},"tags":{}}],["e.g",{"_index":39,"title":{},"content":{"5":{},"26":{},"31":{},"43":{}},"tags":{}}],["e2",{"_index":761,"title":{},"content":{"34":{}},"tags":{}}],["each",{"_index":6,"title":{},"content":{"5":{},"18":{},"23":{},"26":{},"46":{},"67":{},"81":{},"173":{},"192":{}},"tags":{}}],["easi",{"_index":1121,"title":{},"content":{"62":{}},"tags":{}}],["easili",{"_index":1210,"title":{},"content":{"137":{}},"tags":{}}],["ebpf",{"_index":779,"title":{},"content":{"19":{}},"tags":{}}],["ec2",{"_index":578,"title":{},"content":{"26":{}},"tags":{}}],["echo",{"_index":1086,"title":{},"content":{"58":{},"86":{}},"tags":{}}],["edg",{"_index":1080,"title":{},"content":{"56":{}},"tags":{}}],["effect",{"_index":1176,"title":{},"content":{"74":{},"86":{},"105":{}},"tags":{}}],["egress",{"_index":806,"title":{},"content":{"20":{}},"tags":{}}],["elast",{"_index":581,"title":{},"content":{"26":{}},"tags":{}}],["elev",{"_index":185,"title":{},"content":{"39":{}},"tags":{}}],["empti",{"_index":393,"title":{},"content":{"26":{}},"tags":{}}],["enabl",{"_index":468,"title":{},"content":{"14":{},"26":{},"76":{},"83":{},"86":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"125":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"173":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["enable/dis",{"_index":499,"title":{},"content":{"26":{}},"tags":{}}],["enabled=1",{"_index":1103,"title":{},"content":{"59":{}},"tags":{}}],["encod",{"_index":1001,"title":{},"content":{"46":{}},"tags":{}}],["encrypt",{"_index":646,"title":{},"content":{"14":{},"28":{}},"tags":{}}],["end",{"_index":734,"title":{},"content":{"27":{},"33":{},"34":{}},"tags":{}}],["endpoint",{"_index":35,"title":{"44":{}},"content":{"5":{},"14":{},"18":{},"23":{},"26":{},"43":{},"44":{},"67":{},"68":{},"125":{},"175":{},"192":{}},"tags":{}}],["endpoint.com/api/v1/webhook",{"_index":623,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["end{align}h",{"_index":987,"title":{},"content":{"174":{}},"tags":{}}],["entri",{"_index":998,"title":{},"content":{"46":{},"47":{}},"tags":{}}],["env",{"_index":619,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["envelop",{"_index":859,"title":{},"content":{"28":{},"31":{}},"tags":{}}],["environ",{"_index":166,"title":{"38":{}},"content":{"26":{},"34":{},"38":{},"40":{},"62":{},"67":{},"84":{},"86":{},"90":{},"91":{},"103":{},"122":{},"127":{},"135":{},"141":{},"145":{},"149":{},"154":{},"159":{},"163":{},"167":{},"171":{},"181":{},"186":{},"213":{},"224":{}},"tags":{}}],["eof",{"_index":1100,"title":{},"content":{"59":{}},"tags":{}}],["epdisc",{"_index":955,"title":{},"content":{"43":{},"45":{}},"tags":{}}],["epdisc.ice.max_binding_request",{"_index":176,"title":{},"content":{"38":{}},"tags":{}}],["epdisc.ice.url",{"_index":181,"title":{},"content":{"38":{}},"tags":{}}],["erigrid",{"_index":116,"title":{},"content":{"10":{}},"tags":{}}],["error",{"_index":890,"title":{},"content":{"32":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["establish",{"_index":514,"title":{"78":{}},"content":{"15":{},"26":{},"27":{},"43":{},"44":{},"84":{},"90":{},"91":{},"103":{},"122":{},"127":{},"135":{},"141":{},"145":{},"149":{},"154":{},"159":{},"163":{},"167":{},"171":{},"181":{},"186":{},"213":{},"224":{}},"tags":{}}],["etag",{"_index":264,"title":{},"content":{"42":{}},"tags":{}}],["etc/apt/sources.list.d/cunicu.list",{"_index":1093,"title":{},"content":{"58":{}},"tags":{}}],["etc/bash_completion.d/cunicu",{"_index":1174,"title":{},"content":{"105":{}},"tags":{}}],["etc/cunicu.yaml",{"_index":275,"title":{},"content":{"26":{},"45":{},"48":{},"50":{},"52":{},"67":{},"69":{},"79":{},"176":{}},"tags":{}}],["etc/host",{"_index":492,"title":{},"content":{"26":{},"46":{},"47":{},"125":{}},"tags":{}}],["etc/iproute2/rt_t",{"_index":484,"title":{},"content":{"26":{}},"tags":{}}],["etc/yum.repos.d/cunicu.repo",{"_index":1099,"title":{},"content":{"59":{}},"tags":{}}],["eth[0",{"_index":557,"title":{},"content":{"26":{}},"tags":{}}],["evalu",{"_index":642,"title":{},"content":{"26":{}},"tags":{}}],["event",{"_index":611,"title":{},"content":{"26":{},"65":{},"66":{},"67":{},"93":{},"132":{}},"tags":{}}],["exampl",{"_index":163,"title":{"47":{},"119":{},"124":{},"138":{},"216":{},"221":{}},"content":{"26":{},"27":{},"37":{},"38":{},"137":{}},"tags":{}}],["example.com",{"_index":204,"title":{},"content":{"40":{},"41":{}},"tags":{}}],["except",{"_index":950,"title":{},"content":{"43":{}},"tags":{}}],["exchang",{"_index":24,"title":{},"content":{"5":{},"14":{},"26":{},"28":{},"43":{}},"tags":{}}],["exec",{"_index":612,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["execut",{"_index":1051,"title":{},"content":{"55":{},"56":{},"74":{},"86":{},"105":{}},"tags":{}}],["exist",{"_index":128,"title":{},"content":{"14":{},"26":{},"27":{},"64":{}},"tags":{}}],["expect",{"_index":1220,"title":{},"content":{"137":{}},"tags":{}}],["explicitli",{"_index":441,"title":{},"content":{"26":{}},"tags":{}}],["express",{"_index":1178,"title":{},"content":{"95":{}},"tags":{}}],["extens",{"_index":709,"title":{},"content":{"15":{},"137":{}},"tags":{}}],["extern",{"_index":573,"title":{},"content":{"26":{},"137":{}},"tags":{}}],["f",{"_index":1204,"title":{},"content":{"133":{},"161":{},"222":{}},"tags":{}}],["facilit",{"_index":870,"title":{},"content":{"31":{}},"tags":{}}],["fail",{"_index":569,"title":{},"content":{"26":{},"27":{}},"tags":{}}],["failed_timeout",{"_index":598,"title":{},"content":{"26":{}},"tags":{}}],["fairli",{"_index":1120,"title":{},"content":{"62":{}},"tags":{}}],["fallback",{"_index":667,"title":{},"content":{"14":{}},"tags":{}}],["fals",{"_index":300,"title":{},"content":{"26":{}},"tags":{}}],["fatal",{"_index":1151,"title":{},"content":{"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["fc2f:9a4d:777f:7a97:8197:4a5d:1d1b:ed79",{"_index":1164,"title":{},"content":{"119":{}},"tags":{}}],["fc2f:9a4d::/32",{"_index":444,"title":{},"content":{"26":{}},"tags":{}}],["fe00::0",{"_index":1015,"title":{},"content":{"47":{}},"tags":{}}],["fe80",{"_index":972,"title":{},"content":{"174":{}},"tags":{}}],["fe80::/64",{"_index":963,"title":{},"content":{"174":{}},"tags":{}}],["fe80::13a9:c799:cead:4f28",{"_index":1023,"title":{},"content":{"47":{}},"tags":{}}],["fe80::1fed:fabb:a9f6:d78",{"_index":1030,"title":{},"content":{"47":{}},"tags":{}}],["featur",{"_index":244,"title":{"43":{}},"content":{"14":{},"41":{},"43":{},"46":{},"49":{},"51":{},"66":{},"68":{},"118":{},"137":{},"172":{},"173":{}},"tags":{}}],["fedora",{"_index":1096,"title":{"59":{}},"content":{},"tags":{}}],["feel",{"_index":68,"title":{},"content":{"7":{}},"tags":{}}],["fetch",{"_index":247,"title":{},"content":{"41":{},"56":{},"62":{}},"tags":{}}],["few",{"_index":949,"title":{},"content":{"43":{},"137":{}},"tags":{}}],["ff00::0",{"_index":1017,"title":{},"content":{"47":{}},"tags":{}}],["ff02::1",{"_index":1019,"title":{},"content":{"47":{}},"tags":{}}],["ff02::2",{"_index":1021,"title":{},"content":{"47":{}},"tags":{}}],["field",{"_index":1272,"title":{},"content":{"192":{}},"tags":{}}],["file",{"_index":158,"title":{"37":{},"41":{},"46":{}},"content":{"26":{},"34":{},"37":{},"38":{},"41":{},"42":{},"43":{},"46":{},"47":{},"49":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"125":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"151":{},"152":{},"153":{},"156":{},"157":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["filenam",{"_index":1191,"title":{},"content":{"125":{},"152":{},"157":{}},"tags":{}}],["filter",{"_index":665,"title":{"19":{}},"content":{"14":{},"19":{},"20":{},"68":{}},"tags":{}}],["find",{"_index":495,"title":{},"content":{"26":{},"44":{},"68":{}},"tags":{}}],["firewal",{"_index":397,"title":{},"content":{"14":{},"26":{},"34":{}},"tags":{}}],["first",{"_index":328,"title":{},"content":{"26":{},"46":{},"125":{},"192":{}},"tags":{}}],["fish",{"_index":1169,"title":{"73":{}},"content":{"73":{},"74":{},"75":{},"84":{}},"tags":{}}],["flag",{"_index":150,"title":{"36":{}},"content":{"74":{},"86":{},"95":{},"109":{},"113":{},"118":{},"123":{},"128":{},"132":{},"137":{},"142":{},"146":{},"151":{},"156":{},"160":{},"164":{},"168":{},"178":{},"187":{},"192":{},"197":{},"202":{},"210":{},"215":{},"220":{}},"tags":{}}],["fleet",{"_index":199,"title":{},"content":{"40":{},"137":{}},"tags":{}}],["fli",{"_index":471,"title":{},"content":{"26":{}},"tags":{}}],["flkhqqqqx+btaq7+yhweecwwrg2ih7nq48f/seoyrh8",{"_index":359,"title":{},"content":{"26":{}},"tags":{}}],["flowchart",{"_index":827,"title":{"25":{}},"content":{},"tags":{}}],["follow",{"_index":4,"title":{},"content":{"5":{},"26":{},"33":{},"38":{},"40":{},"43":{},"47":{},"71":{},"86":{},"175":{}},"tags":{}}],["format",{"_index":1205,"title":{},"content":{"133":{},"161":{},"197":{},"222":{}},"tags":{}}],["former",{"_index":95,"title":{},"content":{"8":{}},"tags":{}}],["formerli",{"_index":137,"title":{},"content":{"64":{}},"tags":{}}],["formula",{"_index":1106,"title":{},"content":{"60":{}},"tags":{}}],["found",{"_index":757,"title":{},"content":{"34":{},"51":{}},"tags":{}}],["fpath[1]}/_cunicu",{"_index":1186,"title":{},"content":{"86":{}},"tags":{}}],["fra",{"_index":1025,"title":{},"content":{"47":{}},"tags":{}}],["framework",{"_index":756,"title":{},"content":{"34":{}},"tags":{}}],["free",{"_index":69,"title":{},"content":{"7":{},"175":{}},"tags":{}}],["freebsd",{"_index":925,"title":{},"content":{"65":{}},"tags":{}}],["friendli",{"_index":1270,"title":{},"content":{"192":{}},"tags":{}}],["fssl",{"_index":1072,"title":{},"content":{"56":{}},"tags":{}}],["full",{"_index":155,"title":{},"content":{"36":{},"37":{},"42":{}},"tags":{}}],["function",{"_index":378,"title":{},"content":{"26":{},"66":{},"174":{},"201":{}},"tags":{}}],["functions/_cunicu",{"_index":1188,"title":{},"content":{"86":{}},"tags":{}}],["fund",{"_index":110,"title":{"10":{}},"content":{},"tags":{}}],["furthermor",{"_index":737,"title":{},"content":{"33":{}},"tags":{}}],["fwmark",{"_index":339,"title":{},"content":{"26":{},"192":{}},"tags":{}}],["gather",{"_index":516,"title":{},"content":{"26":{},"27":{}},"tags":{}}],["gener",{"_index":309,"title":{},"content":{"26":{},"73":{},"74":{},"77":{},"80":{},"81":{},"84":{},"85":{},"86":{},"89":{},"93":{},"94":{},"95":{},"98":{},"104":{},"105":{},"108":{},"147":{},"174":{},"175":{},"186":{},"187":{},"202":{},"215":{},"216":{}},"tags":{}}],["genkey",{"_index":310,"title":{"202":{}},"content":{"26":{},"119":{},"186":{},"202":{},"203":{},"215":{},"216":{}},"tags":{}}],["genpsk",{"_index":362,"title":{"187":{}},"content":{"26":{},"186":{},"187":{},"188":{}},"tags":{}}],["get",{"_index":0,"title":{"5":{}},"content":{"26":{},"63":{}},"tags":{}}],["get.cunicu.li",{"_index":1075,"title":{},"content":{"56":{}},"tags":{}}],["get_cunicu.sh",{"_index":1074,"title":{},"content":{"56":{}},"tags":{}}],["gg",{"_index":982,"title":{},"content":{"174":{}},"tags":{}}],["ginkgo",{"_index":731,"title":{},"content":{"33":{}},"tags":{}}],["ginkgo/gomega",{"_index":755,"title":{},"content":{"34":{}},"tags":{}}],["github",{"_index":739,"title":{},"content":{"33":{},"65":{},"151":{},"156":{}},"tags":{}}],["github.com/stv0g/cunicu/cmd/cunicu@latest",{"_index":1123,"title":{},"content":{"62":{}},"tags":{}}],["give",{"_index":582,"title":{},"content":{"26":{}},"tags":{}}],["given",{"_index":1258,"title":{},"content":{"192":{},"215":{}},"tags":{}}],["glob",{"_index":634,"title":{},"content":{"26":{}},"tags":{}}],["glob(7",{"_index":554,"title":{},"content":{"26":{}},"tags":{}}],["glob(8",{"_index":631,"title":{},"content":{"26":{}},"tags":{}}],["global",{"_index":961,"title":{},"content":{"173":{}},"tags":{}}],["go",{"_index":314,"title":{},"content":{"24":{},"26":{},"33":{},"62":{},"91":{}},"tags":{}}],["go'",{"_index":814,"title":{},"content":{"24":{}},"tags":{}}],["golang",{"_index":728,"title":{},"content":{"33":{}},"tags":{}}],["gomega",{"_index":732,"title":{},"content":{"33":{}},"tags":{}}],["gont",{"_index":733,"title":{},"content":{"33":{},"34":{}},"tags":{}}],["gopath}/bin/cunicu",{"_index":1126,"title":{},"content":{"62":{}},"tags":{}}],["gopher",{"_index":72,"title":{},"content":{"7":{}},"tags":{}}],["goreleas",{"_index":729,"title":{},"content":{"33":{}},"tags":{}}],["gpg",{"_index":1235,"title":{},"content":{"151":{},"156":{}},"tags":{}}],["gpgcheck=0",{"_index":1104,"title":{},"content":{"59":{}},"tags":{}}],["grab",{"_index":1065,"title":{},"content":{"56":{}},"tags":{}}],["group",{"_index":490,"title":{},"content":{"26":{},"31":{},"65":{},"192":{}},"tags":{}}],["grpc",{"_index":648,"title":{},"content":{"14":{},"30":{},"93":{},"137":{},"210":{}},"tags":{}}],["grpc://localhost:8080?insecure=true&skip_verify=tru",{"_index":286,"title":{},"content":{"26":{}},"tags":{}}],["grpc://relay.cunicu.li",{"_index":521,"title":{},"content":{"26":{}},"tags":{}}],["grpc://signal.cunicu.li:443",{"_index":285,"title":{},"content":{"26":{}},"tags":{}}],["guid",{"_index":1042,"title":{},"content":{"53":{}},"tags":{}}],["gunzip",{"_index":1047,"title":{},"content":{"55":{}},"tags":{}}],["h",{"_index":893,"title":{},"content":{"32":{},"75":{},"82":{},"87":{},"92":{},"96":{},"101":{},"106":{},"110":{},"114":{},"120":{},"125":{},"129":{},"133":{},"139":{},"143":{},"147":{},"152":{},"157":{},"161":{},"165":{},"169":{},"174":{},"179":{},"184":{},"188":{},"193":{},"198":{},"203":{},"211":{},"217":{},"222":{}},"tags":{}}],["h_{fold}~=&~(h",{"_index":978,"title":{},"content":{"174":{}},"tags":{}}],["hand",{"_index":25,"title":{"55":{}},"content":{"5":{}},"tags":{}}],["handl",{"_index":816,"title":{},"content":{"24":{}},"tags":{}}],["handshak",{"_index":932,"title":{},"content":{"65":{},"192":{}},"tags":{}}],["hard",{"_index":90,"title":{},"content":{"8":{}},"tags":{}}],["harsh",{"_index":1136,"title":{},"content":{"84":{},"90":{},"91":{},"103":{},"122":{},"127":{},"135":{},"141":{},"145":{},"149":{},"154":{},"159":{},"163":{},"167":{},"171":{},"181":{},"186":{},"213":{},"224":{}},"tags":{}}],["harvsg",{"_index":144,"title":{},"content":{"64":{}},"tags":{}}],["hash",{"_index":969,"title":{},"content":{"174":{}},"tags":{}}],["have",{"_index":407,"title":{},"content":{"26":{}},"tags":{}}],["header",{"_index":265,"title":{},"content":{"19":{},"26":{},"42":{},"67":{}},"tags":{}}],["heavili",{"_index":723,"title":{},"content":{"33":{}},"tags":{}}],["help",{"_index":1056,"title":{},"content":{"55":{},"75":{},"81":{},"82":{},"87":{},"92":{},"96":{},"101":{},"106":{},"110":{},"114":{},"120":{},"125":{},"129":{},"133":{},"139":{},"143":{},"147":{},"152":{},"157":{},"161":{},"165":{},"169":{},"179":{},"184":{},"188":{},"193":{},"198":{},"203":{},"211":{},"217":{},"222":{}},"tags":{}}],["here",{"_index":301,"title":{},"content":{"26":{},"47":{}},"tags":{}}],["hexadecim",{"_index":346,"title":{},"content":{"26":{}},"tags":{}}],["hfold",{"_index":975,"title":{},"content":{"174":{}},"tags":{}}],["hmac",{"_index":1212,"title":{},"content":{"137":{}},"tags":{}}],["homebrew",{"_index":1105,"title":{"60":{}},"content":{"60":{}},"tags":{}}],["hook",{"_index":463,"title":{"66":{}},"content":{"20":{},"26":{},"43":{},"66":{},"67":{}},"tags":{}}],["hop",{"_index":477,"title":{},"content":{"26":{},"51":{}},"tags":{}}],["host",{"_index":7,"title":{"46":{}},"content":{"5":{},"26":{},"41":{},"43":{},"46":{},"47":{},"125":{},"174":{}},"tags":{}}],["hostnam",{"_index":381,"title":{},"content":{"26":{},"46":{}},"tags":{}}],["hosts(5",{"_index":997,"title":{},"content":{"46":{}},"tags":{}}],["hsync",{"_index":956,"title":{},"content":{"43":{},"48":{}},"tags":{}}],["http",{"_index":237,"title":{},"content":{"26":{},"41":{},"42":{},"58":{},"67":{}},"tags":{}}],["http://example.com/cunicu.yaml",{"_index":239,"title":{},"content":{"41":{}},"tags":{}}],["https://aur.archlinux.org/packages/cunicu",{"_index":1114,"title":{},"content":{"61":{}},"tags":{}}],["https://github.com/stv0g/homebrew",{"_index":1108,"title":{},"content":{"60":{}},"tags":{}}],["https://ieeexplore.ieee.org/document/1437269",{"_index":906,"title":{},"content":{"65":{}},"tags":{}}],["https://link.springer.com/chapter/10.1007%2f978",{"_index":913,"title":{},"content":{"65":{}},"tags":{}}],["https://mi",{"_index":622,"title":{},"content":{"26":{},"67":{}},"tags":{}}],["https://packages.cunicu.li/apt",{"_index":1091,"title":{},"content":{"58":{}},"tags":{}}],["https://www.it.iitb.ac.in/~madhumita/access/gcs/a%20trust%20based%20access%20control%20framework%20for%20p2p%20file%20sharing%20systems.pdf",{"_index":907,"title":{},"content":{"65":{}},"tags":{}}],["https://www.metered.ca/tools/openrelay",{"_index":533,"title":{},"content":{"26":{}},"tags":{}}],["https://www.springerprofessional.de/en/decentr",{"_index":908,"title":{},"content":{"65":{}},"tags":{}}],["human",{"_index":1207,"title":{},"content":{"133":{},"161":{},"222":{}},"tags":{}}],["h~=&~\\mathrm{siphash}_{64}(pk",{"_index":977,"title":{},"content":{"174":{}},"tags":{}}],["h∧0xffff)⊼(h≫16",{"_index":991,"title":{},"content":{"174":{}},"tags":{}}],["h∧0xffff)⊼(h≫16)ipv6link−loc",{"_index":971,"title":{},"content":{"174":{}},"tags":{}}],["ic",{"_index":37,"title":{},"content":{"5":{},"14":{},"15":{},"16":{},"18":{},"19":{},"20":{},"23":{},"26":{},"27":{},"29":{},"33":{},"40":{},"44":{},"65":{},"125":{}},"tags":{}}],["ice.conn",{"_index":820,"title":{},"content":{"24":{}},"tags":{}}],["id",{"_index":485,"title":{},"content":{"26":{},"29":{}},"tags":{}}],["identifi",{"_index":720,"title":{},"content":{"15":{},"32":{},"68":{}},"tags":{}}],["idl",{"_index":852,"title":{},"content":{"27":{}},"tags":{}}],["ifindex=10",{"_index":1033,"title":{},"content":{"47":{}},"tags":{}}],["ifindex=9",{"_index":1028,"title":{},"content":{"47":{}},"tags":{}}],["ifname=wg0",{"_index":1027,"title":{},"content":{"47":{}},"tags":{}}],["ifname=wg1",{"_index":1032,"title":{},"content":{"47":{}},"tags":{}}],["immedi",{"_index":1135,"title":{},"content":{"72":{}},"tags":{}}],["impact",{"_index":663,"title":{},"content":{"14":{}},"tags":{}}],["implement",{"_index":317,"title":{"22":{}},"content":{"14":{},"16":{},"24":{},"26":{},"30":{},"32":{},"33":{},"43":{},"65":{},"91":{},"125":{}},"tags":{}}],["includ",{"_index":751,"title":{},"content":{"34":{}},"tags":{}}],["inclus",{"_index":391,"title":{},"content":{"26":{}},"tags":{}}],["incom",{"_index":420,"title":{},"content":{"26":{}},"tags":{}}],["increment",{"_index":692,"title":{},"content":{"15":{}},"tags":{}}],["indent",{"_index":1238,"title":{},"content":{"161":{}},"tags":{}}],["inet",{"_index":797,"title":{},"content":{"20":{}},"tags":{}}],["info",{"_index":1039,"title":{},"content":{"76":{},"78":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"137":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["inform",{"_index":284,"title":{},"content":{"26":{},"29":{},"186":{},"191":{},"192":{},"196":{}},"tags":{}}],["ingress",{"_index":798,"title":{},"content":{"20":{}},"tags":{}}],["inherit",{"_index":1166,"title":{"76":{},"83":{},"88":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"content":{},"tags":{}}],["initi",{"_index":674,"title":{},"content":{"14":{}},"tags":{}}],["inotifi",{"_index":681,"title":{},"content":{"14":{}},"tags":{}}],["inotify(7",{"_index":258,"title":{},"content":{"42":{}},"tags":{}}],["input",{"_index":786,"title":{},"content":{"20":{},"118":{},"215":{}},"tags":{}}],["insecure_skip_verifi",{"_index":542,"title":{},"content":{"26":{}},"tags":{}}],["insid",{"_index":795,"title":{},"content":{"20":{}},"tags":{}}],["instal",{"_index":8,"title":{"53":{}},"content":{"5":{},"14":{},"26":{},"51":{},"53":{},"54":{},"56":{},"57":{},"58":{},"59":{},"60":{},"62":{},"63":{},"105":{}},"tags":{}}],["instanc",{"_index":579,"title":{},"content":{"26":{},"65":{}},"tags":{}}],["instead",{"_index":464,"title":{},"content":{"26":{},"65":{}},"tags":{}}],["institut",{"_index":58,"title":{},"content":{"6":{},"9":{},"10":{}},"tags":{}}],["int",{"_index":1154,"title":{},"content":{"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"125":{},"126":{},"130":{},"134":{},"140":{},"144":{},"147":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["integr",{"_index":762,"title":{},"content":{"34":{}},"tags":{}}],["interact",{"_index":513,"title":{},"content":{"15":{},"26":{},"44":{},"91":{}},"tags":{}}],["interfac",{"_index":11,"title":{"32":{}},"content":{"5":{},"14":{},"20":{},"24":{},"26":{},"30":{},"32":{},"43":{},"49":{},"51":{},"65":{},"68":{},"72":{},"84":{},"90":{},"91":{},"93":{},"103":{},"118":{},"122":{},"123":{},"125":{},"127":{},"135":{},"141":{},"145":{},"146":{},"149":{},"154":{},"159":{},"160":{},"163":{},"167":{},"171":{},"172":{},"173":{},"178":{},"181":{},"186":{},"191":{},"192":{},"196":{},"197":{},"213":{},"224":{}},"tags":{}}],["interface'",{"_index":446,"title":{},"content":{"26":{},"173":{}},"tags":{}}],["interface_filt",{"_index":559,"title":{},"content":{"26":{}},"tags":{}}],["intern",{"_index":1240,"title":{},"content":{"178":{}},"tags":{}}],["interrupt",{"_index":188,"title":{},"content":{"39":{}},"tags":{}}],["interv",{"_index":276,"title":{},"content":{"26":{},"125":{}},"tags":{}}],["intf",{"_index":929,"title":{},"content":{"65":{}},"tags":{}}],["investig",{"_index":903,"title":{},"content":{"65":{}},"tags":{}}],["invit",{"_index":1158,"title":{"146":{}},"content":{"93":{},"146":{},"147":{}},"tags":{}}],["invoc",{"_index":459,"title":{},"content":{"26":{},"67":{},"207":{},"208":{},"209":{}},"tags":{}}],["invok",{"_index":607,"title":{},"content":{"26":{},"67":{},"95":{}},"tags":{}}],["io",{"_index":817,"title":{},"content":{"24":{}},"tags":{}}],["io.clos",{"_index":883,"title":{},"content":{"32":{}},"tags":{}}],["ip",{"_index":380,"title":{"173":{}},"content":{"14":{},"26":{},"43":{},"51":{},"118":{},"172":{},"192":{}},"tags":{}}],["ip6",{"_index":1013,"title":{},"content":{"47":{}},"tags":{}}],["iptabl",{"_index":809,"title":{"21":{}},"content":{"21":{}},"tags":{}}],["ipv4",{"_index":426,"title":{},"content":{"26":{},"93":{},"117":{},"118":{},"173":{}},"tags":{}}],["ipv4link−loc",{"_index":989,"title":{},"content":{"174":{}},"tags":{}}],["ipv6",{"_index":427,"title":{},"content":{"26":{},"47":{},"93":{},"117":{},"118":{},"173":{}},"tags":{}}],["ipv6link−loc",{"_index":988,"title":{},"content":{"174":{}},"tags":{}}],["irrespect",{"_index":894,"title":{},"content":{"32":{}},"tags":{}}],["issu",{"_index":902,"title":{},"content":{"65":{},"137":{}},"tags":{}}],["it'",{"_index":1067,"title":{},"content":{"56":{}},"tags":{}}],["itself",{"_index":1208,"title":{},"content":{"137":{}},"tags":{}}],["jason",{"_index":122,"title":{},"content":{"11":{}},"tags":{}}],["join",{"_index":66,"title":{"7":{}},"content":{"7":{}},"tags":{}}],["json",{"_index":616,"title":{},"content":{"26":{},"67":{},"133":{},"161":{},"222":{}},"tags":{}}],["k8s:///path/to/your/kubeconfig.yaml?namespace=default",{"_index":287,"title":{},"content":{"26":{}},"tags":{}}],["keep",{"_index":395,"title":{},"content":{"26":{},"49":{},"51":{}},"tags":{}}],["keepal",{"_index":408,"title":{},"content":{"26":{},"192":{}},"tags":{}}],["keepalive_interv",{"_index":604,"title":{},"content":{"26":{}},"tags":{}}],["kernel",{"_index":318,"title":{"17":{},"19":{},"20":{}},"content":{"14":{},"20":{},"23":{},"24":{},"26":{},"49":{},"51":{},"91":{},"125":{},"178":{}},"tags":{}}],["key",{"_index":23,"title":{"78":{}},"content":{"5":{},"14":{},"26":{},"27":{},"28":{},"29":{},"31":{},"43":{},"46":{},"93":{},"109":{},"113":{},"117":{},"118":{},"160":{},"173":{},"174":{},"175":{},"186":{},"187":{},"192":{},"202":{},"214":{},"215":{},"216":{}},"tags":{}}],["kilo",{"_index":679,"title":{},"content":{"14":{}},"tags":{}}],["kloqdlkgoqaukwcttd+ov3pfimofadkkvtdplxsulwm",{"_index":312,"title":{},"content":{"26":{}},"tags":{}}],["known",{"_index":875,"title":{},"content":{"31":{},"174":{}},"tags":{}}],["kp",{"_index":887,"title":{},"content":{"32":{}},"tags":{}}],["kubernet",{"_index":649,"title":{},"content":{"14":{},"30":{}},"tags":{}}],["kʊˈniːk",{"_index":77,"title":{},"content":{"8":{}},"tags":{}}],["l",{"_index":1145,"title":{},"content":{"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"139":{},"140":{},"144":{},"147":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"211":{},"212":{},"218":{},"223":{}},"tags":{}}],["l2",{"_index":772,"title":{},"content":{"34":{}},"tags":{}}],["l3",{"_index":773,"title":{},"content":{"34":{}},"tags":{}}],["land",{"_index":979,"title":{},"content":{"91":{},"174":{}},"tags":{}}],["last",{"_index":262,"title":{},"content":{"42":{}},"tags":{}}],["latenc",{"_index":532,"title":{},"content":{"26":{}},"tags":{}}],["latest",{"_index":1066,"title":{},"content":{"56":{},"62":{},"151":{},"156":{},"192":{}},"tags":{}}],["latin",{"_index":79,"title":{},"content":{"8":{}},"tags":{}}],["layer",{"_index":365,"title":{},"content":{"26":{}},"tags":{}}],["legaci",{"_index":811,"title":{},"content":{"21":{}},"tags":{}}],["less",{"_index":601,"title":{},"content":{"26":{}},"tags":{}}],["let",{"_index":828,"title":{},"content":{"27":{}},"tags":{}}],["level",{"_index":629,"title":{},"content":{"26":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["licens",{"_index":104,"title":{"9":{}},"content":{"9":{}},"tags":{}}],["limit",{"_index":543,"title":{},"content":{"26":{}},"tags":{}}],["line",{"_index":52,"title":{"36":{},"71":{}},"content":{"5":{},"34":{},"36":{},"41":{},"47":{},"71":{},"192":{}},"tags":{}}],["link",{"_index":685,"title":{"173":{}},"content":{"14":{},"34":{},"43":{},"51":{},"93":{},"117":{},"118":{},"172":{},"173":{}},"tags":{}}],["linux",{"_index":483,"title":{},"content":{"19":{},"26":{},"55":{},"86":{},"105":{}},"tags":{}}],["linux'",{"_index":767,"title":{},"content":{"34":{}},"tags":{}}],["list",{"_index":179,"title":{},"content":{"20":{},"26":{},"38":{},"43":{},"51":{},"65":{},"66":{},"137":{},"192":{}},"tags":{}}],["listen",{"_index":326,"title":{},"content":{"20":{},"26":{},"139":{},"147":{},"175":{},"192":{},"211":{}},"tags":{}}],["listen_port",{"_index":336,"title":{},"content":{"26":{}},"tags":{}}],["listen_port_rang",{"_index":329,"title":{},"content":{"26":{}},"tags":{}}],["lite",{"_index":560,"title":{},"content":{"26":{}},"tags":{}}],["live",{"_index":1079,"title":{},"content":{"56":{},"137":{}},"tags":{}}],["load",{"_index":1173,"title":{},"content":{"74":{},"86":{},"95":{},"105":{}},"tags":{}}],["local",{"_index":248,"title":{"173":{}},"content":{"18":{},"20":{},"23":{},"26":{},"27":{},"41":{},"42":{},"43":{},"46":{},"47":{},"51":{},"56":{},"93":{},"117":{},"118":{},"146":{},"172":{},"173":{},"174":{}},"tags":{}}],["localhost",{"_index":1009,"title":{},"content":{"47":{}},"tags":{}}],["localnet",{"_index":1016,"title":{},"content":{"47":{}},"tags":{}}],["locat",{"_index":93,"title":{},"content":{"8":{},"26":{}},"tags":{}}],["log",{"_index":50,"title":{},"content":{"5":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["logger",{"_index":1206,"title":{},"content":{"133":{}},"tags":{}}],["logo",{"_index":120,"title":{},"content":{"11":{}},"tags":{}}],["long",{"_index":1218,"title":{},"content":{"137":{}},"tags":{}}],["look",{"_index":143,"title":{},"content":{"37":{},"39":{},"40":{},"64":{},"65":{},"71":{}},"tags":{}}],["lookup",{"_index":197,"title":{},"content":{"40":{}},"tags":{}}],["loopback",{"_index":1014,"title":{},"content":{"47":{}},"tags":{}}],["loss",{"_index":921,"title":{},"content":{"65":{}},"tags":{}}],["lower",{"_index":752,"title":{},"content":{"34":{}},"tags":{}}],["m",{"_index":454,"title":{},"content":{"26":{},"120":{}},"tags":{}}],["mach",{"_index":791,"title":{},"content":{"20":{}},"tags":{}}],["maco",{"_index":1057,"title":{"60":{}},"content":{"55":{},"86":{},"105":{}},"tags":{}}],["maintain",{"_index":749,"title":{},"content":{"34":{}},"tags":{}}],["make",{"_index":19,"title":{},"content":{"5":{},"34":{},"55":{}},"tags":{}}],["manag",{"_index":292,"title":{"57":{}},"content":{"26":{},"33":{},"47":{},"57":{},"65":{},"84":{},"90":{},"91":{},"93":{},"99":{},"103":{},"105":{},"112":{},"116":{},"122":{},"127":{},"131":{},"135":{},"141":{},"145":{},"149":{},"154":{},"159":{},"163":{},"167":{},"171":{},"181":{},"186":{},"213":{},"224":{}},"tags":{}}],["mani",{"_index":941,"title":{},"content":{"43":{}},"tags":{}}],["manpag",{"_index":157,"title":{},"content":{"36":{}},"tags":{}}],["manual",{"_index":438,"title":{},"content":{"26":{},"54":{}},"tags":{}}],["map",{"_index":399,"title":{},"content":{"26":{}},"tags":{}}],["mark",{"_index":1006,"title":{},"content":{"47":{}},"tags":{}}],["mask",{"_index":419,"title":{},"content":{"26":{},"120":{}},"tags":{}}],["match",{"_index":425,"title":{},"content":{"19":{},"20":{},"26":{}},"tags":{}}],["mathrm{0xffff",{"_index":980,"title":{},"content":{"174":{}},"tags":{}}],["mathrm{169.254.}~||~h_{fold}~\\}/16",{"_index":986,"title":{},"content":{"174":{}},"tags":{}}],["mathrm{fe80:}~||~h",{"_index":984,"title":{},"content":{"174":{}},"tags":{}}],["mathrm{ipv4}_{link",{"_index":985,"title":{},"content":{"174":{}},"tags":{}}],["mathrm{ipv6}_{link",{"_index":983,"title":{},"content":{"174":{}},"tags":{}}],["max",{"_index":332,"title":{},"content":{"26":{}},"tags":{}}],["max_binding_request",{"_index":570,"title":{},"content":{"26":{}},"tags":{}}],["maximum",{"_index":430,"title":{},"content":{"26":{}},"tags":{}}],["mcastprefix",{"_index":1018,"title":{},"content":{"47":{}},"tags":{}}],["mdn",{"_index":562,"title":{},"content":{"26":{}},"tags":{}}],["mean",{"_index":82,"title":{},"content":{"8":{}},"tags":{}}],["meant",{"_index":1267,"title":{},"content":{"192":{}},"tags":{}}],["merg",{"_index":242,"title":{},"content":{"34":{},"41":{}},"tags":{}}],["mermaid",{"_index":935,"title":{},"content":{"65":{}},"tags":{}}],["mesh",{"_index":1132,"title":{},"content":{"63":{},"91":{}},"tags":{}}],["messag",{"_index":283,"title":{},"content":{"14":{},"26":{},"28":{},"32":{}},"tags":{}}],["messagehandl",{"_index":881,"title":{},"content":{"32":{}},"tags":{}}],["method",{"_index":246,"title":{},"content":{"26":{},"41":{},"67":{}},"tags":{}}],["mimic",{"_index":1251,"title":{},"content":{"183":{}},"tags":{}}],["min",{"_index":330,"title":{},"content":{"26":{}},"tags":{}}],["minim",{"_index":669,"title":{},"content":{"14":{}},"tags":{}}],["minimum",{"_index":586,"title":{},"content":{"26":{}},"tags":{}}],["miss",{"_index":951,"title":{"175":{}},"content":{"43":{}},"tags":{}}],["mix",{"_index":368,"title":{},"content":{"26":{}},"tags":{}}],["model",{"_index":714,"title":{},"content":{"15":{}},"tags":{}}],["modifi",{"_index":263,"title":{},"content":{"26":{},"42":{}},"tags":{}}],["modul",{"_index":319,"title":{"17":{}},"content":{"23":{},"26":{},"43":{}},"tags":{}}],["modules/packag",{"_index":943,"title":{},"content":{"43":{}},"tags":{}}],["monitor",{"_index":274,"title":{"132":{}},"content":{"14":{},"26":{},"42":{},"65":{},"93":{},"101":{},"111":{},"115":{},"130":{},"132":{},"133":{},"143":{},"147":{},"161":{},"165":{},"169":{},"179":{},"193":{},"198":{}},"tags":{}}],["more",{"_index":159,"title":{},"content":{"28":{},"37":{},"40":{},"63":{},"125":{}},"tags":{}}],["mostli",{"_index":297,"title":{},"content":{"26":{}},"tags":{}}],["move",{"_index":939,"title":{},"content":{"55":{},"63":{},"65":{}},"tags":{}}],["msg",{"_index":889,"title":{},"content":{"32":{}},"tags":{}}],["mtu",{"_index":433,"title":{},"content":{"26":{},"172":{},"175":{}},"tags":{}}],["multi",{"_index":910,"title":{},"content":{"65":{}},"tags":{}}],["multicast",{"_index":489,"title":{},"content":{"26":{},"31":{}},"tags":{}}],["multipl",{"_index":232,"title":{},"content":{"16":{},"26":{},"29":{},"40":{},"51":{}},"tags":{}}],["mux",{"_index":782,"title":{},"content":{"19":{}},"tags":{}}],["mv",{"_index":1049,"title":{},"content":{"55":{}},"tags":{}}],["mysecret",{"_index":639,"title":{},"content":{"26":{}},"tags":{}}],["mysecretpass",{"_index":1189,"title":{},"content":{"124":{}},"tags":{}}],["name",{"_index":75,"title":{"8":{}},"content":{"8":{},"26":{},"38":{},"64":{},"123":{},"125":{},"160":{},"192":{},"197":{}},"tags":{}}],["name=riasc",{"_index":1101,"title":{},"content":{"59":{}},"tags":{}}],["namespac",{"_index":769,"title":{},"content":{"34":{}},"tags":{}}],["nat",{"_index":398,"title":{},"content":{"14":{},"15":{},"21":{},"26":{},"34":{}},"tags":{}}],["nat_1to1_ip",{"_index":583,"title":{},"content":{"26":{}},"tags":{}}],["nebula",{"_index":140,"title":{},"content":{"64":{}},"tags":{}}],["need",{"_index":186,"title":{},"content":{"26":{},"39":{},"40":{},"74":{},"86":{},"105":{}},"tags":{}}],["nest",{"_index":173,"title":{},"content":{"38":{}},"tags":{}}],["net",{"_index":768,"title":{},"content":{"34":{}},"tags":{}}],["netbird",{"_index":136,"title":{},"content":{"64":{}},"tags":{}}],["netfilt",{"_index":342,"title":{},"content":{"20":{},"26":{}},"tags":{}}],["netlink",{"_index":488,"title":{},"content":{"14":{},"26":{}},"tags":{}}],["netmak",{"_index":141,"title":{},"content":{"64":{}},"tags":{}}],["network",{"_index":92,"title":{},"content":{"8":{},"15":{},"24":{},"26":{},"33":{},"34":{},"51":{},"63":{},"84":{},"90":{},"91":{},"103":{},"122":{},"125":{},"127":{},"135":{},"141":{},"145":{},"149":{},"154":{},"159":{},"163":{},"167":{},"171":{},"174":{},"181":{},"186":{},"213":{},"224":{}},"tags":{}}],["network_typ",{"_index":545,"title":{},"content":{"26":{}},"tags":{}}],["networkd",{"_index":678,"title":{},"content":{"14":{}},"tags":{}}],["networkmanag",{"_index":14,"title":{},"content":{"5":{},"14":{}},"tags":{}}],["never",{"_index":595,"title":{},"content":{"26":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["new",{"_index":496,"title":{},"content":{"14":{},"18":{},"23":{},"26":{},"27":{},"74":{},"86":{},"93":{},"95":{},"105":{},"146":{},"175":{}},"tags":{}}],["newli",{"_index":1200,"title":{},"content":{"125":{}},"tags":{}}],["newlin",{"_index":1268,"title":{},"content":{"192":{}},"tags":{}}],["next",{"_index":476,"title":{},"content":{"26":{},"51":{},"175":{}},"tags":{}}],["nft",{"_index":785,"title":{},"content":{"20":{}},"tags":{}}],["nftabl",{"_index":783,"title":{"20":{}},"content":{"20":{},"21":{}},"tags":{}}],["node",{"_index":502,"title":{},"content":{"26":{}},"tags":{}}],["nomin",{"_index":567,"title":{},"content":{"26":{}},"tags":{}}],["non",{"_index":447,"title":{},"content":{"20":{},"26":{}},"tags":{}}],["note",{"_index":178,"title":{},"content":{"24":{},"27":{},"38":{},"40":{},"41":{},"42":{},"55":{},"137":{}},"tags":{}}],["noth",{"_index":1250,"title":{},"content":{"222":{}},"tags":{}}],["notrack",{"_index":804,"title":{},"content":{"20":{}},"tags":{}}],["noun",{"_index":80,"title":{},"content":{"8":{}},"tags":{}}],["number",{"_index":269,"title":{},"content":{"26":{},"42":{}},"tags":{}}],["o",{"_index":1073,"title":{},"content":{"56":{},"152":{},"157":{}},"tags":{}}],["o_",{"_index":1139,"title":{},"content":{"91":{}},"tags":{}}],["object",{"_index":617,"title":{"14":{}},"content":{"26":{},"67":{}},"tags":{}}],["obtain",{"_index":207,"title":{},"content":{"40":{}},"tags":{}}],["offer",{"_index":654,"title":{},"content":{"14":{}},"tags":{}}],["offer/answ",{"_index":705,"title":{},"content":{"15":{}},"tags":{}}],["omit",{"_index":363,"title":{},"content":{"26":{}},"tags":{}}],["on",{"_index":202,"title":{},"content":{"28":{},"40":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"125":{},"126":{},"130":{},"133":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"161":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"192":{},"194":{},"199":{},"204":{},"212":{},"218":{},"222":{},"223":{}},"tags":{}}],["onc",{"_index":48,"title":{},"content":{"5":{},"63":{},"74":{},"86":{},"105":{},"216":{}},"tags":{}}],["onsignalingmessage(*crypto.publickeypair",{"_index":882,"title":{},"content":{"32":{}},"tags":{}}],["ontario",{"_index":529,"title":{},"content":{"26":{}},"tags":{}}],["open",{"_index":776,"title":{},"content":{"18":{}},"tags":{}}],["openbsd",{"_index":924,"title":{},"content":{"65":{}},"tags":{}}],["openrelay",{"_index":528,"title":{},"content":{"26":{}},"tags":{}}],["oper",{"_index":1082,"title":{},"content":{"57":{}},"tags":{}}],["option",{"_index":152,"title":{"75":{},"76":{},"82":{},"83":{},"87":{},"88":{},"92":{},"96":{},"97":{},"101":{},"102":{},"106":{},"107":{},"110":{},"111":{},"114":{},"115":{},"120":{},"121":{},"125":{},"126":{},"129":{},"130":{},"133":{},"134":{},"139":{},"140":{},"143":{},"144":{},"147":{},"148":{},"152":{},"153":{},"157":{},"158":{},"161":{},"162":{},"165":{},"166":{},"169":{},"170":{},"179":{},"180":{},"184":{},"185":{},"188":{},"189":{},"193":{},"194":{},"198":{},"199":{},"203":{},"204":{},"211":{},"212":{},"217":{},"218":{},"222":{},"223":{}},"content":{"26":{},"36":{},"41":{},"46":{},"93":{},"192":{},"220":{}},"tags":{}}],["order",{"_index":97,"title":{},"content":{"8":{},"26":{},"31":{},"41":{},"192":{}},"tags":{}}],["origin",{"_index":792,"title":{},"content":{"20":{}},"tags":{}}],["os",{"_index":1045,"title":{},"content":{"54":{},"55":{}},"tags":{}}],["os'",{"_index":1172,"title":{},"content":{"105":{}},"tags":{}}],["os=linux",{"_index":1242,"title":{},"content":{"221":{}},"tags":{}}],["other",{"_index":234,"title":{},"content":{"40":{}},"tags":{}}],["otherwis",{"_index":89,"title":{},"content":{"8":{},"192":{}},"tags":{}}],["ouput",{"_index":1239,"title":{},"content":{"161":{}},"tags":{}}],["out",{"_index":356,"title":{},"content":{"26":{},"31":{},"95":{},"118":{}},"tags":{}}],["outgo",{"_index":340,"title":{},"content":{"26":{}},"tags":{}}],["output",{"_index":787,"title":{},"content":{"20":{},"76":{},"83":{},"88":{},"92":{},"95":{},"97":{},"102":{},"107":{},"111":{},"115":{},"118":{},"121":{},"126":{},"130":{},"133":{},"134":{},"140":{},"144":{},"148":{},"152":{},"153":{},"157":{},"158":{},"161":{},"162":{},"166":{},"170":{},"180":{},"185":{},"186":{},"187":{},"189":{},"194":{},"199":{},"202":{},"204":{},"212":{},"214":{},"215":{},"218":{},"222":{},"223":{}},"tags":{}}],["over",{"_index":565,"title":{},"content":{"19":{},"26":{}},"tags":{}}],["overlay",{"_index":630,"title":{},"content":{"26":{}},"tags":{}}],["overrid",{"_index":439,"title":{},"content":{"26":{}},"tags":{}}],["overview",{"_index":156,"title":{},"content":{"36":{}},"tags":{}}],["overwrit",{"_index":627,"title":{},"content":{"26":{}},"tags":{}}],["overwritten",{"_index":302,"title":{},"content":{"26":{}},"tags":{}}],["p",{"_index":1193,"title":{},"content":{"125":{}},"tags":{}}],["p2p",{"_index":125,"title":{"64":{}},"content":{"91":{}},"tags":{}}],["pa",{"_index":837,"title":{},"content":{"27":{}},"tags":{}}],["pac",{"_index":700,"title":{},"content":{"15":{}},"tags":{}}],["packag",{"_index":727,"title":{"57":{}},"content":{"33":{},"57":{},"91":{},"105":{},"183":{}},"tags":{}}],["packer",{"_index":1118,"title":{},"content":{"61":{}},"tags":{}}],["packet",{"_index":341,"title":{},"content":{"26":{},"65":{}},"tags":{}}],["page",{"_index":146,"title":{},"content":{"35":{},"71":{},"78":{}},"tags":{}}],["pair",{"_index":566,"title":{},"content":{"26":{},"51":{},"65":{},"68":{}},"tags":{}}],["panic",{"_index":1150,"title":{},"content":{"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["pap_apa",{"_index":830,"title":{},"content":{"27":{}},"tags":{}}],["paramet",{"_index":205,"title":{},"content":{"26":{},"40":{},"137":{}},"tags":{}}],["parent",{"_index":1167,"title":{"76":{},"83":{},"88":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"content":{},"tags":{}}],["parsed/produc",{"_index":780,"title":{},"content":{"19":{}},"tags":{}}],["part",{"_index":196,"title":{},"content":{"26":{},"40":{},"174":{}},"tags":{}}],["particip",{"_index":845,"title":{},"content":{"27":{}},"tags":{}}],["particular",{"_index":458,"title":{},"content":{"26":{}},"tags":{}}],["pass",{"_index":153,"title":{},"content":{"20":{},"24":{},"26":{},"36":{},"38":{},"67":{}},"tags":{}}],["passphras",{"_index":375,"title":{},"content":{"26":{},"68":{},"125":{},"209":{}},"tags":{}}],["password",{"_index":228,"title":{},"content":{"26":{},"40":{},"125":{}},"tags":{}}],["password=pass1",{"_index":230,"title":{},"content":{"40":{}},"tags":{}}],["patch",{"_index":686,"title":{},"content":{"14":{}},"tags":{}}],["path",{"_index":290,"title":{},"content":{"26":{},"76":{},"83":{},"88":{},"92":{},"97":{},"102":{},"107":{},"111":{},"115":{},"121":{},"125":{},"126":{},"130":{},"134":{},"140":{},"144":{},"148":{},"153":{},"158":{},"162":{},"166":{},"170":{},"180":{},"185":{},"189":{},"194":{},"199":{},"204":{},"212":{},"218":{},"223":{}},"tags":{}}],["patient",{"_index":698,"title":{},"content":{"15":{}},"tags":{}}],["pattern",{"_index":555,"title":{},"content":{"26":{}},"tags":{}}],["pb",{"_index":843,"title":{},"content":{"27":{}},"tags":{}}],["pb.backendtyp",{"_index":900,"title":{},"content":{"32":{}},"tags":{}}],["pb.signalingmessag",{"_index":880,"title":{},"content":{"32":{}},"tags":{}}],["pbp_bpb",{"_index":831,"title":{},"content":{"27":{}},"tags":{}}],["pdisc",{"_index":954,"title":{},"content":{"43":{},"69":{}},"tags":{}}],["peer",{"_index":29,"title":{"68":{},"209":{}},"content":{"5":{},"14":{},"18":{},"19":{},"23":{},"26":{},"27":{},"31":{},"32":{},"43":{},"44":{},"46":{},"51":{},"64":{},"65":{},"68":{},"84":{},"90":{},"91":{},"93":{},"103":{},"122":{},"125":{},"127":{},"135":{},"141":{},"145":{},"146":{},"149":{},"154":{},"159":{},"160":{},"163":{},"167":{},"171":{},"173":{},"181":{},"186":{},"192":{},"213":{},"224":{}},"tags":{}}],["peer/interfac",{"_index":966,"title":{},"content":{"174":{}},"tags":{}}],["pend",{"_index":687,"title":{},"content":{"14":{}},"tags":{}}],["per",{"_index":918,"title":{},"content":{"65":{},"192":{}},"tags":{}}],["percentag",{"_index":753,"title":{},"content":{"34":{}},"tags":{}}],["perform",{"_index":387,"title":{},"content":{"14":{},"26":{},"55":{},"67":{},"68":{},"174":{}},"tags":{}}],["period",{"_index":260,"title":{},"content":{"26":{},"42":{},"125":{}},"tags":{}}],["persist",{"_index":162,"title":{},"content":{"26":{},"37":{},"192":{}},"tags":{}}],["persistent_keepal",{"_index":413,"title":{},"content":{"26":{}},"tags":{}}],["phase",{"_index":590,"title":{},"content":{"26":{}},"tags":{}}],["ping",{"_index":933,"title":{},"content":{"65":{}},"tags":{}}],["pion",{"_index":576,"title":{},"content":{"26":{},"33":{}},"tags":{}}],["pion'",{"_index":819,"title":{},"content":{"24":{}},"tags":{}}],["pion/ic",{"_index":1141,"title":{},"content":{"91":{}},"tags":{}}],["pipelin",{"_index":742,"title":{},"content":{"33":{}},"tags":{}}],["pk",{"_index":834,"title":{},"content":{"27":{}},"tags":{}}],["pk(p_b)pk(pa​)https://cunicu.li/blogweekly0.5https://cunicu.li/blog/archiveweekly0.5https://cunicu.li/blog/tagsweekly0.5https://cunicu.li/blog/tags/helloweekly0.5https://cunicu.li/blog/welcomeweekly0.5https://cunicu.li/markdown-pageweekly0.5https://cunicu.li/docsweekly0.5https://cunicu.li/docs/comparisonweekly0.5https://cunicu.li/docs/configurationweekly0.5https://cunicu.li/docs/designweekly0.5https://cunicu.li/docs/developmentweekly0.5https://cunicu.li/docs/development/proxyingweekly0.5https://cunicu.li/docs/development/signalingweekly0.5https://cunicu.li/docs/development/todoweekly0.5https://cunicu.li/docs/features/autocfgweekly0.5https://cunicu.li/docs/features/cfgsyncweekly0.5https://cunicu.li/docs/features/epdiscweekly0.5https://cunicu.li/docs/features/hooksweekly0.5https://cunicu.li/docs/features/hsyncweekly0.5https://cunicu.li/docs/features/pdiscweekly0.5https://cunicu.li/docs/features/pskeweekly0.5https://cunicu.li/docs/features/rtsyncweekly0.5https://cunicu.li/docs/installationweekly0.5https://cunicu.li/docs/usageweekly0.5https://cunicu.li/docs/usage/manweekly0.5https://cunicu.li/docs/usage/man/addressesweekly0.5https://cunicu.li/docs/usage/man/completionweekly0.5https://cunicu.li/docs/usage/man/completion/bashweekly0.5https://cunicu.li/docs/usage/man/completion/fishweekly0.5https://cunicu.li/docs/usage/man/completion/powershellweekly0.5https://cunicu.li/docs/usage/man/completion/zshweekly0.5https://cunicu.li/docs/usage/man/configweekly0.5https://cunicu.li/docs/usage/man/config/getweekly0.5https://cunicu.li/docs/usage/man/config/setweekly0.5https://cunicu.li/docs/usage/man/daemonweekly0.5https://cunicu.li/docs/usage/man/monitorweekly0.5https://cunicu.li/docs/usage/man/restartweekly0.5https://cunicu.li/docs/usage/man/self-updateweekly0.5https://cunicu.li/docs/usage/man/selfupdateweekly0.5https://cunicu.li/docs/usage/man/signalweekly0.5https://cunicu.li/docs/usage/man/statusweekly0.5https://cunicu.li/docs/usage/man/stopweekly0.5https://cunicu.li/docs/usage/man/syncweekly0.5https://cunicu.li/docs/usage/man/versionweekly0.5https://cunicu.li/docs/usage/man/wgweekly0.5https://cunicu.li/docs/usage/man/wg/genkeyweekly0.5https://cunicu.li/docs/usage/man/wg/genpskweekly0.5https://cunicu.li/docs/usage/man/wg/pubkeyweekly0.5https://cunicu.li/docs/usage/man/wg/showweekly0.5https://cunicu.li/docs/usage/man/wg/showconfweekly0.5https://cunicu.li/docs/usage/upgradeweekly0.5https://cunicu.li/docs/usage/usecasesweekly0.5https://cunicu.li/weekly0.5 \ No newline at end of file +https://cunicu.li/blogweekly0.5https://cunicu.li/blog/archiveweekly0.5https://cunicu.li/blog/tagsweekly0.5https://cunicu.li/blog/tags/helloweekly0.5https://cunicu.li/blog/welcomeweekly0.5https://cunicu.li/markdown-pageweekly0.5https://cunicu.li/docsweekly0.5https://cunicu.li/docs/comparisonweekly0.5https://cunicu.li/docs/configweekly0.5https://cunicu.li/docs/config-referenceweekly0.5https://cunicu.li/docs/designweekly0.5https://cunicu.li/docs/developmentweekly0.5https://cunicu.li/docs/development/proxyingweekly0.5https://cunicu.li/docs/development/signalingweekly0.5https://cunicu.li/docs/development/todoweekly0.5https://cunicu.li/docs/featuresweekly0.5https://cunicu.li/docs/features/autocfgweekly0.5https://cunicu.li/docs/features/cfgsyncweekly0.5https://cunicu.li/docs/features/epdiscweekly0.5https://cunicu.li/docs/features/hooksweekly0.5https://cunicu.li/docs/features/hsyncweekly0.5https://cunicu.li/docs/features/pdiscweekly0.5https://cunicu.li/docs/features/pskeweekly0.5https://cunicu.li/docs/features/rtsyncweekly0.5https://cunicu.li/docs/installweekly0.5https://cunicu.li/docs/usageweekly0.5https://cunicu.li/docs/usage/manweekly0.5https://cunicu.li/docs/usage/man/addressesweekly0.5https://cunicu.li/docs/usage/man/completionweekly0.5https://cunicu.li/docs/usage/man/completion/bashweekly0.5https://cunicu.li/docs/usage/man/completion/fishweekly0.5https://cunicu.li/docs/usage/man/completion/powershellweekly0.5https://cunicu.li/docs/usage/man/completion/zshweekly0.5https://cunicu.li/docs/usage/man/configweekly0.5https://cunicu.li/docs/usage/man/config/getweekly0.5https://cunicu.li/docs/usage/man/config/reloadweekly0.5https://cunicu.li/docs/usage/man/config/setweekly0.5https://cunicu.li/docs/usage/man/daemonweekly0.5https://cunicu.li/docs/usage/man/inviteweekly0.5https://cunicu.li/docs/usage/man/monitorweekly0.5https://cunicu.li/docs/usage/man/relayweekly0.5https://cunicu.li/docs/usage/man/reloadweekly0.5https://cunicu.li/docs/usage/man/restartweekly0.5https://cunicu.li/docs/usage/man/self-updateweekly0.5https://cunicu.li/docs/usage/man/selfupdateweekly0.5https://cunicu.li/docs/usage/man/signalweekly0.5https://cunicu.li/docs/usage/man/statusweekly0.5https://cunicu.li/docs/usage/man/stopweekly0.5https://cunicu.li/docs/usage/man/syncweekly0.5https://cunicu.li/docs/usage/man/versionweekly0.5https://cunicu.li/docs/usage/man/wgweekly0.5https://cunicu.li/docs/usage/man/wg/genkeyweekly0.5https://cunicu.li/docs/usage/man/wg/genpskweekly0.5https://cunicu.li/docs/usage/man/wg/pubkeyweekly0.5https://cunicu.li/docs/usage/man/wg/showweekly0.5https://cunicu.li/docs/usage/man/wg/showconfweekly0.5https://cunicu.li/docs/usage/upgradeweekly0.5https://cunicu.li/docs/usage/usecasesweekly0.5https://cunicu.li/weekly0.5 \ No newline at end of file