diff --git a/404.html b/404.html index a825a5c..7be67e0 100644 --- a/404.html +++ b/404.html @@ -3,16 +3,19 @@ -Page Not Found | Cogment +Page Not Found | Cogment - - - + + + + + +
-
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.03d4edc4.css b/assets/css/styles.03d4edc4.css deleted file mode 100644 index 4cdd7d5..0000000 --- a/assets/css/styles.03d4edc4.css +++ /dev/null @@ -1 +0,0 @@ -.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)}.fa-beat,.fa-beat-fade,.fa-fade,.fa-flip{animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-delay:var(--fa-animation-delay,0)}.fa-beat,.fa-beat-fade,.fa-fade,.fa-flip,.fa-spin{animation-delay:var(--fa-animation-delay,0)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.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:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--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 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--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:#0000;--ifm-table-stripe-background:#00000008;--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}.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:#0000}*{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,.tabItem_LNqP{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 #0000001a;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,.tabList__CuJ{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,.navbar,.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:#3578e526;--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:#ebedf026;--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:#00a40026;--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:#54c7ec26;--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:#ffba0026;--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:#fa383e26;--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{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,.searchBarContainer_NW3z.searchIndexLoading_EJ1f .searchBarLoadingRing_YnHq{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:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__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:#0000;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}.content_knG7 a,.hitFooter_E9YW a,.suggestion_fB_2.cursor_eG29 mark{text-decoration:underline}.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}.fa-layers,.svg-inline--fa{vertical-align:-.125em;height:1em}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}.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;pointer-events:none;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 #0000;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,.searchResultItem_U687>h2,.tabItem_Ymn6>:last-child{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{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,.fa-rotate-90,.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}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;bottom:0;left:0;top:0;visibility:hidden}.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{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);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)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.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)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.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:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--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);position:fixed;transform:translate3d(-100%,0,0);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:#0009;position:fixed;right:0;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{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}.benefit_pXnC h4,.content_knG7,.fa-fw,.fa-layers,.fa-li,.hitFooter_E9YW,.pills--block .pills__item,.section_ccoD h3{text-align:center}.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)}.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}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid #0000;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)}.fa-duotone.fa-inverse,.fa-inverse,.fa-layers-counter,.fad.fa-inverse{color:var(--fa-inverse,#fff)}.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:#ffffff0d;--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:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--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}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-font-family-base:"Object Sans Regular";--ifm-color-primary:#5217b8;--ifm-color-primary-dark:#46149c;--ifm-color-primary-darker:#391081;--ifm-color-primary-darkest:#290b5c;--ifm-color-primary-light:#621cdd;--ifm-color-primary-lighter:#6e29e4;--ifm-color-primary-lightest:#874ee9;--ifm-color-secondary:#ffb300;--ifm-color-secondary-dark:#e6a100;--ifm-color-secondary-darker:#d99800;--ifm-color-secondary-darkest:#b37d00;--ifm-color-secondary-light:#ffbb1a;--ifm-color-secondary-lighter:#ffbe26;--ifm-color-secondary-lightest:#ffca4d;--ifm-navbar-background-color:#5217b8;--ifm-hero-background-color-bottom:#290c5c;--ifm-navbar-link-color:var(--ifm-font-color-base-inverse);--ifm-navbar-link-hover-color:var(--ifm-color-secondary);--ifm-navbar-link-active-color:var(--ifm-color-gray-400);--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#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}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{box-sizing:initial;overflow:visible}.svg-inline--fa{display:var(--fa-display,inline-block);overflow:visible}.fa-layers,.fa-stack{display:inline-block}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.07143em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{top:.25em;width:var(--fa-li-width,2em)}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers,.fa-ul>li,.navbar__search{position:relative}.fa-layers{width:1em}.fa-layers-text{left:50%;top:50%;transform:translate(-50%,-50%);transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);transform:scale(var(--fa-counter-scale,.25));transform-origin:top right}.fa-ul,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;transform:scale(var(--fa-layers-scale,.25));transform-origin:bottom right}.fa-layers-bottom-left,.fa-layers-top-right{transform:scale(var(--fa-layers-scale,.25))}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;transform-origin:bottom left}.fa-layers-top-right{right:var(--fa-right,0);top:var(--fa-top,0);transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em)}.fa-li{left:calc(var(--fa-li-width,2em)*-1);line-height:inherit;position:absolute;width:var(--fa-li-width,2em)}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:a;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-beat-fade,.fa-fade{animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-iteration-count:var(--fa-animation-iteration-count,infinite)}.fa-fade{animation-name:b}.fa-beat-fade{animation-name:c}.fa-flip{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:d;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-pulse,.fa-spin,.fa-spin-pulse{animation-direction:var(--fa-animation-direction,normal);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:e}.fa-spin{animation-duration:var(--fa-animation-duration,2s);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-duration:var(--fa-animation-duration,1s);animation-timing-function:var(--fa-animation-timing,steps(8))}@keyframes a{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes b{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes c{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes d{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}@font-face{font-family:Object Sans Regular;src:url(/assets/fonts/ObjectSans-Regular-2a8a3a5edf33ee77e5931269d27c4e6f.woff2) format("woff2"),url(/assets/fonts/ObjectSans-Regular-4ab681413dd329607b462c101a5f16a8.woff) format("woff")}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-darkest);--ifm-button-border-color:var(--ifm-color-primary-darkest)}.navbar__link--active{color:var(--ifm-navbar-link-active-color)}.hero_uw3b a:not(.button),.navbar__toggle{color:var(--ifm-font-color-base-inverse)}.docusaurus-highlight-code-line{background-color:#0000001a;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}html[data-theme=dark] .docusaurus-highlight-code-line{background-color:#0000004d}details summary{font-size:20px}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#docusaurus-base-url-issue-banner-container,.hideAction_vcyE>svg,.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;z-index:calc(var(--ifm-z-index-fixed) + 1)}.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}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);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}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[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}.searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,#f5f6f7);border-radius:6px;box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64);left:auto!important;margin-top:8px;padding:var(--search-local-spacing,12px);position:relative;right:0!important;width:var(--search-local-modal-width,560px)}html[data-theme=dark] .searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,var(--ifm-background-color));box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309)}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2{align-items:center;background:var(--search-local-hit-background,#fff);border-radius:4px;box-shadow:var(--search-local-hit-shadow,0 1px 3px 0 #d4d9e1);color:var(--search-local-hit-color,#444950);cursor:pointer;display:flex;flex-direction:row;height:var(--search-local-hit-height,56px);padding:0 var(--search-local-spacing,12px);width:100%}.hitTree_kk6K,.noResults_l6Q3{align-items:center;display:flex}html[data-theme=dark] .dropdownMenu_qbY6 .suggestion_fB_2{background:var(--search-local-hit-background,var(--ifm-color-emphasis-100));box-shadow:var(--search-local-hit-shadow,none);color:var(--search-local-hit-color,var(--ifm-font-color-base))}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2:not(:last-child){margin-bottom:4px}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2.cursor_eG29{background-color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitFooter_E9YW a,.hitIcon_a7Zy,.hitPath_ieM4,.hitTree_kk6K,.noResultsIcon_EBY5{color:var(--search-local-muted-color,#969faf)}html[data-theme=dark] .hitIcon_a7Zy,html[data-theme=dark] .hitPath_ieM4,html[data-theme=dark] .hitTree_kk6K,html[data-theme=dark] .noResultsIcon_EBY5{color:var(--search-local-muted-color,var(--ifm-color-secondary-darkest))}.hitTree_kk6K>svg{height:var(--search-local-hit-height,56px);opacity:.5;width:24px}.hitIcon_a7Zy,.hitTree_kk6K>svg{stroke-width:var(--search-local-icon-stroke-width,1.4)}.hitAction_NqkB,.hitIcon_a7Zy{height:20px;width:20px}.hitWrapper_sAK8{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;margin:0 8px;overflow-x:hidden;width:80%}.hitWrapper_sAK8 mark{background:none;color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitTitle_vyVt{font-size:.9em}.hitPath_ieM4{font-size:.75em}.hitPath_ieM4,.hitTitle_vyVt{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.noResults_l6Q3{flex-direction:column;justify-content:center;padding:var(--search-local-spacing,12px) 0}.noResultsIcon_EBY5{margin-bottom:var(--search-local-spacing,12px)}.hitFooter_E9YW{font-size:.85em;margin-top:var(--search-local-spacing,12px)}.cursor_eG29 .hideAction_vcyE>svg,.tocCollapsibleContent_vkbj a{display:block}.suggestion_fB_2.cursor_eG29,.suggestion_fB_2.cursor_eG29 .hitIcon_a7Zy,.suggestion_fB_2.cursor_eG29 .hitPath_ieM4,.suggestion_fB_2.cursor_eG29 .hitTree_kk6K,.suggestion_fB_2.cursor_eG29 mark{color:var(--search-local-hit-active-color,var(--ifm-color-white))!important}.searchBarContainer_NW3z{margin-left:16px}.searchBarContainer_NW3z .searchBarLoadingRing_YnHq{display:none;left:10px;position:absolute;top:6px}.searchBarContainer_NW3z .searchClearButton_qk4g{background:none;border:none;line-height:1rem;padding:0;position:absolute;right:.8rem;top:50%;transform:translateY(-50%)}.searchIndexLoading_EJ1f .navbar__search-input{background-image:none}.searchHintContainer_Pkmr{align-items:center;display:flex;gap:4px;height:100%;justify-content:center;pointer-events:none;position:absolute;right:10px;top:0}.searchHint_iIMx{background-color:var(--ifm-navbar-background-color);border:1px solid var(--ifm-color-emphasis-500);box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-500);color:var(--ifm-navbar-search-input-placeholder-color)}.loadingRing_RJI3{display:inline-block;height:20px;opacity:var(--search-local-loading-icon-opacity,.5);position:relative;width:20px}.loadingRing_RJI3 div{animation:1.2s cubic-bezier(.5,0,.5,1) infinite e;border:2px solid var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color));border-color:var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color)) #0000 #0000 #0000;border-radius:50%;box-sizing:border-box;display:block;height:16px;margin:2px;position:absolute;width:16px}.loadingRing_RJI3 div:first-child{animation-delay:-.45s}.loadingRing_RJI3 div:nth-child(2){animation-delay:-.3s}.loadingRing_RJI3 div:nth-child(3){animation-delay:-.15s}@keyframes e{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.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{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.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:var(--ifm-global-radius);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}.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}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.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}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.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:"#"}.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 var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}: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)}.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:all var(--ifm-transition-fast) ease;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}.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:#0000 #0000 #0000 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)}.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}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchQueryInput_CFBF{background:var(--ifm-background-color);border:var(--ifm-global-border-width) solid var(--ifm-color-content-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-font-color-base);font-size:var(--ifm-font-size-base);margin-bottom:1rem;padding:.5rem;width:100%}.searchResultItem_U687{border-bottom:1px solid #dfe3e8;padding:1rem 0}.searchResultItemPath_uIbk{color:var(--ifm-color-content-secondary);font-size:.8rem;margin:.5rem 0 0}.searchResultItemSummary_oZHr{font-style:italic;margin:.5rem 0 0}.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)}.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:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docSidebarContainer_b6E3,.sidebarLogo_isFc{display:none}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.verticallyJustifiedCol__fFm{display:flex;flex-direction:column;justify-content:center}.videoContainer_Inu3{height:0;padding-bottom:56.25%;position:relative;width:100%}.videoContainer_Inu3>iframe{height:100%;left:0;position:absolute;top:0;width:100%}.cogment_verse_logo_FnS0 .main{fill:var(--ifm-font-color-base-inverse)}.cogment_verse_logo_FnS0 .subscript{fill:var(--ifm-color-gray-500)}.logos_W70m{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-evenly;padding:1rem}.logos_W70m .logo_kX79{flex:0 0 150px}.benefit_pXnC{align-items:center;display:flex;flex-direction:column}.benefit_pXnC h4{display:block;font-size:var(--ifm-h3-font-size);height:3rem}.benefit_pXnC ul{-webkit-padding-start:0;display:block;max-width:25rem;padding-inline-start:0;padding:0 2rem;width:100%}.benefit_pXnC img{height:auto;max-width:200px}.screenshots_x3pV{display:flex;flex-direction:row;gap:2rem;justify-content:space-evenly;padding:2rem}.screenshots_x3pV>img{flex:0 0 auto;height:128px}.cta_i4Jo{display:flex;flex-direction:row;gap:1rem;justify-content:center}.hero_uw3b{background-color:var(--ifm-navbar-background-color);background-image:linear-gradient(var(--ifm-navbar-background-color),var(--ifm-hero-background-color-bottom));color:var(--ifm-font-color-base-inverse)}.hero_uw3b strong{font-weight:bolder}.hero_uw3b .button--primary{--ifm-button-background-color:var(--ifm-color-content-inverse);--ifm-button-border-color:var(--ifm-color-content-inverse);--ifm-button-color:var(--ifm-font-color-base)}.hero_uw3b .button--primary:hover{--ifm-button-background-color:var(--ifm-color-gray-300);--ifm-button-border-color:var(--ifm-color-gray-300)}.section_ccoD h3{color:var(--ifm-color-primary);text-transform:uppercase}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}: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)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.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%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;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;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[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)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.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}}@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,.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 (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}.navbar__search-input:not(:focus){width:2rem}.searchBar_RVTs .dropdownMenu_qbY6{max-width:calc(100vw - var(--ifm-navbar-padding-horizontal)*2);width:var(--search-local-modal-width-sm,340px)}.searchHintContainer_Pkmr{display:none}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@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 (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}.fa-beat,.fa-beat-fade,.fa-fade,.fa-flip,.fa-pulse,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@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/css/styles.32238c8f.css b/assets/css/styles.32238c8f.css new file mode 100644 index 0000000..f76915b --- /dev/null +++ b/assets/css/styles.32238c8f.css @@ -0,0 +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,.hash-link{-webkit-user-select:none}.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)}.fa-beat,.fa-beat-fade,.fa-fade,.fa-flip{animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-delay:var(--fa-animation-delay,0)}.fa-beat,.fa-beat-fade,.fa-fade,.fa-flip,.fa-spin{animation-delay:var(--fa-animation-delay,0)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.DocSearch-Container,.DocSearch-Container *,.fa-layers-counter{box-sizing:border-box}: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:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--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 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--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:#0000;--ifm-table-stripe-background:#00000008;--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}.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:#0000}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,.tabItem_LNqP{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 #0000001a;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,.tabList__CuJ{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,.navbar,.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{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--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:#ebedf026;--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:#00a40026;--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:#54c7ec26;--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:#ffba0026;--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:#fa383e26;--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{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:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__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;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:#0000;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}.fa-layers,.svg-inline--fa{vertical-align:-.125em;height:1em}.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;list-style:none;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 #0000;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,.tabItem_Ymn6>:last-child{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{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;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,.fa-rotate-90,.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}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;bottom:0;left:0;top:0;visibility:hidden}.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{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);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)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.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:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--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);position:fixed;transform:translate3d(-100%,0,0);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:#0009;position:fixed;right:0;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{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}.content_knG7,.fa-fw,.fa-layers,.fa-li,.pills--block .pills__item{text-align:center}.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)}.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}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid #0000;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)}.fa-duotone.fa-inverse,.fa-inverse,.fa-layers-counter,.fad.fa-inverse{color:var(--fa-inverse,#fff)}.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:#ffffff0d;--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:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--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;--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-font-family-base:"Object Sans Regular";--ifm-color-primary:#5217b8;--ifm-color-primary-dark:#46149c;--ifm-color-primary-darker:#391081;--ifm-color-primary-darkest:#290b5c;--ifm-color-primary-light:#621cdd;--ifm-color-primary-lighter:#6e29e4;--ifm-color-primary-lightest:#874ee9;--ifm-color-secondary:#ffb300;--ifm-color-secondary-dark:#e6a100;--ifm-color-secondary-darker:#d99800;--ifm-color-secondary-darkest:#b37d00;--ifm-color-secondary-light:#ffbb1a;--ifm-color-secondary-lighter:#ffbe26;--ifm-color-secondary-lightest:#ffca4d;--ifm-navbar-background-color:#5217b8;--ifm-hero-background-color-bottom:#290c5c;--ifm-navbar-link-color:var(--ifm-font-color-base-inverse);--ifm-navbar-link-hover-color:var(--ifm-color-secondary);--ifm-navbar-link-active-color:var(--ifm-color-gray-400);--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base)}#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}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{box-sizing:initial;overflow:visible}.svg-inline--fa{display:var(--fa-display,inline-block);overflow:visible}.fa-layers,.fa-stack{display:inline-block}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.07143em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{top:.25em;width:var(--fa-li-width,2em)}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers,.fa-ul>li{position:relative}.fa-layers{width:1em}.fa-layers-text{left:50%;top:50%;transform:translate(-50%,-50%);transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);transform:scale(var(--fa-counter-scale,.25));transform-origin:top right}.fa-ul,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;transform:scale(var(--fa-layers-scale,.25));transform-origin:bottom right}.fa-layers-bottom-left,.fa-layers-top-right{transform:scale(var(--fa-layers-scale,.25))}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;transform-origin:bottom left}.fa-layers-top-right{right:var(--fa-right,0);top:var(--fa-top,0);transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em)}.fa-li{left:calc(var(--fa-li-width,2em)*-1);line-height:inherit;position:absolute;width:var(--fa-li-width,2em)}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:a;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-beat-fade,.fa-fade{animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-iteration-count:var(--fa-animation-iteration-count,infinite)}.fa-fade{animation-name:b}.fa-beat-fade{animation-name:c}.fa-flip{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:d;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-pulse,.fa-spin,.fa-spin-pulse{animation-direction:var(--fa-animation-direction,normal);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:e}.fa-spin{animation-duration:var(--fa-animation-duration,2s);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-duration:var(--fa-animation-duration,1s);animation-timing-function:var(--fa-animation-timing,steps(8))}@keyframes a{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes b{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes c{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes d{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes e{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}@font-face{font-family:Object Sans Regular;src:url(/assets/fonts/ObjectSans-Regular-2a8a3a5edf33ee77e5931269d27c4e6f.woff2) format("woff2"),url(/assets/fonts/ObjectSans-Regular-4ab681413dd329607b462c101a5f16a8.woff) format("woff")}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-darkest);--ifm-button-border-color:var(--ifm-color-primary-darkest)}.navbar__link--active{color:var(--ifm-navbar-link-active-color)}.hero_uw3b a:not(.button),.navbar__toggle{color:var(--ifm-font-color-base-inverse)}.docusaurus-highlight-code-line{background-color:#0000001a;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}html[data-theme=dark] .docusaurus-highlight-code-line{background-color:#0000004d}details summary{font-size:20px}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#docusaurus-base-url-issue-banner-container,.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;z-index:calc(var(--ifm-z-index-fixed) + 1)}.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}.content_knG7 a{color:inherit;text-decoration:underline}.DocSearch-Container a,.tag_zVej:hover{text-decoration:none}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);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}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[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}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.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{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.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)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);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}.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}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.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}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.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);user-select:none}.hash-link:before{content:"#"}.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 var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}: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)}.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:all var(--ifm-transition-fast) ease;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}.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;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 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)}.containsTaskList_mC6p{list-style:none}.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}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.algoliaLogo_rT1R{max-width:150px}.algoliaLogoPathFill_WdUC{fill:var(--ifm-font-color-base)}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{animation:1s linear infinite f;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes f{to{transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}.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)}.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:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docSidebarContainer_b6E3,.sidebarLogo_isFc{display:none}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.verticallyJustifiedCol__fFm{display:flex;flex-direction:column;justify-content:center}.videoContainer_Inu3{height:0;padding-bottom:56.25%;position:relative;width:100%}.videoContainer_Inu3>iframe{height:100%;left:0;position:absolute;top:0;width:100%}.cogment_verse_logo_FnS0 .main{fill:var(--ifm-font-color-base-inverse)}.cogment_verse_logo_FnS0 .subscript{fill:var(--ifm-color-gray-500)}.logos_W70m{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-evenly;padding:1rem}.logos_W70m .logo_kX79{flex:0 0 150px}.benefit_pXnC{align-items:center;display:flex;flex-direction:column}.benefit_pXnC h4{display:block;font-size:var(--ifm-h3-font-size);height:3rem;text-align:center}.benefit_pXnC ul{-webkit-padding-start:0;display:block;max-width:25rem;padding-inline-start:0;padding:0 2rem;width:100%}.benefit_pXnC img{height:auto;max-width:200px}.screenshots_x3pV{display:flex;flex-direction:row;gap:2rem;justify-content:space-evenly;padding:2rem}.screenshots_x3pV>img{flex:0 0 auto;height:128px}.cta_i4Jo{display:flex;flex-direction:row;gap:1rem;justify-content:center}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.hero_uw3b{background-color:var(--ifm-navbar-background-color);background-image:linear-gradient(var(--ifm-navbar-background-color),var(--ifm-hero-background-color-bottom));color:var(--ifm-font-color-base-inverse)}.hero_uw3b strong{font-weight:bolder}.hero_uw3b .button--primary{--ifm-button-background-color:var(--ifm-color-content-inverse);--ifm-button-border-color:var(--ifm-color-content-inverse);--ifm-button-color:var(--ifm-font-color-base)}.hero_uw3b .button--primary:hover{--ifm-button-background-color:var(--ifm-color-gray-300);--ifm-button-border-color:var(--ifm-color-gray-300)}.section_ccoD h3{color:var(--ifm-color-primary);text-align:center;text-transform:uppercase}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards g;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@keyframes g{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}: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)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.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%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;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;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[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)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.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}}@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,.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 only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@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}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@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 (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}.fa-beat,.fa-beat-fade,.fa-fade,.fa-flip,.fa-pulse,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;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/17896441.57c09338.js b/assets/js/17896441.57c09338.js deleted file mode 100644 index a5f401d..0000000 --- a/assets/js/17896441.57c09338.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[7918],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>d,kt:()=>p});var a=n(7294);function o(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){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),i=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=i(e.components);return a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=i(n),p=o,f=u["".concat(s,".").concat(p)]||u[p]||m[p]||r;return n?a.createElement(f,l(l({ref:t},d),{},{components:n})):a.createElement(f,l({ref:t},d))}));function p(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=u;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,l[1]=c;for(var i=2;i{"use strict";n.r(t),n.d(t,{default:()=>Pt});var a=n(7294),o=n(1944),r=n(902);const l=a.createContext(null);function c(e){let{children:t,content:n}=e;const o=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(l.Provider,{value:o},t)}function s(){const e=(0,a.useContext)(l);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=s();return a.createElement(o.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),p=n(5999),f=n(9960);function h(e){const{permalink:t,title:n,subLabel:o,isNext:r}=e;return a.createElement(f.Z,{className:(0,d.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&a.createElement("div",{className:"pagination-nav__sublabel"},o),a.createElement("div",{className:"pagination-nav__label"},n))}function g(e){const{previous:t,next:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,p.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},t&&a.createElement(h,(0,u.Z)({},t,{subLabel:a.createElement(p.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&a.createElement(h,(0,u.Z)({},n,{subLabel:a.createElement(p.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function v(){const{metadata:e}=s();return a.createElement(g,{previous:e.previous,next:e.next})}var b=n(2263),E=n(143),y=n(5281),k=n(373),N=n(4477);const L={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(p.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(p.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 C(e){const t=L[e.versionMetadata.banner];return a.createElement(t,e)}function T(e){let{versionLabel:t,to:n,onClick:o}=e;return a.createElement(p.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(f.Z,{to:n,onClick:o},a.createElement(p.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 _(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,b.Z)(),{pluginId:r}=(0,E.gA)({failfast:!0}),{savePreferredVersionName:l}=(0,k.J)(r),{latestDocSuggestion:c,latestVersionSuggestion:s}=(0,E.Jo)(r),i=c??(m=s).docs.find((e=>e.id===m.mainDocId));var m;return a.createElement("div",{className:(0,d.Z)(t,y.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(C,{siteTitle:o,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(T,{versionLabel:s.label,to:i.path,onClick:()=>l(s.name)})))}function w(e){let{className:t}=e;const n=(0,N.E)();return n.banner?a.createElement(_,{className:t,versionMetadata:n}):null}function Z(e){let{className:t}=e;const n=(0,N.E)();return n.badge?a.createElement("span",{className:(0,d.Z)(t,y.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(p.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}function x(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(p.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 B(e){let{lastUpdatedBy:t}=e;return a.createElement(p.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 O(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:o}=e;return a.createElement("span",{className:y.k.common.lastUpdated},a.createElement(p.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(x,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:o?a.createElement(B,{lastUpdatedBy:o}):""}},"Last updated{atDate}{byUser}"),!1)}const A="iconEdit_Z9Sw";function j(e){let{className:t,...n}=e;return a.createElement("svg",(0,u.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,d.Z)(A,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 H(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:y.k.common.editThisPage},a.createElement(j,null),a.createElement(p.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}const S="tag_zVej",M="tagRegular_sFm0",P="tagWithCount_h2kH";function I(e){let{permalink:t,label:n,count:o}=e;return a.createElement(f.Z,{href:t,className:(0,d.Z)(S,o?P:M)},n,o&&a.createElement("span",null,o))}const U="tags_jXut",z="tag_QGVx";function V(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(p.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,d.Z)(U,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:z},a.createElement(I,{label:t,permalink:n}))}))))}const D="lastUpdated_vwxv";function R(e){return a.createElement("div",{className:(0,d.Z)(y.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(V,e)))}function $(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:o,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(y.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(H,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",D)},(n||o)&&a.createElement(O,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:o})))}function W(){const{metadata:e}=s(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:o,lastUpdatedBy:r,tags:l}=e,c=l.length>0,i=!!(t||n||r);return c||i?a.createElement("footer",{className:(0,d.Z)(y.k.docs.docFooter,"docusaurus-mt-lg")},c&&a.createElement(R,{tags:l}),i&&a.createElement($,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:o})):null}var F=n(6043),q=n(6668);function G(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,...o}=e;n>=0?t[n].children.push(o):a.push(o)})),a}function Y(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=Y({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function J(e){const t=e.getBoundingClientRect();return t.top===t.bottom?J(e.parentNode):t}function Q(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>J(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 K(e){const t=(0,a.useRef)(void 0),n=X();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:o,minHeadingLevel:r,maxHeadingLevel:l}=e;function c(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),c=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let o=t;o<=n;o+=1)a.push(`h${o}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:l}),s=Q(c,{anchorTopOffset:n.current}),i=e.find((e=>s&&s.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(o),e.classList.add(o),t.current=e):e.classList.remove(o)}(e,e===i)}))}return document.addEventListener("scroll",c),document.addEventListener("resize",c),c(),()=>{document.removeEventListener("scroll",c),document.removeEventListener("resize",c)}}),[e,n])}function ee(e){let{toc:t,className:n,linkClassName:o,isChild:r}=e;return t.length?a.createElement("ul",{className:r?void 0:n},t.map((e=>a.createElement("li",{key:e.id},a.createElement("a",{href:`#${e.id}`,className:o??void 0,dangerouslySetInnerHTML:{__html:e.value}}),a.createElement(ee,{isChild:!0,toc:e.children,className:n,linkClassName:o}))))):null}const te=a.memo(ee);function ne(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:l,maxHeadingLevel:c,...s}=e;const i=(0,q.L)(),d=l??i.tableOfContents.minHeadingLevel,m=c??i.tableOfContents.maxHeadingLevel,p=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,a.useMemo)((()=>Y({toc:G(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}({toc:t,minHeadingLevel:d,maxHeadingLevel:m});return K((0,a.useMemo)((()=>{if(o&&r)return{linkClassName:o,linkActiveClassName:r,minHeadingLevel:d,maxHeadingLevel:m}}),[o,r,d,m])),a.createElement(te,(0,u.Z)({toc:p,className:n,linkClassName:o},s))}const ae="tocCollapsibleButton_TO0P",oe="tocCollapsibleButtonExpanded_MG3E";function re(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,u.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",ae,!t&&oe,n.className)}),a.createElement(p.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const le="tocCollapsible_ETCw",ce="tocCollapsibleContent_vkbj",se="tocCollapsibleExpanded_sAul";function ie(e){let{toc:t,className:n,minHeadingLevel:o,maxHeadingLevel:r}=e;const{collapsed:l,toggleCollapsed:c}=(0,F.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(le,!l&&se,n)},a.createElement(re,{collapsed:l,onClick:c}),a.createElement(F.z,{lazy:!0,className:ce,collapsed:l},a.createElement(ne,{toc:t,minHeadingLevel:o,maxHeadingLevel:r})))}const de="tocMobile_ITEo";function me(){const{toc:e,frontMatter:t}=s();return a.createElement(ie,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(y.k.docs.docTocMobile,de)})}const ue="tableOfContents_bqdL";function pe(e){let{className:t,...n}=e;return a.createElement("div",{className:(0,d.Z)(ue,"thin-scrollbar",t)},a.createElement(ne,(0,u.Z)({},n,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}function fe(){const{toc:e,frontMatter:t}=s();return a.createElement(pe,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:y.k.docs.docTocDesktop})}const he="anchorWithStickyNavbar_LWe7",ge="anchorWithHideOnScrollNavbar_WYt5";function ve(e){let{as:t,id:n,...o}=e;const{navbar:{hideOnScroll:r}}=(0,q.L)();if("h1"===t||!n)return a.createElement(t,(0,u.Z)({},o,{id:void 0}));const l=(0,p.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof o.children?o.children:n});return a.createElement(t,(0,u.Z)({},o,{className:(0,d.Z)("anchor",r?ge:he,o.className),id:n}),o.children,a.createElement(f.Z,{className:"hash-link",to:`#${n}`,"aria-label":l,title:l},"\u200b"))}var be=n(3905),Ee=n(5742);var ye=n(2389),ke=n(2949);function Ne(){const{prism:e}=(0,q.L)(),{colorMode:t}=(0,ke.I)(),n=e.theme,a=e.darkTheme||n;return"dark"===t?a:n}var Le=n(7594),Ce=n.n(Le);const Te=/title=(?["'])(?.*?)\1/,_e=/\{(?<range>[\d,-]+)\}/,we={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function Ze(e,t){const n=e.map((e=>{const{start:n,end:a}=we[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*${a})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function xe(e,t){let n=e.replace(/\n$/,"");const{language:a,magicComments:o,metastring:r}=t;if(r&&_e.test(r)){const e=r.match(_e).groups.range;if(0===o.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=o[0].className,a=Ce()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(a),code:n}}if(void 0===a)return{lineClassNames:{},code:n};const l=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Ze(["js","jsBlock"],t);case"jsx":case"tsx":return Ze(["js","jsBlock","jsx"],t);case"html":return Ze(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Ze(["bash"],t);case"markdown":case"md":return Ze(["html","jsx","bash"],t);default:return Ze(Object.keys(we),t)}}(a,o),c=n.split("\n"),s=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.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},`:d[t]?s[d[t]].start=p:m[t]&&(s[m[t]].range+=`${s[m[t]].start}-${p-1},`),c.splice(p,1)}n=c.join("\n");const u={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;Ce()(n).forEach((e=>{u[e]??=[],u[e].push(t)}))})),{lineClassNames:u,code:n}}const Be="codeBlockContainer_Ckt0";function Oe(e){let{as:t,...n}=e;const o=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[a,o]=e;const r=t[a];r&&"string"==typeof o&&(n[r]=o)})),n}(Ne());return a.createElement(t,(0,u.Z)({},n,{style:o,className:(0,d.Z)(n.className,Be,y.k.common.codeBlock)}))}const Ae={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function je(e){let{children:t,className:n}=e;return a.createElement(Oe,{as:"pre",tabIndex:0,className:(0,d.Z)(Ae.codeBlockStandalone,"thin-scrollbar",n)},a.createElement("code",{className:Ae.codeBlockLines},t))}const He={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Se(e,t){const[n,o]=(0,a.useState)(),l=(0,a.useCallback)((()=>{var t;o(null==(t=e.current)?void 0:t.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,a.useEffect)((()=>{l()}),[l]),function(e,t,n){void 0===n&&(n=He);const o=(0,r.zX)(t),l=(0,r.Ql)(n);(0,a.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,l),()=>t.disconnect()}),[e,o,l])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),l())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const Me={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 Pe={Prism:n(7410).Z,theme:Me};function Ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ue(){return Ue=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Ue.apply(this,arguments)}var ze=/\r\n|\r|\n/,Ve=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)},De=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},Re=function(e,t){var n=e.plain,a=Object.create(null),o=e.styles.reduce((function(e,n){var a=n.languages,o=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=Ue({},e[t],o);e[t]=n})),e}),a);return o.root=n,o.plain=Ue({},n,{backgroundColor:null}),o};function $e(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}const We=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),Ie(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?Re(e.theme,e.language):void 0;return t.themeDict=n})),Ie(this,"getLineProps",(function(e){var n=e.key,a=e.className,o=e.style,r=Ue({},$e(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!==o&&(r.style=void 0!==r.style?Ue({},r.style,o):o),void 0!==n&&(r.key=n),a&&(r.className+=" "+a),r})),Ie(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,o=n.length,r=t.getThemeDict(t.props);if(void 0!==r){if(1===o&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===o&&!a)return r[n[0]];var l=a?{display:"inline-block"}:{},c=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[l].concat(c))}})),Ie(this,"getTokenProps",(function(e){var n=e.key,a=e.className,o=e.style,r=e.token,l=Ue({},$e(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:t.getStyleForToken(r),key:void 0});return void 0!==o&&(l.style=void 0!==l.style?Ue({},l.style,o):o),void 0!==n&&(l.key=n),a&&(l.className+=" "+a),l})),Ie(this,"tokenize",(function(e,t,n,a){var o={code:t,grammar:n,language:a,tokens:[]};e.hooks.run("before-tokenize",o);var r=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),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,a=e.code,o=e.children,r=this.getThemeDict(this.props),l=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],a=[0],o=[e.length],r=0,l=0,c=[],s=[c];l>-1;){for(;(r=a[l]++)<o[l];){var i=void 0,d=t[l],m=n[l][r];if("string"==typeof m?(d=l>0?d:["plain"],i=m):(d=De(d,m.type),m.alias&&(d=De(d,m.alias)),i=m.content),"string"==typeof i){var u=i.split(ze),p=u.length;c.push({types:d,content:u[0]});for(var f=1;f<p;f++)Ve(c),s.push(c=[]),c.push({types:d,content:u[f]})}else l++,t.push(d),n.push(i),a.push(0),o.push(i.length)}l--,t.pop(),n.pop(),a.pop(),o.pop()}return Ve(c),s}(void 0!==l?this.tokenize(t,a,l,n):[a]),className:"prism-code language-"+n,style:void 0!==r?r.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(a.Component),Fe="codeLine_lJS_",qe="codeLineNumber_Tfdd",Ge="codeLineContent_feaV";function Ye(e){let{line:t,classNames:n,showLineNumbers:o,getLineProps:r,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=r({line:t,className:(0,d.Z)(n,o&&Fe)}),s=t.map(((e,t)=>a.createElement("span",(0,u.Z)({key:t},l({token:e,key:t})))));return a.createElement("span",c,o?a.createElement(a.Fragment,null,a.createElement("span",{className:qe}),a.createElement("span",{className:Ge},s)):s,a.createElement("br",null))}const Je={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function Qe(e){let{code:t,className:n}=e;const[o,r]=(0,a.useState)(!1),l=(0,a.useRef)(void 0),c=(0,a.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const a=document.createElement("textarea"),o=document.activeElement;a.value=e,a.setAttribute("readonly",""),a.style.contain="strict",a.style.position="absolute",a.style.left="-9999px",a.style.fontSize="12pt";const r=document.getSelection(),l=r.rangeCount>0&&r.getRangeAt(0);n.append(a),a.select(),a.selectionStart=0,a.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch{}a.remove(),l&&(r.removeAllRanges(),r.addRange(l)),o&&o.focus()}(t),r(!0),l.current=window.setTimeout((()=>{r(!1)}),1e3)}),[t]);return(0,a.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),a.createElement("button",{type:"button","aria-label":o?(0,p.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,p.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,p.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,d.Z)("clean-btn",n,Je.copyButton,o&&Je.copyButtonCopied),onClick:c},a.createElement("span",{className:Je.copyButtonIcons,"aria-hidden":"true"},a.createElement("svg",{className:Je.copyButtonIcon,viewBox:"0 0 24 24"},a.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"})),a.createElement("svg",{className:Je.copyButtonSuccessIcon,viewBox:"0 0 24 24"},a.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const Xe="wordWrapButtonIcon_Bwma",Ke="wordWrapButtonEnabled_EoeP";function et(e){let{className:t,onClick:n,isEnabled:o}=e;const r=(0,p.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return a.createElement("button",{type:"button",onClick:n,className:(0,d.Z)("clean-btn",t,o&&Ke),"aria-label":r,title:r},a.createElement("svg",{className:Xe,viewBox:"0 0 24 24","aria-hidden":"true"},a.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 tt(e){let{children:t,className:n="",metastring:o,title:r,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:s,magicComments:i}}=(0,q.L)(),m=c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return null==t?void 0:t.replace(/language-/,"")}(n)??s,p=Ne(),f=function(){const[e,t]=(0,a.useState)(!1),[n,o]=(0,a.useState)(!1),r=(0,a.useRef)(null),l=(0,a.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,a.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");o(n)}),[r]);return Se(r,c),(0,a.useEffect)((()=>{c()}),[e,c]),(0,a.useEffect)((()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)})),[c]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:l}}(),h=function(e){var t;return(null==e||null==(t=e.match(Te))?void 0:t.groups.title)??""}(o)||r,{lineClassNames:g,code:v}=xe(t,{metastring:o,language:m,magicComments:i}),b=l??function(e){return Boolean(null==e?void 0:e.includes("showLineNumbers"))}(o);return a.createElement(Oe,{as:"div",className:(0,d.Z)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`)},h&&a.createElement("div",{className:Ae.codeBlockTitle},h),a.createElement("div",{className:Ae.codeBlockContent},a.createElement(We,(0,u.Z)({},Pe,{theme:p,code:v,language:m??"text"}),(e=>{let{className:t,tokens:n,getLineProps:o,getTokenProps:r}=e;return a.createElement("pre",{tabIndex:0,ref:f.codeBlockRef,className:(0,d.Z)(t,Ae.codeBlock,"thin-scrollbar")},a.createElement("code",{className:(0,d.Z)(Ae.codeBlockLines,b&&Ae.codeBlockLinesWithNumbering)},n.map(((e,t)=>a.createElement(Ye,{key:t,line:e,getLineProps:o,getTokenProps:r,classNames:g[t],showLineNumbers:b})))))})),a.createElement("div",{className:Ae.buttonGroup},(f.isEnabled||f.isCodeScrollable)&&a.createElement(et,{className:Ae.codeButton,onClick:()=>f.toggle(),isEnabled:f.isEnabled}),a.createElement(Qe,{className:Ae.codeButton,code:v}))))}function nt(e){let{children:t,...n}=e;const o=(0,ye.Z)(),r=function(e){return a.Children.toArray(e).some((e=>(0,a.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof r?tt:je;return a.createElement(l,(0,u.Z)({key:String(o)},n),r)}const at="details_lb9f",ot="isBrowser_bmU9",rt="collapsibleContent_i85q";function lt(e){return!!e&&("SUMMARY"===e.tagName||lt(e.parentElement))}function ct(e,t){return!!e&&(e===t||ct(e.parentElement,t))}function st(e){let{summary:t,children:n,...o}=e;const r=(0,ye.Z)(),l=(0,a.useRef)(null),{collapsed:c,setCollapsed:s}=(0,F.u)({initialState:!o.open}),[i,m]=(0,a.useState)(o.open),p=a.isValidElement(t)?t:a.createElement("summary",null,t??"Details");return a.createElement("details",(0,u.Z)({},o,{ref:l,open:i,"data-collapsed":c,className:(0,d.Z)(at,r&&ot,o.className),onMouseDown:e=>{lt(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;lt(t)&&ct(t,l.current)&&(e.preventDefault(),c?(s(!1),m(!0)):s(!0))}}),p,a.createElement(F.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{s(e),m(!e)}},a.createElement("div",{className:rt},n)))}const it="details_b_Ee";function dt(e){let{...t}=e;return a.createElement(st,(0,u.Z)({},t,{className:(0,d.Z)("alert alert--info",it,t.className)}))}function mt(e){return a.createElement(ve,e)}const ut="containsTaskList_mC6p";const pt="img_ev3q";const ft="admonition_LlT9",ht="admonitionHeading_tbUL",gt="admonitionIcon_kALy",vt="admonitionContent_S0QG";const bt={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(p.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(p.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(p.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(p.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(p.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},Et={secondary:"note",important:"info",success:"tip",warning:"danger"};function yt(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=a.Children.toArray(e),n=t.find((e=>{var t;return a.isValidElement(e)&&"mdxAdmonitionTitle"===(null==(t=e.props)?void 0:t.mdxType)})),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:o}}(e.children);return{...e,title:e.title??t,children:n}}const kt={head:function(e){const t=a.Children.map(e.children,(e=>a.isValidElement(e)?function(e){var t;if(null!=(t=e.props)&&t.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...o}=e.props;return a.createElement(e.props.originalType,o)}return e}(e):e));return a.createElement(Ee.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return a.Children.toArray(e.children).every((e=>{var n;return"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&t.includes(null==(n=e.props)?void 0:n.mdxType)}))?a.createElement("code",e):a.createElement(nt,e)},a:function(e){return a.createElement(f.Z,e)},pre:function(e){var t;return a.createElement(nt,(0,a.isValidElement)(e.children)&&"code"===(null==(t=e.children.props)?void 0:t.originalType)?e.children.props:{...e})},details:function(e){const t=a.Children.toArray(e.children),n=t.find((e=>{var t;return a.isValidElement(e)&&"summary"===(null==(t=e.props)?void 0:t.mdxType)})),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return a.createElement(dt,(0,u.Z)({},e,{summary:n}),o)},ul:function(e){return a.createElement("ul",(0,u.Z)({},e,{className:(t=e.className,(0,d.Z)(t,(null==t?void 0:t.includes("contains-task-list"))&&ut))}));var t},img:function(e){return a.createElement("img",(0,u.Z)({loading:"lazy"},e,{className:(t=e.className,(0,d.Z)(t,pt))}));var t},h1:e=>a.createElement(mt,(0,u.Z)({as:"h1"},e)),h2:e=>a.createElement(mt,(0,u.Z)({as:"h2"},e)),h3:e=>a.createElement(mt,(0,u.Z)({as:"h3"},e)),h4:e=>a.createElement(mt,(0,u.Z)({as:"h4"},e)),h5:e=>a.createElement(mt,(0,u.Z)({as:"h5"},e)),h6:e=>a.createElement(mt,(0,u.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:o,icon:r}=yt(e),l=function(e){const t=Et[e]??e;return bt[t]||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),bt.info)}(n),c=o??l.label,{iconComponent:s}=l,i=r??a.createElement(s,null);return a.createElement("div",{className:(0,d.Z)(y.k.common.admonition,y.k.common.admonitionType(e.type),"alert",`alert--${l.infimaClassName}`,ft)},a.createElement("div",{className:ht},a.createElement("span",{className:gt},i),c),a.createElement("div",{className:vt},t))},mermaid:()=>null};function Nt(e){let{children:t}=e;return a.createElement(be.Zo,{components:kt},t)}function Lt(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=s();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(y.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(ve,{as:"h1"},n)),a.createElement(Nt,null,t))}var Ct=n(3438),Tt=n(8596),_t=n(4996);function wt(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 Zt="breadcrumbHomeIcon_YNFT";function xt(){const e=(0,_t.Z)("/");return a.createElement("li",{className:"breadcrumbs__item"},a.createElement(f.Z,{"aria-label":(0,p.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},a.createElement(wt,{className:Zt})))}const Bt="breadcrumbsContainer_Z_bl";function Ot(e){let{children:t,href:n,isLast:o}=e;const r="breadcrumbs__link";return o?a.createElement("span",{className:r,itemProp:"name"},t):n?a.createElement(f.Z,{className:r,href:n,itemProp:"item"},a.createElement("span",{itemProp:"name"},t)):a.createElement("span",{className:r},t)}function At(e){let{children:t,active:n,index:o,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(o+1)}))}function jt(){const e=(0,Ct.s1)(),t=(0,Tt.Ns)();return e?a.createElement("nav",{className:(0,d.Z)(y.k.docs.docBreadcrumbs,Bt),"aria-label":(0,p.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(xt,null),e.map(((t,n)=>{const o=n===e.length-1;return a.createElement(At,{key:n,active:o,index:n,addMicrodata:!!t.href},a.createElement(Ot,{href:t.href,isLast:o},t.label))})))):null}const Ht="docItemContainer_Djhp",St="docItemCol_VOVn";function Mt(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=s(),n=(0,m.i)(),o=e.hide_table_of_contents,r=!o&&t.length>0;return{hidden:o,mobile:r?a.createElement(me,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(fe,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&St)},a.createElement(w,null),a.createElement("div",{className:Ht},a.createElement("article",null,a.createElement(jt,null),a.createElement(Z,null),n.mobile,a.createElement(Lt,null,t),a.createElement(W,null)),a.createElement(v,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function Pt(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(c,{content:e.content},a.createElement(o.FG,{className:t},a.createElement(i,null),a.createElement(Mt,null,a.createElement(n,null))))}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>c,q:()=>l});var a=n(7294),o=n(902);const r=a.createContext(null);function l(e){let{children:t,version:n}=e;return a.createElement(r.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(r);if(null===e)throw new o.i6("DocsVersionProvider");return e}},7594:(e,t)=>{function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,o,r]=t;if(a&&r){a=parseInt(a),r=parseInt(r);const e=a<r?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(r+=e);for(let t=a;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/17896441.e1ad11d7.js b/assets/js/17896441.e1ad11d7.js new file mode 100644 index 0000000..e560cda --- /dev/null +++ b/assets/js/17896441.e1ad11d7.js @@ -0,0 +1 @@ +(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[7918],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>d,kt:()=>p});var a=n(7294);function o(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){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),i=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=i(e.components);return a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=i(n),p=o,f=u["".concat(s,".").concat(p)]||u[p]||m[p]||r;return n?a.createElement(f,l(l({ref:t},d),{},{components:n})):a.createElement(f,l({ref:t},d))}));function p(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=u;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,l[1]=c;for(var i=2;i<r;i++)l[i]=n[i];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},8246:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Pt});var a=n(7294),o=n(833),r=n(902);const l=a.createContext(null);function c(e){let{children:t,content:n}=e;const o=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(l.Provider,{value:o},t)}function s(){const e=(0,a.useContext)(l);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=s();return a.createElement(o.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),p=n(5999),f=n(9960);function h(e){const{permalink:t,title:n,subLabel:o,isNext:r}=e;return a.createElement(f.Z,{className:(0,d.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&a.createElement("div",{className:"pagination-nav__sublabel"},o),a.createElement("div",{className:"pagination-nav__label"},n))}function g(e){const{previous:t,next:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,p.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},t&&a.createElement(h,(0,u.Z)({},t,{subLabel:a.createElement(p.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&a.createElement(h,(0,u.Z)({},n,{subLabel:a.createElement(p.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function v(){const{metadata:e}=s();return a.createElement(g,{previous:e.previous,next:e.next})}var b=n(2263),E=n(143),y=n(5281),k=n(373),N=n(4477);const L={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(p.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(p.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 C(e){const t=L[e.versionMetadata.banner];return a.createElement(t,e)}function T(e){let{versionLabel:t,to:n,onClick:o}=e;return a.createElement(p.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(f.Z,{to:n,onClick:o},a.createElement(p.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 _(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,b.Z)(),{pluginId:r}=(0,E.gA)({failfast:!0}),{savePreferredVersionName:l}=(0,k.J)(r),{latestDocSuggestion:c,latestVersionSuggestion:s}=(0,E.Jo)(r),i=c??(m=s).docs.find((e=>e.id===m.mainDocId));var m;return a.createElement("div",{className:(0,d.Z)(t,y.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(C,{siteTitle:o,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(T,{versionLabel:s.label,to:i.path,onClick:()=>l(s.name)})))}function w(e){let{className:t}=e;const n=(0,N.E)();return n.banner?a.createElement(_,{className:t,versionMetadata:n}):null}function Z(e){let{className:t}=e;const n=(0,N.E)();return n.badge?a.createElement("span",{className:(0,d.Z)(t,y.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(p.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}function x(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(p.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 B(e){let{lastUpdatedBy:t}=e;return a.createElement(p.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 O(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:o}=e;return a.createElement("span",{className:y.k.common.lastUpdated},a.createElement(p.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(x,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:o?a.createElement(B,{lastUpdatedBy:o}):""}},"Last updated{atDate}{byUser}"),!1)}const A="iconEdit_Z9Sw";function j(e){let{className:t,...n}=e;return a.createElement("svg",(0,u.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,d.Z)(A,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 H(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:y.k.common.editThisPage},a.createElement(j,null),a.createElement(p.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}const S="tag_zVej",M="tagRegular_sFm0",P="tagWithCount_h2kH";function I(e){let{permalink:t,label:n,count:o}=e;return a.createElement(f.Z,{href:t,className:(0,d.Z)(S,o?P:M)},n,o&&a.createElement("span",null,o))}const U="tags_jXut",z="tag_QGVx";function V(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(p.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,d.Z)(U,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:z},a.createElement(I,{label:t,permalink:n}))}))))}const D="lastUpdated_vwxv";function R(e){return a.createElement("div",{className:(0,d.Z)(y.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(V,e)))}function $(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:o,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(y.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(H,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",D)},(n||o)&&a.createElement(O,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:o})))}function W(){const{metadata:e}=s(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:o,lastUpdatedBy:r,tags:l}=e,c=l.length>0,i=!!(t||n||r);return c||i?a.createElement("footer",{className:(0,d.Z)(y.k.docs.docFooter,"docusaurus-mt-lg")},c&&a.createElement(R,{tags:l}),i&&a.createElement($,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:o})):null}var F=n(6043),q=n(6668);function G(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,...o}=e;n>=0?t[n].children.push(o):a.push(o)})),a}function Y(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=Y({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function J(e){const t=e.getBoundingClientRect();return t.top===t.bottom?J(e.parentNode):t}function Q(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>J(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(J(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function X(){const e=(0,a.useRef)(0),{navbar:{hideOnScroll:t}}=(0,q.L)();return(0,a.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function K(e){const t=(0,a.useRef)(void 0),n=X();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:o,minHeadingLevel:r,maxHeadingLevel:l}=e;function c(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),c=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let o=t;o<=n;o+=1)a.push(`h${o}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:l}),s=Q(c,{anchorTopOffset:n.current}),i=e.find((e=>s&&s.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(o),e.classList.add(o),t.current=e):e.classList.remove(o)}(e,e===i)}))}return document.addEventListener("scroll",c),document.addEventListener("resize",c),c(),()=>{document.removeEventListener("scroll",c),document.removeEventListener("resize",c)}}),[e,n])}function ee(e){let{toc:t,className:n,linkClassName:o,isChild:r}=e;return t.length?a.createElement("ul",{className:r?void 0:n},t.map((e=>a.createElement("li",{key:e.id},a.createElement("a",{href:`#${e.id}`,className:o??void 0,dangerouslySetInnerHTML:{__html:e.value}}),a.createElement(ee,{isChild:!0,toc:e.children,className:n,linkClassName:o}))))):null}const te=a.memo(ee);function ne(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:l,maxHeadingLevel:c,...s}=e;const i=(0,q.L)(),d=l??i.tableOfContents.minHeadingLevel,m=c??i.tableOfContents.maxHeadingLevel,p=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,a.useMemo)((()=>Y({toc:G(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}({toc:t,minHeadingLevel:d,maxHeadingLevel:m});return K((0,a.useMemo)((()=>{if(o&&r)return{linkClassName:o,linkActiveClassName:r,minHeadingLevel:d,maxHeadingLevel:m}}),[o,r,d,m])),a.createElement(te,(0,u.Z)({toc:p,className:n,linkClassName:o},s))}const ae="tocCollapsibleButton_TO0P",oe="tocCollapsibleButtonExpanded_MG3E";function re(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,u.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",ae,!t&&oe,n.className)}),a.createElement(p.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const le="tocCollapsible_ETCw",ce="tocCollapsibleContent_vkbj",se="tocCollapsibleExpanded_sAul";function ie(e){let{toc:t,className:n,minHeadingLevel:o,maxHeadingLevel:r}=e;const{collapsed:l,toggleCollapsed:c}=(0,F.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(le,!l&&se,n)},a.createElement(re,{collapsed:l,onClick:c}),a.createElement(F.z,{lazy:!0,className:ce,collapsed:l},a.createElement(ne,{toc:t,minHeadingLevel:o,maxHeadingLevel:r})))}const de="tocMobile_ITEo";function me(){const{toc:e,frontMatter:t}=s();return a.createElement(ie,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(y.k.docs.docTocMobile,de)})}const ue="tableOfContents_bqdL";function pe(e){let{className:t,...n}=e;return a.createElement("div",{className:(0,d.Z)(ue,"thin-scrollbar",t)},a.createElement(ne,(0,u.Z)({},n,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}function fe(){const{toc:e,frontMatter:t}=s();return a.createElement(pe,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:y.k.docs.docTocDesktop})}const he="anchorWithStickyNavbar_LWe7",ge="anchorWithHideOnScrollNavbar_WYt5";function ve(e){let{as:t,id:n,...o}=e;const{navbar:{hideOnScroll:r}}=(0,q.L)();if("h1"===t||!n)return a.createElement(t,(0,u.Z)({},o,{id:void 0}));const l=(0,p.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof o.children?o.children:n});return a.createElement(t,(0,u.Z)({},o,{className:(0,d.Z)("anchor",r?ge:he,o.className),id:n}),o.children,a.createElement(f.Z,{className:"hash-link",to:`#${n}`,"aria-label":l,title:l},"\u200b"))}var be=n(3905),Ee=n(5742);var ye=n(2389),ke=n(2949);function Ne(){const{prism:e}=(0,q.L)(),{colorMode:t}=(0,ke.I)(),n=e.theme,a=e.darkTheme||n;return"dark"===t?a:n}var Le=n(7594),Ce=n.n(Le);const Te=/title=(?<quote>["'])(?<title>.*?)\1/,_e=/\{(?<range>[\d,-]+)\}/,we={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function Ze(e,t){const n=e.map((e=>{const{start:n,end:a}=we[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*${a})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function xe(e,t){let n=e.replace(/\n$/,"");const{language:a,magicComments:o,metastring:r}=t;if(r&&_e.test(r)){const e=r.match(_e).groups.range;if(0===o.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=o[0].className,a=Ce()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(a),code:n}}if(void 0===a)return{lineClassNames:{},code:n};const l=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Ze(["js","jsBlock"],t);case"jsx":case"tsx":return Ze(["js","jsBlock","jsx"],t);case"html":return Ze(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Ze(["bash"],t);case"markdown":case"md":return Ze(["html","jsx","bash"],t);default:return Ze(Object.keys(we),t)}}(a,o),c=n.split("\n"),s=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.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},`:d[t]?s[d[t]].start=p:m[t]&&(s[m[t]].range+=`${s[m[t]].start}-${p-1},`),c.splice(p,1)}n=c.join("\n");const u={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;Ce()(n).forEach((e=>{u[e]??=[],u[e].push(t)}))})),{lineClassNames:u,code:n}}const Be="codeBlockContainer_Ckt0";function Oe(e){let{as:t,...n}=e;const o=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[a,o]=e;const r=t[a];r&&"string"==typeof o&&(n[r]=o)})),n}(Ne());return a.createElement(t,(0,u.Z)({},n,{style:o,className:(0,d.Z)(n.className,Be,y.k.common.codeBlock)}))}const Ae={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function je(e){let{children:t,className:n}=e;return a.createElement(Oe,{as:"pre",tabIndex:0,className:(0,d.Z)(Ae.codeBlockStandalone,"thin-scrollbar",n)},a.createElement("code",{className:Ae.codeBlockLines},t))}const He={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Se(e,t){const[n,o]=(0,a.useState)(),l=(0,a.useCallback)((()=>{var t;o(null==(t=e.current)?void 0:t.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,a.useEffect)((()=>{l()}),[l]),function(e,t,n){void 0===n&&(n=He);const o=(0,r.zX)(t),l=(0,r.Ql)(n);(0,a.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,l),()=>t.disconnect()}),[e,o,l])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),l())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const Me={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 Pe={Prism:n(7410).Z,theme:Me};function Ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ue(){return Ue=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Ue.apply(this,arguments)}var ze=/\r\n|\r|\n/,Ve=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)},De=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},Re=function(e,t){var n=e.plain,a=Object.create(null),o=e.styles.reduce((function(e,n){var a=n.languages,o=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=Ue({},e[t],o);e[t]=n})),e}),a);return o.root=n,o.plain=Ue({},n,{backgroundColor:null}),o};function $e(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}const We=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),Ie(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?Re(e.theme,e.language):void 0;return t.themeDict=n})),Ie(this,"getLineProps",(function(e){var n=e.key,a=e.className,o=e.style,r=Ue({},$e(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!==o&&(r.style=void 0!==r.style?Ue({},r.style,o):o),void 0!==n&&(r.key=n),a&&(r.className+=" "+a),r})),Ie(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,o=n.length,r=t.getThemeDict(t.props);if(void 0!==r){if(1===o&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===o&&!a)return r[n[0]];var l=a?{display:"inline-block"}:{},c=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[l].concat(c))}})),Ie(this,"getTokenProps",(function(e){var n=e.key,a=e.className,o=e.style,r=e.token,l=Ue({},$e(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:t.getStyleForToken(r),key:void 0});return void 0!==o&&(l.style=void 0!==l.style?Ue({},l.style,o):o),void 0!==n&&(l.key=n),a&&(l.className+=" "+a),l})),Ie(this,"tokenize",(function(e,t,n,a){var o={code:t,grammar:n,language:a,tokens:[]};e.hooks.run("before-tokenize",o);var r=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),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,a=e.code,o=e.children,r=this.getThemeDict(this.props),l=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],a=[0],o=[e.length],r=0,l=0,c=[],s=[c];l>-1;){for(;(r=a[l]++)<o[l];){var i=void 0,d=t[l],m=n[l][r];if("string"==typeof m?(d=l>0?d:["plain"],i=m):(d=De(d,m.type),m.alias&&(d=De(d,m.alias)),i=m.content),"string"==typeof i){var u=i.split(ze),p=u.length;c.push({types:d,content:u[0]});for(var f=1;f<p;f++)Ve(c),s.push(c=[]),c.push({types:d,content:u[f]})}else l++,t.push(d),n.push(i),a.push(0),o.push(i.length)}l--,t.pop(),n.pop(),a.pop(),o.pop()}return Ve(c),s}(void 0!==l?this.tokenize(t,a,l,n):[a]),className:"prism-code language-"+n,style:void 0!==r?r.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(a.Component),Fe="codeLine_lJS_",qe="codeLineNumber_Tfdd",Ge="codeLineContent_feaV";function Ye(e){let{line:t,classNames:n,showLineNumbers:o,getLineProps:r,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=r({line:t,className:(0,d.Z)(n,o&&Fe)}),s=t.map(((e,t)=>a.createElement("span",(0,u.Z)({key:t},l({token:e,key:t})))));return a.createElement("span",c,o?a.createElement(a.Fragment,null,a.createElement("span",{className:qe}),a.createElement("span",{className:Ge},s)):s,a.createElement("br",null))}const Je={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function Qe(e){let{code:t,className:n}=e;const[o,r]=(0,a.useState)(!1),l=(0,a.useRef)(void 0),c=(0,a.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const a=document.createElement("textarea"),o=document.activeElement;a.value=e,a.setAttribute("readonly",""),a.style.contain="strict",a.style.position="absolute",a.style.left="-9999px",a.style.fontSize="12pt";const r=document.getSelection(),l=r.rangeCount>0&&r.getRangeAt(0);n.append(a),a.select(),a.selectionStart=0,a.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch{}a.remove(),l&&(r.removeAllRanges(),r.addRange(l)),o&&o.focus()}(t),r(!0),l.current=window.setTimeout((()=>{r(!1)}),1e3)}),[t]);return(0,a.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),a.createElement("button",{type:"button","aria-label":o?(0,p.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,p.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,p.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,d.Z)("clean-btn",n,Je.copyButton,o&&Je.copyButtonCopied),onClick:c},a.createElement("span",{className:Je.copyButtonIcons,"aria-hidden":"true"},a.createElement("svg",{className:Je.copyButtonIcon,viewBox:"0 0 24 24"},a.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"})),a.createElement("svg",{className:Je.copyButtonSuccessIcon,viewBox:"0 0 24 24"},a.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const Xe="wordWrapButtonIcon_Bwma",Ke="wordWrapButtonEnabled_EoeP";function et(e){let{className:t,onClick:n,isEnabled:o}=e;const r=(0,p.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return a.createElement("button",{type:"button",onClick:n,className:(0,d.Z)("clean-btn",t,o&&Ke),"aria-label":r,title:r},a.createElement("svg",{className:Xe,viewBox:"0 0 24 24","aria-hidden":"true"},a.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 tt(e){let{children:t,className:n="",metastring:o,title:r,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:s,magicComments:i}}=(0,q.L)(),m=c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return null==t?void 0:t.replace(/language-/,"")}(n)??s,p=Ne(),f=function(){const[e,t]=(0,a.useState)(!1),[n,o]=(0,a.useState)(!1),r=(0,a.useRef)(null),l=(0,a.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,a.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");o(n)}),[r]);return Se(r,c),(0,a.useEffect)((()=>{c()}),[e,c]),(0,a.useEffect)((()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)})),[c]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:l}}(),h=function(e){var t;return(null==e||null==(t=e.match(Te))?void 0:t.groups.title)??""}(o)||r,{lineClassNames:g,code:v}=xe(t,{metastring:o,language:m,magicComments:i}),b=l??function(e){return Boolean(null==e?void 0:e.includes("showLineNumbers"))}(o);return a.createElement(Oe,{as:"div",className:(0,d.Z)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`)},h&&a.createElement("div",{className:Ae.codeBlockTitle},h),a.createElement("div",{className:Ae.codeBlockContent},a.createElement(We,(0,u.Z)({},Pe,{theme:p,code:v,language:m??"text"}),(e=>{let{className:t,tokens:n,getLineProps:o,getTokenProps:r}=e;return a.createElement("pre",{tabIndex:0,ref:f.codeBlockRef,className:(0,d.Z)(t,Ae.codeBlock,"thin-scrollbar")},a.createElement("code",{className:(0,d.Z)(Ae.codeBlockLines,b&&Ae.codeBlockLinesWithNumbering)},n.map(((e,t)=>a.createElement(Ye,{key:t,line:e,getLineProps:o,getTokenProps:r,classNames:g[t],showLineNumbers:b})))))})),a.createElement("div",{className:Ae.buttonGroup},(f.isEnabled||f.isCodeScrollable)&&a.createElement(et,{className:Ae.codeButton,onClick:()=>f.toggle(),isEnabled:f.isEnabled}),a.createElement(Qe,{className:Ae.codeButton,code:v}))))}function nt(e){let{children:t,...n}=e;const o=(0,ye.Z)(),r=function(e){return a.Children.toArray(e).some((e=>(0,a.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof r?tt:je;return a.createElement(l,(0,u.Z)({key:String(o)},n),r)}const at="details_lb9f",ot="isBrowser_bmU9",rt="collapsibleContent_i85q";function lt(e){return!!e&&("SUMMARY"===e.tagName||lt(e.parentElement))}function ct(e,t){return!!e&&(e===t||ct(e.parentElement,t))}function st(e){let{summary:t,children:n,...o}=e;const r=(0,ye.Z)(),l=(0,a.useRef)(null),{collapsed:c,setCollapsed:s}=(0,F.u)({initialState:!o.open}),[i,m]=(0,a.useState)(o.open),p=a.isValidElement(t)?t:a.createElement("summary",null,t??"Details");return a.createElement("details",(0,u.Z)({},o,{ref:l,open:i,"data-collapsed":c,className:(0,d.Z)(at,r&&ot,o.className),onMouseDown:e=>{lt(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;lt(t)&&ct(t,l.current)&&(e.preventDefault(),c?(s(!1),m(!0)):s(!0))}}),p,a.createElement(F.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{s(e),m(!e)}},a.createElement("div",{className:rt},n)))}const it="details_b_Ee";function dt(e){let{...t}=e;return a.createElement(st,(0,u.Z)({},t,{className:(0,d.Z)("alert alert--info",it,t.className)}))}function mt(e){return a.createElement(ve,e)}const ut="containsTaskList_mC6p";const pt="img_ev3q";const ft="admonition_LlT9",ht="admonitionHeading_tbUL",gt="admonitionIcon_kALy",vt="admonitionContent_S0QG";const bt={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(p.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(p.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(p.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(p.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(p.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},Et={secondary:"note",important:"info",success:"tip",warning:"danger"};function yt(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=a.Children.toArray(e),n=t.find((e=>{var t;return a.isValidElement(e)&&"mdxAdmonitionTitle"===(null==(t=e.props)?void 0:t.mdxType)})),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:o}}(e.children);return{...e,title:e.title??t,children:n}}const kt={head:function(e){const t=a.Children.map(e.children,(e=>a.isValidElement(e)?function(e){var t;if(null!=(t=e.props)&&t.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...o}=e.props;return a.createElement(e.props.originalType,o)}return e}(e):e));return a.createElement(Ee.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return a.Children.toArray(e.children).every((e=>{var n;return"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&t.includes(null==(n=e.props)?void 0:n.mdxType)}))?a.createElement("code",e):a.createElement(nt,e)},a:function(e){return a.createElement(f.Z,e)},pre:function(e){var t;return a.createElement(nt,(0,a.isValidElement)(e.children)&&"code"===(null==(t=e.children.props)?void 0:t.originalType)?e.children.props:{...e})},details:function(e){const t=a.Children.toArray(e.children),n=t.find((e=>{var t;return a.isValidElement(e)&&"summary"===(null==(t=e.props)?void 0:t.mdxType)})),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return a.createElement(dt,(0,u.Z)({},e,{summary:n}),o)},ul:function(e){return a.createElement("ul",(0,u.Z)({},e,{className:(t=e.className,(0,d.Z)(t,(null==t?void 0:t.includes("contains-task-list"))&&ut))}));var t},img:function(e){return a.createElement("img",(0,u.Z)({loading:"lazy"},e,{className:(t=e.className,(0,d.Z)(t,pt))}));var t},h1:e=>a.createElement(mt,(0,u.Z)({as:"h1"},e)),h2:e=>a.createElement(mt,(0,u.Z)({as:"h2"},e)),h3:e=>a.createElement(mt,(0,u.Z)({as:"h3"},e)),h4:e=>a.createElement(mt,(0,u.Z)({as:"h4"},e)),h5:e=>a.createElement(mt,(0,u.Z)({as:"h5"},e)),h6:e=>a.createElement(mt,(0,u.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:o,icon:r}=yt(e),l=function(e){const t=Et[e]??e;return bt[t]||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),bt.info)}(n),c=o??l.label,{iconComponent:s}=l,i=r??a.createElement(s,null);return a.createElement("div",{className:(0,d.Z)(y.k.common.admonition,y.k.common.admonitionType(e.type),"alert",`alert--${l.infimaClassName}`,ft)},a.createElement("div",{className:ht},a.createElement("span",{className:gt},i),c),a.createElement("div",{className:vt},t))},mermaid:()=>null};function Nt(e){let{children:t}=e;return a.createElement(be.Zo,{components:kt},t)}function Lt(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=s();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(y.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(ve,{as:"h1"},n)),a.createElement(Nt,null,t))}var Ct=n(3438),Tt=n(8596),_t=n(4996);function wt(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 Zt="breadcrumbHomeIcon_YNFT";function xt(){const e=(0,_t.Z)("/");return a.createElement("li",{className:"breadcrumbs__item"},a.createElement(f.Z,{"aria-label":(0,p.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},a.createElement(wt,{className:Zt})))}const Bt="breadcrumbsContainer_Z_bl";function Ot(e){let{children:t,href:n,isLast:o}=e;const r="breadcrumbs__link";return o?a.createElement("span",{className:r,itemProp:"name"},t):n?a.createElement(f.Z,{className:r,href:n,itemProp:"item"},a.createElement("span",{itemProp:"name"},t)):a.createElement("span",{className:r},t)}function At(e){let{children:t,active:n,index:o,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(o+1)}))}function jt(){const e=(0,Ct.s1)(),t=(0,Tt.Ns)();return e?a.createElement("nav",{className:(0,d.Z)(y.k.docs.docBreadcrumbs,Bt),"aria-label":(0,p.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(xt,null),e.map(((t,n)=>{const o=n===e.length-1;return a.createElement(At,{key:n,active:o,index:n,addMicrodata:!!t.href},a.createElement(Ot,{href:t.href,isLast:o},t.label))})))):null}const Ht="docItemContainer_Djhp",St="docItemCol_VOVn";function Mt(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=s(),n=(0,m.i)(),o=e.hide_table_of_contents,r=!o&&t.length>0;return{hidden:o,mobile:r?a.createElement(me,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(fe,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&St)},a.createElement(w,null),a.createElement("div",{className:Ht},a.createElement("article",null,a.createElement(jt,null),a.createElement(Z,null),n.mobile,a.createElement(Lt,null,t),a.createElement(W,null)),a.createElement(v,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function Pt(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(c,{content:e.content},a.createElement(o.FG,{className:t},a.createElement(i,null),a.createElement(Mt,null,a.createElement(n,null))))}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>c,q:()=>l});var a=n(7294),o=n(902);const r=a.createContext(null);function l(e){let{children:t,version:n}=e;return a.createElement(r.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(r);if(null===e)throw new o.i6("DocsVersionProvider");return e}},7594:(e,t)=>{function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,o,r]=t;if(a&&r){a=parseInt(a),r=parseInt(r);const e=a<r?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(r+=e);for(let t=a;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/1a4e3797.2adc3808.js b/assets/js/1a4e3797.2adc3808.js new file mode 100644 index 0000000..b80c578 --- /dev/null +++ b/assets/js/1a4e3797.2adc3808.js @@ -0,0 +1,2 @@ +/*! For license information please see 1a4e3797.2adc3808.js.LICENSE.txt */ +(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[7920],{7331:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,a,s,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(a=this._events[e]))return!1;if(r(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),a.apply(this,c)}else if(n(a))for(c=Array.prototype.slice.call(arguments,1),s=(o=a.slice()).length,u=0;u<s;u++)o[u].apply(this,c);return!0},t.prototype.addListener=function(e,a){var s;if(!r(a))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,r(a.listener)?a.listener:a),this._events[e]?n(this._events[e])?this._events[e].push(a):this._events[e]=[this._events[e],a]:this._events[e]=a,n(this._events[e])&&!this._events[e].warned&&(s=i(this._maxListeners)?t.defaultMaxListeners:this._maxListeners)&&s>0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,a,s,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(i=this._events[e]).length,a=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=s;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){a=c;break}if(a<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},8131:(e,t,r)=>{"use strict";var n=r(9374),i=r(7775),a=r(3076);function s(e,t,r){return new n(e,t,r)}s.version=r(4336),s.AlgoliaSearchHelper=n,s.SearchParameters=i,s.SearchResults=a,e.exports=s},8078:(e,t,r)=>{"use strict";var n=r(7331);function i(e,t){this.main=e,this.fn=t,this.lastResults=null}r(4853)(i,n),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=i},2437:(e,t,r)=>{"use strict";var n=r(2344),i=r(9803),a=r(116),s={addRefinement:function(e,t,r){if(s.isRefined(e,t,r))return e;var i=""+r,a=e[t]?e[t].concat(i):[i],c={};return c[t]=a,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return s.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return s.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return s.isRefined(e,t,r)?s.removeRefinement(e,t,r):s.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return a(e)?{}:e;if("string"==typeof t)return i(e,[t]);if("function"==typeof t){var n=!1,s=Object.keys(e).reduce((function(i,a){var s=e[a]||[],c=s.filter((function(e){return!t(e,a,r)}));return c.length!==s.length&&(n=!0),i[a]=c,i}),{});return n?s:e}},isRefined:function(e,t,r){var n=!!e[t]&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=s},7775:(e,t,r)=>{"use strict";var n=r(185),i=r(2344),a=r(2686),s=r(7888),c=r(8023),u=r(9803),o=r(116),h=r(6801),f=r(2437);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return n({},e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&o(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):o(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=c(r);if(this.isNumericRefined(e,t,i))return this;var a=n({},this.numericRefinements);return a[e]=n({},a[e]),a[e][t]?(a[e][t]=a[e][t].slice(),a[e][t].push(i)):a[e][t]=[i],this.setQueryParameters({numericRefinements:a})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){return void 0!==r?this.isNumericRefined(e,t,r)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(n,i){return i===e&&n.op===t&&l(n.val,c(r))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return o(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var a=r[i],s={};return a=a||{},Object.keys(a).forEach((function(r){var n=a[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),s[r]=c})),n[i]=s,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return!!this.numericRefinements[e];var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var i,a,u=c(r),o=void 0!==(i=this.numericRefinements[e][t],a=u,s(i,(function(e){return l(e,a)})));return n&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=a(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets())},getRefinedHierarchicalFacets:function(){var e=this;return a(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0})))},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),a=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?u(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(a)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return s(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},210:(e,t,r)=>{"use strict";e.exports=function(e){return function(t,r){var s=e.hierarchicalFacets[r],o=e.hierarchicalFacetsRefinements[s.name]&&e.hierarchicalFacetsRefinements[s.name][0]||"",h=e._getHierarchicalFacetSeparator(s),f=e._getHierarchicalRootPath(s),l=e._getHierarchicalShowParentLevel(s),m=a(e._getHierarchicalFacetSortBy(s)),d=t.every((function(e){return e.exhaustive})),p=function(e,t,r,a,s){return function(o,h,f){var l=o;if(f>0){var m=0;for(l=o;m<f;){var d=l&&Array.isArray(l.data)?l.data:[];l=i(d,(function(e){return e.isRefined})),m++}}if(l){var p=Object.keys(h.data).map((function(e){return[e,h.data[e]]})).filter((function(e){return function(e,t,r,n,i,a){if(i&&(0!==e.indexOf(i)||i===e))return!1;return!i&&-1===e.indexOf(n)||i&&e.split(n).length-i.split(n).length==1||-1===e.indexOf(n)&&-1===r.indexOf(n)||0===r.indexOf(e)||0===e.indexOf(t+n)&&(a||0===e.indexOf(r))}(e[0],l.path||r,s,t,r,a)}));l.data=n(p.map((function(e){var r=e[0];return function(e,t,r,n,i){var a=t.split(r);return{name:a[a.length-1].trim(),path:t,escapedValue:c(t),count:e,isRefined:n===t||0===n.indexOf(t+r),exhaustive:i,data:null}}(e[1],r,t,u(s),h.exhaustive)})),e[0],e[1])}return o}}(m,h,f,l,o),v=t;return f&&(v=t.slice(f.split(h).length)),v.reduce(p,{name:e.hierarchicalFacets[r].name,count:null,isRefined:!0,path:null,escapedValue:null,exhaustive:d,data:null})}};var n=r(2148),i=r(7888),a=r(2293),s=r(4039),c=s.escapeFacetValue,u=s.unescapeFacetValue},3076:(e,t,r)=>{"use strict";var n=r(185),i=r(2344),a=r(2148),s=r(4587),c=r(7888),u=r(9725),o=r(2293),h=r(4039),f=h.escapeFacetValue,l=h.unescapeFacetValue,m=r(210);function d(e){var t={};return e.forEach((function(e,r){t[e]=r})),t}function p(e,t,r){t&&t[r]&&(e.stats=t[r])}function v(e,t,r){var a=t[0];this._rawResults=t;var o=this;Object.keys(a).forEach((function(e){o[e]=a[e]})),Object.keys(r||{}).forEach((function(e){o[e]=r[e]})),this.processingTimeMS=t.reduce((function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS}),0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map((function(){return[]})),this.facets=[];var h=e.getRefinedDisjunctiveFacets(),f=d(e.facets),v=d(e.disjunctiveFacets),g=1,y=a.facets||{};Object.keys(y).forEach((function(t){var r,n,i=y[t],s=(r=e.hierarchicalFacets,n=t,c(r,(function(e){return(e.attributes||[]).indexOf(n)>-1})));if(s){var h=s.attributes.indexOf(t),l=u(e.hierarchicalFacets,(function(e){return e.name===s.name}));o.hierarchicalFacets[l][h]={attribute:t,data:i,exhaustive:a.exhaustiveFacetsCount}}else{var m,d=-1!==e.disjunctiveFacets.indexOf(t),g=-1!==e.facets.indexOf(t);d&&(m=v[t],o.disjunctiveFacets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},p(o.disjunctiveFacets[m],a.facets_stats,t)),g&&(m=f[t],o.facets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},p(o.facets[m],a.facets_stats,t))}})),this.hierarchicalFacets=s(this.hierarchicalFacets),h.forEach((function(r){var s=t[g],c=s&&s.facets?s.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(c).forEach((function(t){var r,f=c[t];if(h){r=u(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=u(o.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===m)return;o.hierarchicalFacets[r][m].data=n({},o.hierarchicalFacets[r][m].data,f)}else{r=v[t];var d=a.facets&&a.facets[t]||{};o.disjunctiveFacets[r]={name:t,data:i({},f,d),exhaustive:s.exhaustiveFacetsCount},p(o.disjunctiveFacets[r],s.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(n){!o.disjunctiveFacets[r].data[n]&&e.disjunctiveFacetsRefinements[t].indexOf(l(n))>-1&&(o.disjunctiveFacets[r].data[n]=0)}))}})),g++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),a=e._getHierarchicalFacetSeparator(n),s=e.getHierarchicalRefinement(r);0===s.length||s[0].split(a).length<2||t.slice(g).forEach((function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach((function(t){var c=r[t],h=u(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=u(o.hierarchicalFacets[h],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(s.length>0){var m=s[0].split(a)[0];l[m]=o.hierarchicalFacets[h][f].data[m]}o.hierarchicalFacets[h][f].data=i(l,c,o.hierarchicalFacets[h][f].data)}})),g++}))})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],n=f[t];o.facets[n]={name:t,data:a.facets[t],exhaustive:a.exhaustiveFacetsCount},r.forEach((function(e){o.facets[n]=o.facets[n]||{name:t},o.facets[n].data=o.facets[n].data||{},o.facets[n].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=s(this.facets),this.disjunctiveFacets=s(this.disjunctiveFacets),this._state=e}function g(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=c(e.facets,r);return n?Object.keys(n.data).map((function(r){var i=f(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isFacetRefined(t,i),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=c(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){var n=f(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,n)}})):[]}if(e._state.isHierarchicalFacet(t)){var a=c(e.hierarchicalFacets,r);if(!a)return a;var s=e._state.getHierarchicalFacetByName(t),u=l(e._state.getHierarchicalRefinement(t)[0]||"").split(e._state._getHierarchicalFacetSeparator(s));return u.unshift(t),y(a,u,0),a}}function y(e,t,r){e.isRefined=e.name===t[r],e.data&&e.data.forEach((function(e){y(e,t,r+1)}))}function R(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var a=t.data.map((function(t){return R(e,t,r,n+1)})),s=e(a,r[n]);return i({data:s},t)}function F(e,t){var r=c(e,(function(e){return e.name===t}));return r&&r.stats}function b(e,t,r,n,i){var a=c(i,(function(e){return e.name===r})),s=a&&a.data&&a.data[n]?a.data[n]:0,u=a&&a.exhaustive||!1;return{type:t,attributeName:r,name:n,count:s,exhaustive:u}}v.prototype.getFacetByName=function(e){function t(t){return t.name===e}return c(this.facets,t)||c(this.disjunctiveFacets,t)||c(this.hierarchicalFacets,t)},v.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],v.prototype.getFacetValues=function(e,t){var r=g(this,e);if(r){var n,s=i({},t,{sortBy:v.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),c=this;if(Array.isArray(r))n=[e];else n=c._state.getHierarchicalFacetByName(r.name).attributes;return R((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(c,t);if(Boolean(r))return function(e,t){var r=[],n=[],i=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==i[t]?r[i[t]]=e:n.push(e)})),r=r.filter((function(e){return e}));var s,c=t.sortRemainingBy;return"hidden"===c?r:(s="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(a(n,s[0],s[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=o(s.sortBy,v.DEFAULT_SORT);return a(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},v.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},v.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(b(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(b(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(b(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),a=e._getHierarchicalFacetSeparator(i),s=r.split(a),u=c(n,(function(e){return e.name===t})),o=s.reduce((function(e,t){var r=e&&c(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,f=o&&o.exhaustive||!1,l=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=v},9374:(e,t,r)=>{"use strict";var n=r(7775),i=r(3076),a=r(8078),s=r(6394),c=r(7331),u=r(4853),o=r(116),h=r(9803),f=r(185),l=r(4336),m=r(4039).escapeFacetValue;function d(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.setClient(e);var i=r||{};i.index=t,this.state=n.make(i),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function p(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function v(){return this.state.page}u(d,c),d.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},d.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},d.prototype.getQuery=function(){var e=this.state;return s._getHitsSearchParams(e)},d.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=s._getQueries(r.index,r),a=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),{content:new i(r,e.results),state:r,_originalResponse:e}}),(function(e){throw a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(null,new i(r,e.results),r)})).catch((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(e,null,r)}))},d.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=f({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:h(s._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),a="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(a);var c=this.client.initIndex(n.index);if("function"!=typeof c.findAnswers)throw new Error(a);return c.findAnswers(n.query,e.queryLanguages,i)},d.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues,a="function"==typeof this.client.initIndex;if(!i&&!a&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(n||{}),u=c.isDisjunctiveFacet(e),o=s.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var h,f=this;return i?h=this.client.searchForFacetValues([{indexName:c.index,params:o}]):a?h=this.client.initIndex(c.index).searchForFacetValues(o):(delete o.facetName,h=this.client.search([{type:"facet",facet:e,indexName:c.index,params:o}]).then((function(e){return e.results[0]}))),this.emit("searchForFacetValues",{state:c,facet:e,query:t}),h.then((function(t){return f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.escapedValue=m(t.value),t.isRefined=u?c.isDisjunctiveFacetRefined(e,t.escapedValue):c.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),e}))},d.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},d.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},d.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},d.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},d.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},d.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},d.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},d.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},d.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},d.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},d.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},d.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},d.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},d.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},d.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},d.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},d.prototype.setCurrentPage=p,d.prototype.setPage=p,d.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},d.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},d.prototype.setState=function(e){return this._change({state:n.make(e),isPageReset:!1}),this},d.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new n(e),this},d.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},d.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},d.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},d.prototype.hasTag=function(e){return this.state.isTagRefined(e)},d.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},d.prototype.getIndex=function(){return this.state.index},d.prototype.getCurrentPage=v,d.prototype.getPage=v,d.prototype.getTags=function(){return this.state.tagRefinements},d.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},d.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},d.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},d.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=s._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=s._getQueries(n.index,n);return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),a=Array.prototype.concat.apply(n,i),c=this._queryId++;this._currentNbQueries++;try{this.client.search(a).then(this._dispatchAlgoliaResponse.bind(this,r,c)).catch(this._dispatchAlgoliaError.bind(this,c))}catch(u){this.emit("error",{error:u})}},d.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t<this._lastQueryIdReceived)){this._currentNbQueries-=t-this._lastQueryIdReceived,this._lastQueryIdReceived=t,0===this._currentNbQueries&&this.emit("searchQueueEmpty");var n=r.results.slice();e.forEach((function(e){var t=e.state,r=e.queriesCount,a=e.helper,s=n.splice(0,r),c=a.lastResults=new i(t,s);a.emit("result",{results:c,state:t})}))}},d.prototype._dispatchAlgoliaError=function(e,t){e<this._lastQueryIdReceived||(this._currentNbQueries-=e-this._lastQueryIdReceived,this._lastQueryIdReceived=e,this.emit("error",{error:t}),0===this._currentNbQueries&&this.emit("searchQueueEmpty"))},d.prototype.containsRefinement=function(e,t,r,n){return e||0!==t.length||0!==r.length||0!==n.length},d.prototype._hasDisjunctiveRefinements=function(e){return this.state.disjunctiveRefinements[e]&&this.state.disjunctiveRefinements[e].length>0},d.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},d.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},d.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.client=e),this},d.prototype.getClient=function(){return this.client},d.prototype.derive=function(e){var t=new a(this,e);return this.derivedHelpers.push(t),t},d.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},d.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=d},4587:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},2344:e=>{"use strict";e.exports=function(){var e=Array.prototype.slice.call(arguments);return e.reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},4039:e=>{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},7888:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r<e.length;r++)if(t(e[r]))return e[r]}},9725:e=>{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r<e.length;r++)if(t(e[r]))return r;return-1}},2293:(e,t,r)=>{"use strict";var n=r(7888);e.exports=function(e,t){var r=(t||[]).map((function(e){return e.split(":")}));return e.reduce((function(e,t){var i=t.split(":"),a=n(r,(function(e){return e[0]===i[0]}));return i.length>1||!a?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(a[0]),e[1].push(a[1]),e)}),[[],[]])}},4853:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},2686:e=>{"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},185:e=>{"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)&&"__proto__"!==i&&"constructor"!==i){var a=n[i],s=e[i];void 0!==s&&void 0===a||(t(s)&&t(a)?e[i]=r(s,a):e[i]="object"==typeof(c=a)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n<i;n++){var a=arguments[n];t(a)&&r(e,a)}return e}},116:e=>{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},9803:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}},2148:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,a=null===t;if(!a&&e>t||n&&i||!r)return 1;if(!n&&e<t||a&&r||!i)return-1}return 0}e.exports=function(e,r,n){if(!Array.isArray(e))return[];Array.isArray(n)||(n=[]);var i=e.map((function(e,t){return{criteria:r.map((function(t){return e[t]})),index:t,value:e}}));return i.sort((function(e,r){for(var i=-1;++i<e.criteria.length;){var a=t(e.criteria[i],r.criteria[i]);if(a)return i>=n.length?a:"desc"===n[i]?-a:a}return e.index-r.index})),i.map((function(e){return e.value}))}},8023:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},6394:(e,t,r)=>{"use strict";var n=r(185);function i(e){return Object.keys(e).sort((function(e,t){return e.localeCompare(t)})).reduce((function(t,r){return t[r]=e[r],t}),{})}var a={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:a._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:a._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var i=t.getHierarchicalFacetByName(n),s=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(i);if(s.length>0&&s[0].split(c).length>1){var u=s[0].split(c).slice(0,-1).reduce((function(e,t,r){return e.concat({attribute:i.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})}),[]);u.forEach((function(n,s){var c=a._getDisjunctiveFacetSearchParams(t,n.attribute,0===s);function o(e){return i.attributes.some((function(t){return t===e.split(":")[0]}))}var h=(c.facetFilters||[]).reduce((function(e,t){if(Array.isArray(t)){var r=t.filter((function(e){return!o(e)}));r.length>0&&e.push(r)}return"string"!=typeof t||o(t)||e.push(t),e}),[]),f=u[s-1];c.facetFilters=s>0?h.concat(f.attribute+":"+f.value):h.length>0?h:void 0,r.push({indexName:e,params:c})}))}})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(a._getHitsHierarchicalFacetsAttributes(e)),r=a._getFacetFilters(e),s=a._getNumericFilters(e),c=a._getTagFilters(e),u={facets:t.indexOf("*")>-1?["*"]:t,tagFilters:c};return r.length>0&&(u.facetFilters=r),s.length>0&&(u.numericFilters=s),i(n({},e.getQueryParams(),u))},_getDisjunctiveFacetSearchParams:function(e,t,r){var s=a._getFacetFilters(e,t,r),c=a._getNumericFilters(e,t),u=a._getTagFilters(e),o={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};u.length>0&&(o.tagFilters=u);var h=e.getHierarchicalFacetByName(t);return o.facets=h?a._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(o.numericFilters=c),s.length>0&&(o.facetFilters=s),i(n({},e.getQueryParams(),o))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var a=i[e]||[];t!==n&&a.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).forEach((function(e){(i[e]||[]).forEach((function(t){n.push(e+":"+t)}))}));var a=e.facetsExcludes||{};Object.keys(a).forEach((function(e){(a[e]||[]).forEach((function(t){n.push(e+":-"+t)}))}));var s=e.disjunctiveFacetsRefinements||{};Object.keys(s).forEach((function(e){var r=s[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).forEach((function(i){var a=(c[i]||[])[0];if(void 0!==a){var s,u,o=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(o),f=e._getHierarchicalRootPath(o);if(t===i){if(-1===a.indexOf(h)||!f&&!0===r||f&&f.split(h).length===a.split(h).length)return;f?(u=f.split(h).length-1,a=f):(u=a.split(h).length-2,a=a.slice(0,a.lastIndexOf(h))),s=o.attributes[u]}else u=a.split(h).length-1,s=o.attributes[u];s&&n.push([s+":"+a])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),a=n.split(i).length,s=r.attributes.slice(0,a+1);return t.concat(s)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),a=0;return i&&(a=i.split(n).length),[t.attributes[a]]}var s=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,s+1)},getSearchForFacetQuery:function(e,t,r,s){var c=s.isDisjunctiveFacet(e)?s.clearRefinements(e):s,u={facetQuery:t,facetName:e};return"number"==typeof r&&(u.maxFacetHits=r),i(n({},a._getHitsSearchParams(c),u))}};e.exports=a},6801:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},4336:e=>{"use strict";e.exports="3.12.0"},290:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?t(Object(i),!0).forEach((function(t){e(r,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))}))}return r}function n(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(n=(s=c.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw a}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function s(e){var t,r="algoliasearch-client-js-".concat(e.key),n=function(){return void 0===t&&(t=e.localStorage||window.localStorage),t},a=function(){return JSON.parse(n().getItem(r)||"{}")};return{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=i(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=a();return i[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var s=n(),c=i&&i.miss||function(){return Promise.resolve()};return s.then((function(e){return c(e)})).then((function(){return s}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function o(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var i=0;return e.replace(/%s/g,(function(){return encodeURIComponent(r[i++])}))}var l={WithinQueryParameters:0,WithinHeaders:1};function m(e,t){var r=e||{},n=r.data||{};return Object.keys(r).forEach((function(e){-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},p=1,v=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function P(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function j(e,t,n,i){var s=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),u=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),o=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,a){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:w(s)};var m={data:c,headers:u,method:o,url:E(h,n.path,f),connectTimeout:a(l,e.timeouts.connect),responseTimeout:a(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return s.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",O(i)),e.hostsCache.set(h,y(h,n.isTimedOut?g:v))]).then((function(){return t(r,a)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,w(s))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return P(e.hostsCache,t).then((function(e){return m(a(e.statelessHosts).reverse(),e.getTimeout)}))}function _(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function E(e,t,r){var n=x(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function x(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function w(e){return e.map((function(e){return O(e)}))}function O(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,s=e.responsesCache,c=e.timeouts,u=e.userAgent,o=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:s,timeouts:c,userAgent:u,headers:e.headers,queryParameters:h,hosts:o.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(o([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},A=function(e){return function(t,r){return t.method===F?e.transporter.read(t,r):e.transporter.write(t,r)}},H=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},S=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:x(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},T=function(e){return function(t,i){return Promise.all(t.map((function(t){var a=t.params,s=a.facetName,c=a.facetQuery,u=n(a,["facetName","facetQuery"]);return H(e)(t.indexName,{methods:{searchForFacetValues:k}}).searchForFacetValues(s,c,r(r({},i),u))})))}},Q=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},C=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},k=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,I=2,q=3;function V(e,t,n){var i,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=q,{debug:function(e,t){return D>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return I>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:c({caches:[s({key:"".concat("4.17.0","-").concat(e)}),u()]}),userAgent:_("4.17.0").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:S,searchForFacetValues:T,multipleQueries:S,multipleSearchForFacetValues:T,customRequest:A,initIndex:function(e){return function(t){return H(e)(t,{methods:{search:C,searchForFacetValues:k,findAnswers:Q}})}}}}))}return V.version="4.17.0",V}()},6675:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>z});var n=r(7294),i=r(6010),a=r(8131),s=r.n(a),c=r(290),u=r.n(c),o=r(412),h=r(5742),f=r(9960),l=r(143),m=r(2263);const d=["zero","one","two","few","many","other"];function p(e){return d.filter((t=>e.includes(t)))}const v={locale:"en",pluralForms:p(["one","other"]),select:e=>1===e?"one":"other"};function g(){const{i18n:{currentLocale:e}}=(0,m.Z)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:p(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`),v}}),[e])}function y(){const e=g();return{selectMessage:(t,r)=>function(e,t,r){const n=e.split("|");if(1===n.length)return n[0];n.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${n.length}: ${e}`);const i=r.select(t),a=r.pluralForms.indexOf(i);return n[Math.min(a,n.length-1)]}(r,t,e)}}var R=r(6177),F=r(902),b=r(833),P=r(2128),j=r(5999),_=r(6278),E=r(239),x=r(7452);const w="searchQueryInput_u2C7",O="searchVersionInput_m0Ui",N="searchResultsColumn_JPFH",A="algoliaLogo_rT1R",H="algoliaLogoPathFill_WdUC",S="searchResultItem_Tv2o",T="searchResultItemHeading_KbCB",Q="searchResultItemPath_lhe1",C="searchResultItemSummary_AEaO",k="searchQueryColumn_RTkw",D="searchVersionColumn_ypXd",I="searchLogoColumn_rJIA",q="loadingSpinner_XVxU",V="loader_vvXV";function L(e){let{docsSearchVersionsHelpers:t}=e;const r=Object.entries(t.allDocsData).filter((e=>{let[,t]=e;return t.versions.length>1}));return n.createElement("div",{className:(0,i.Z)("col","col--3","padding-left--none",D)},r.map((e=>{let[i,a]=e;const s=r.length>1?`${i}: `:"";return n.createElement("select",{key:i,onChange:e=>t.setSearchVersion(i,e.target.value),defaultValue:t.searchVersions[i],className:O},a.versions.map(((e,t)=>n.createElement("option",{key:t,label:`${s}${e.label}`,value:e.name}))))})))}function B(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{algolia:{appId:t,apiKey:r,indexName:a}}=(0,_.L)(),c=(0,E.l)(),d=function(){const{selectMessage:e}=y();return t=>e(t,(0,j.I)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". 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 document found|{count} documents found"},{count:t}))}(),p=function(){const e=(0,l._r)(),[t,r]=(0,n.useState)((()=>Object.entries(e).reduce(((e,t)=>{let[r,n]=t;return{...e,[r]:n.versions[0].name}}),{}))),i=Object.values(e).some((e=>e.versions.length>1));return{allDocsData:e,versioningEnabled:i,searchVersions:t,setSearchVersion:(e,t)=>r((r=>({...r,[e]:t})))}}(),[v,g]=(0,R.K)(),b={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},[O,D]=(0,n.useReducer)(((e,t)=>{switch(t.type){case"reset":return b;case"loading":return{...e,loading:!0};case"update":return v!==t.value.query?e:{...t.value,items:0===t.value.lastPage?t.value.items:e.items.concat(t.value.items)};case"advance":{const t=e.totalPages>e.lastPage+1;return{...e,lastPage:t?e.lastPage+1:e.lastPage,hasMore:t}}default:return e}}),b),B=u()(t,r),z=s()(B,a,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});z.on("result",(e=>{let{results:{query:t,hits:r,page:n,nbHits:i,nbPages:a}}=e;if(""===t||!Array.isArray(r))return void D({type:"reset"});const s=e=>e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match"),u=r.map((e=>{let{url:t,_highlightResult:{hierarchy:r},_snippetResult:n={}}=e;const i=Object.keys(r).map((e=>s(r[e].value)));return{title:i.pop(),url:c(t),summary:n.content?`${s(n.content.value)}...`:"",breadcrumbs:i}}));D({type:"update",value:{items:u,query:t,totalResults:i,totalPages:a,lastPage:n,hasMore:a>n+1,loading:!1}})}));const[M,J]=(0,n.useState)(null),W=(0,n.useRef)(0),U=(0,n.useRef)(o.Z.canUseIntersectionObserver&&new IntersectionObserver((e=>{const{isIntersecting:t,boundingClientRect:{y:r}}=e[0];t&&W.current>r&&D({type:"advance"}),W.current=r}),{threshold:1})),Z=()=>v?(0,j.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:v}):(0,j.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"}),$=(0,F.zX)((function(t){void 0===t&&(t=0),z.addDisjunctiveFacetRefinement("docusaurus_tag","default"),z.addDisjunctiveFacetRefinement("language",e),Object.entries(p.searchVersions).forEach((e=>{let[t,r]=e;z.addDisjunctiveFacetRefinement("docusaurus_tag",`docs-${t}-${r}`)})),z.setQuery(v).setPage(t).search()}));return(0,n.useEffect)((()=>{if(!M)return;const e=U.current;return e?(e.observe(M),()=>e.unobserve(M)):()=>!0}),[M]),(0,n.useEffect)((()=>{D({type:"reset"}),v&&(D({type:"loading"}),setTimeout((()=>{$()}),300))}),[v,p.searchVersions,$]),(0,n.useEffect)((()=>{O.lastPage&&0!==O.lastPage&&$(O.lastPage)}),[$,O.lastPage]),n.createElement(x.Z,null,n.createElement(h.Z,null,n.createElement("title",null,(0,P.p)(Z())),n.createElement("meta",{property:"robots",content:"noindex, follow"})),n.createElement("div",{className:"container margin-vert--lg"},n.createElement("h1",null,Z()),n.createElement("form",{className:"row",onSubmit:e=>e.preventDefault()},n.createElement("div",{className:(0,i.Z)("col",k,{"col--9":p.versioningEnabled,"col--12":!p.versioningEnabled})},n.createElement("input",{type:"search",name:"q",className:w,placeholder:(0,j.I)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,j.I)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:e=>g(e.target.value),value:v,autoComplete:"off",autoFocus:!0})),p.versioningEnabled&&n.createElement(L,{docsSearchVersionsHelpers:p})),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,i.Z)("col","col--8",N)},!!O.totalResults&&d(O.totalResults)),n.createElement("div",{className:(0,i.Z)("col","col--4","text--right",I)},n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.algolia.com/","aria-label":(0,j.I)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"})},n.createElement("svg",{viewBox:"0 0 168 24",className:A},n.createElement("g",{fill:"none"},n.createElement("path",{className:H,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),n.createElement("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),n.createElement("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})))))),O.items.length>0?n.createElement("main",null,O.items.map(((e,t)=>{let{title:r,url:a,summary:s,breadcrumbs:c}=e;return n.createElement("article",{key:t,className:S},n.createElement("h2",{className:T},n.createElement(f.Z,{to:a,dangerouslySetInnerHTML:{__html:r}})),c.length>0&&n.createElement("nav",{"aria-label":"breadcrumbs"},n.createElement("ul",{className:(0,i.Z)("breadcrumbs",Q)},c.map(((e,t)=>n.createElement("li",{key:t,className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}}))))),s&&n.createElement("p",{className:C,dangerouslySetInnerHTML:{__html:s}}))}))):[v&&!O.loading&&n.createElement("p",{key:"no-results"},n.createElement(j.Z,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result"},"No results were found")),!!O.loading&&n.createElement("div",{key:"spinner",className:q})],O.hasMore&&n.createElement("div",{className:V,ref:J},n.createElement(j.Z,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results"},"Fetching new results..."))))}function z(){return n.createElement(b.FG,{className:"search-page-wrapper"},n.createElement(B,null))}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.2adc3808.js.LICENSE.txt b/assets/js/1a4e3797.2adc3808.js.LICENSE.txt new file mode 100644 index 0000000..137dcba --- /dev/null +++ b/assets/js/1a4e3797.2adc3808.js.LICENSE.txt @@ -0,0 +1 @@ +/*! algoliasearch-lite.umd.js | 4.17.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */ diff --git a/assets/js/1a4e3797.2e34777b.js b/assets/js/1a4e3797.2e34777b.js deleted file mode 100644 index 0ca7a5d..0000000 --- a/assets/js/1a4e3797.2e34777b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[7920],{2027:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Z});var a=n(7294),r=n(2263),l=n(179),s=n(5742),c=n(9960),o=n(5999),u=n(373);const m=["zero","one","two","few","many","other"];function i(e){return m.filter((t=>e.includes(t)))}const h={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function p(){const{i18n:{currentLocale:e}}=(0,r.Z)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(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`),h}}),[e])}function d(){const e=p();return{selectMessage:(t,n)=>function(e,t,n){const a=e.split("|");if(1===a.length)return a[0];a.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${a.length}: ${e}`);const r=n.select(t),l=n.pluralForms.indexOf(r);return a[Math.min(l,a.length-1)]}(n,t,e)}}var g=n(143),f=n(6775),E=n(412);const y=function(){const e=(0,f.k6)(),t=(0,f.TH)(),{siteConfig:{baseUrl:n}}=(0,r.Z)();return{searchValue:E.Z.canUseDOM&&new URLSearchParams(t.search).get("q")||"",updateSearchPath:n=>{const a=new URLSearchParams(t.search);n?a.set("q",n):a.delete("q"),e.replace({search:a.toString()})},generateSearchPageLink:e=>`${n}search?q=${encodeURIComponent(e)}`}};var S=n(22),w=n(8202),I=n(2539),b=n(726),v=n(1073),F=n(311);const P="searchQueryInput_CFBF",R="searchResultItem_U687",_="searchResultItemPath_uIbk",k="searchResultItemSummary_oZHr";var C=n(3926);function q(){const{siteConfig:{baseUrl:e}}=(0,r.Z)(),t=(0,g.gA)();let n=e;const{preferredVersion:l}=(0,u.J)(null==t?void 0:t.pluginId);l&&!l.isLast&&(n=l.path+"/");const{selectMessage:c}=d(),{searchValue:m,updateSearchPath:i}=y(),[h,p]=(0,a.useState)(m),[f,E]=(0,a.useState)(),[I,b]=(0,a.useState)(),v=(0,a.useMemo)((()=>h?(0,o.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:h}):(0,o.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})),[h]);(0,a.useEffect)((()=>{i(h),f&&(h?f(h,(e=>{b(e)})):b(void 0))}),[h,f]);const R=(0,a.useCallback)((e=>{p(e.target.value)}),[]);return(0,a.useEffect)((()=>{m&&m!==h&&p(m)}),[m]),(0,a.useEffect)((()=>{!async function(){const{wrappedIndexes:e,zhDictionary:t}=await(0,S.w)(n);E((()=>(0,w.v)(e,t,100)))}()}),[n]),a.createElement(a.Fragment,null,a.createElement(s.Z,null,a.createElement("meta",{property:"robots",content:"noindex, follow"}),a.createElement("title",null,v)),a.createElement("div",{className:"container margin-vert--lg"},a.createElement("h1",null,v),a.createElement("input",{type:"search",name:"q",className:P,"aria-label":"Search",onChange:R,value:h,autoComplete:"off",autoFocus:!0}),!f&&h&&a.createElement("div",null,a.createElement(F.Z,null)),I&&(I.length>0?a.createElement("p",null,c(I.length,(0,o.I)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". 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)'},{count:I.length}))):a.createElement("p",null,(0,o.I)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"}))),a.createElement("section",null,I&&I.map((e=>a.createElement(T,{key:e.document.i,searchResult:e}))))))}function T(e){let{searchResult:{document:t,type:n,page:r,tokens:l,metadata:s}}=e;const o=0===n,u=2===n,m=(o?t.b:r.b).slice(),i=u?t.s:t.t;return o||m.push(r.t),a.createElement("article",{className:R},a.createElement("h2",null,a.createElement(c.Z,{to:t.u+(t.h||""),dangerouslySetInnerHTML:{__html:u?(0,I.C)(i,l):(0,b.o)(i,(0,v.m)(s,"t"),l,100)}})),m.length>0&&a.createElement("p",{className:_},(0,C.e)(m)),u&&a.createElement("p",{className:k,dangerouslySetInnerHTML:{__html:(0,b.o)(t.t,(0,v.m)(s,"t"),l,100)}}))}const Z=function(){return a.createElement(l.Z,null,a.createElement(q,null))}}}]); \ No newline at end of file diff --git a/assets/js/1be78505.3bffa4b3.js b/assets/js/1be78505.b5adb11b.js similarity index 98% rename from assets/js/1be78505.3bffa4b3.js rename to assets/js/1be78505.b5adb11b.js index d45d23e..ff44378 100644 --- a/assets/js/1be78505.3bffa4b3.js +++ b/assets/js/1be78505.b5adb11b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[9514,4972],{9963:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Ce});var a=n(7294),l=n(6010),o=n(1944),r=n(5281),c=n(3320),i=n(3438),s=n(4477),d=n(1116),m=n(179),u=n(5999),b=n(2466),p=n(5936);const h="backToTopButton_sjWU",E="backToTopButtonShow_xfvO";function f(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=null==n?void 0:n.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a<t?l(!1):a+window.innerHeight<document.documentElement.scrollHeight&&l(!0))})),(0,p.S)((e=>{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h,e&&E),type:"button",onClick:t})}var v=n(6775),g=n(7524),_=n(6668),k=n(1327),C=n(7462);function S(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const I="collapseSidebarButton_PEFL",N="collapseSidebarButtonIcon_kv0_";function Z(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",I),onClick:t},a.createElement(S,{className:N}))}var x=n(9689),T=n(902);const y=Symbol("EmptyContext"),w=a.createContext(y);function L(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(w.Provider,{value:o},t)}var A=n(6043),M=n(8596),B=n(9960),F=n(2389);function H(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function P(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,_.L)(),f=function(e){const t=(0,F.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),v=(0,i._F)(t,o),g=(0,M.Mg)(h,o),{collapsed:k,setCollapsed:S}=(0,A.u)({initialState:()=>!!b&&(!v&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(w);if(e===y)throw new T.i6("DocSidebarItemsExpandedStateProvider");return e}(),Z=function(e){void 0===e&&(e=!k),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,T.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:v,collapsed:k,updateCollapsed:Z}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":k},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":g})},a.createElement(B.Z,(0,C.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":v}),onClick:b?e=>{null==n||n(t),h?Z(!1):(e.preventDefault(),Z())}:()=>{null==n||n(t)},"aria-current":g?"page":void 0,"aria-expanded":b?!k:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(H,{categoryLabel:u,onClick:e=>{e.preventDefault(),Z()}})),a.createElement(A.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:k},a.createElement(q,{items:m,tabIndex:k?-1:0,onItemClick:n,activePath:o,level:c+1})))}var D=n(3919),W=n(9471);const R="menuExternalLink_NmtK";function V(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,D.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(B.Z,(0,C.Z)({className:(0,l.Z)("menu__link",!E&&R,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(W.Z,null)))}const z="menuHtmlItem_M9Kj";function U(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[z,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function K(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(P,(0,C.Z)({item:t},n));case"html":return a.createElement(U,(0,C.Z)({item:t},n));default:return a.createElement(V,(0,C.Z)({item:t},n))}}function j(e){let{items:t,...n}=e;return a.createElement(L,null,t.map(((e,t)=>a.createElement(K,(0,C.Z)({key:t,item:e,index:t},n)))))}const q=(0,a.memo)(j),G="menu_SIkG",Y="menuWithAnnouncementBar_GW3s";function O(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,x.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.Z)("menu thin-scrollbar",G,c&&Y,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(q,{items:n,activePath:t,level:1})))}const X="sidebar_njMd",J="sidebarWithHideableNavbar_wUlq",Q="sidebarHidden_VK0M",$="sidebarLogo_isFc";function ee(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,_.L)();return a.createElement("div",{className:(0,l.Z)(X,c&&J,r&&Q)},c&&a.createElement(k.Z,{tabIndex:-1,className:$}),a.createElement(O,{path:t,sidebar:n}),i&&a.createElement(Z,{onClick:o}))}const te=a.memo(ee);var ne=n(3102),ae=n(3163);const le=e=>{let{sidebar:t,path:n}=e;const o=(0,ae.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(q,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function oe(e){return a.createElement(ne.Zo,{component:le,props:e})}const re=a.memo(oe);function ce(e){const t=(0,g.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement(te,e),l&&a.createElement(re,e))}const ie="expandButton_m80_",se="expandButtonIcon_BlDH";function de(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:ie,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(S,{className:se}))}const me={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function ue(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:(null==n?void 0:n.name)??"noSidebar"},t)}function be(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,v.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,me.docSidebarContainer,n&&me.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(me.docSidebarContainer)&&n&&s(!0)}},a.createElement(ue,null,a.createElement("div",{className:(0,l.Z)(me.sidebarViewport,i&&me.sidebarViewportHidden)},a.createElement(ce,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(de,{toggleSidebar:d}))))}const pe={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function he(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(pe.docMainContainer,(t||!o)&&pe.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",pe.docItemWrapper,t&&pe.docItemWrapperEnhanced)},n))}const Ee="docPage__5DB",fe="docsWrapper_BCFX";function ve(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:fe},a.createElement(f,null),a.createElement("div",{className:Ee},n&&a.createElement(be,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(he,{hiddenSidebarContainer:l},t)))}var ge=n(4972),_e=n(197);function ke(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(_e.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function Ce(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(ge.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(ke,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(ve,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7294),l=n(5999),o=n(1944),r=n(179);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}},4477:(e,t,n)=>{n.d(t,{E:()=>c,q:()=>r});var a=n(7294),l=n(902);const o=a.createContext(null);function r(e){let{children:t,version:n}=e;return a.createElement(o.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(o);if(null===e)throw new l.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[9514,4972],{9963:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Ce});var a=n(7294),l=n(6010),o=n(833),r=n(5281),c=n(3320),i=n(3438),s=n(4477),d=n(1116),m=n(7452),u=n(5999),b=n(2466),p=n(5936);const h="backToTopButton_sjWU",E="backToTopButtonShow_xfvO";function f(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=null==n?void 0:n.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a<t?l(!1):a+window.innerHeight<document.documentElement.scrollHeight&&l(!0))})),(0,p.S)((e=>{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h,e&&E),type:"button",onClick:t})}var v=n(6775),g=n(7524),_=n(6668),k=n(1327),C=n(7462);function S(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const I="collapseSidebarButton_PEFL",N="collapseSidebarButtonIcon_kv0_";function Z(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",I),onClick:t},a.createElement(S,{className:N}))}var x=n(9689),T=n(902);const y=Symbol("EmptyContext"),w=a.createContext(y);function L(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(w.Provider,{value:o},t)}var A=n(6043),M=n(8596),B=n(9960),F=n(2389);function H(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function P(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,_.L)(),f=function(e){const t=(0,F.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),v=(0,i._F)(t,o),g=(0,M.Mg)(h,o),{collapsed:k,setCollapsed:S}=(0,A.u)({initialState:()=>!!b&&(!v&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(w);if(e===y)throw new T.i6("DocSidebarItemsExpandedStateProvider");return e}(),Z=function(e){void 0===e&&(e=!k),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,T.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:v,collapsed:k,updateCollapsed:Z}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":k},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":g})},a.createElement(B.Z,(0,C.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":v}),onClick:b?e=>{null==n||n(t),h?Z(!1):(e.preventDefault(),Z())}:()=>{null==n||n(t)},"aria-current":g?"page":void 0,"aria-expanded":b?!k:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(H,{categoryLabel:u,onClick:e=>{e.preventDefault(),Z()}})),a.createElement(A.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:k},a.createElement(q,{items:m,tabIndex:k?-1:0,onItemClick:n,activePath:o,level:c+1})))}var D=n(3919),W=n(9471);const R="menuExternalLink_NmtK";function V(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,D.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(B.Z,(0,C.Z)({className:(0,l.Z)("menu__link",!E&&R,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(W.Z,null)))}const z="menuHtmlItem_M9Kj";function U(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[z,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function K(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(P,(0,C.Z)({item:t},n));case"html":return a.createElement(U,(0,C.Z)({item:t},n));default:return a.createElement(V,(0,C.Z)({item:t},n))}}function j(e){let{items:t,...n}=e;return a.createElement(L,null,t.map(((e,t)=>a.createElement(K,(0,C.Z)({key:t,item:e,index:t},n)))))}const q=(0,a.memo)(j),G="menu_SIkG",Y="menuWithAnnouncementBar_GW3s";function O(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,x.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.Z)("menu thin-scrollbar",G,c&&Y,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(q,{items:n,activePath:t,level:1})))}const X="sidebar_njMd",J="sidebarWithHideableNavbar_wUlq",Q="sidebarHidden_VK0M",$="sidebarLogo_isFc";function ee(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,_.L)();return a.createElement("div",{className:(0,l.Z)(X,c&&J,r&&Q)},c&&a.createElement(k.Z,{tabIndex:-1,className:$}),a.createElement(O,{path:t,sidebar:n}),i&&a.createElement(Z,{onClick:o}))}const te=a.memo(ee);var ne=n(3102),ae=n(3163);const le=e=>{let{sidebar:t,path:n}=e;const o=(0,ae.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(q,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function oe(e){return a.createElement(ne.Zo,{component:le,props:e})}const re=a.memo(oe);function ce(e){const t=(0,g.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement(te,e),l&&a.createElement(re,e))}const ie="expandButton_m80_",se="expandButtonIcon_BlDH";function de(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:ie,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(S,{className:se}))}const me={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function ue(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:(null==n?void 0:n.name)??"noSidebar"},t)}function be(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,v.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,me.docSidebarContainer,n&&me.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(me.docSidebarContainer)&&n&&s(!0)}},a.createElement(ue,null,a.createElement("div",{className:(0,l.Z)(me.sidebarViewport,i&&me.sidebarViewportHidden)},a.createElement(ce,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(de,{toggleSidebar:d}))))}const pe={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function he(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(pe.docMainContainer,(t||!o)&&pe.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",pe.docItemWrapper,t&&pe.docItemWrapperEnhanced)},n))}const Ee="docPage__5DB",fe="docsWrapper_BCFX";function ve(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:fe},a.createElement(f,null),a.createElement("div",{className:Ee},n&&a.createElement(be,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(he,{hiddenSidebarContainer:l},t)))}var ge=n(4972),_e=n(197);function ke(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(_e.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function Ce(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(ge.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(ke,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(ve,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7294),l=n(5999),o=n(833),r=n(7452);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}},4477:(e,t,n)=>{n.d(t,{E:()=>c,q:()=>r});var a=n(7294),l=n(902);const o=a.createContext(null);function r(e){let{children:t,version:n}=e;return a.createElement(o.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(o);if(null===e)throw new l.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/assets/js/1d042041.3353ac3b.js b/assets/js/1d042041.3353ac3b.js new file mode 100644 index 0000000..d3c5b31 --- /dev/null +++ b/assets/js/1d042041.3353ac3b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[5767],{7085:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/4972.d4ca4ead.js b/assets/js/4972.9c4c5fed.js similarity index 94% rename from assets/js/4972.d4ca4ead.js rename to assets/js/4972.9c4c5fed.js index a229421..c8d5ba7 100644 --- a/assets/js/4972.d4ca4ead.js +++ b/assets/js/4972.9c4c5fed.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[4972],{4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7294),o=n(5999),l=n(1944),r=n(179);function c(){return a.createElement(a.Fragment,null,a.createElement(l.d,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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 +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[4972],{4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7294),o=n(5999),l=n(833),r=n(7452);function c(){return a.createElement(a.Fragment,null,a.createElement(l.d,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/js/5525.81443133.js b/assets/js/5525.81443133.js deleted file mode 100644 index 36cc3db..0000000 --- a/assets/js/5525.81443133.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[5525],{5525:()=>{}}]); \ No newline at end of file diff --git a/assets/js/6780.2e464230.js b/assets/js/6780.2e464230.js new file mode 100644 index 0000000..c7bc693 --- /dev/null +++ b/assets/js/6780.2e464230.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[6780],{6780:(e,t,r)=>{function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a,c=t.initialState;return{getState:function(){return c},dispatch:function(a,i){var l=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},c);c=e(c,{type:a,props:t,payload:i}),r({state:c,prevState:l})},pendingRequests:(a=[],{add:function(e){return a.push(e),e.finally((function(){a=a.filter((function(t){return t!==e}))}))},cancelAll:function(){a.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===a.length}})}}function c(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){s(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function u(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}r.r(t),r.d(t,{DocSearchModal:()=>Dr});var f=0;var m=function(){};function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function d(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e,t){var r=[];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,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){d(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:m},e);return Promise.resolve(t)})))}))}function v(e){return function(e){if(Array.isArray(e))return y(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 y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return y(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 y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function g(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?g(Object(r),!0).forEach((function(t){O(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function O(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function S(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function E(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?S(Object(r),!0).forEach((function(t){j(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function j(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function w(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function P(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?w(Object(r),!0).forEach((function(t){I(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):w(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function I(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function D(e){return function(e){if(Array.isArray(e))return C(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 C(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return C(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 C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function k(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function A(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?k(Object(r),!0).forEach((function(t){x(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function x(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function N(e){return Boolean(e.execute)}function R(e,t){return r=e,Boolean(null==r?void 0:r.execute)?A(A({},e),{},{requests:e.queries.map((function(r){return{query:r,sourceId:t,transformResponse:e.transformResponse}}))}):{items:e,sourceId:t};var r}function _(e){var t=e.reduce((function(e,t){if(!N(t))return e.push(t),e;var r=t.searchClient,n=t.execute,o=t.requesterId,a=t.requests,c=e.find((function(e){return N(t)&&N(e)&&e.searchClient===r&&Boolean(o)&&e.requesterId===o}));if(c){var i;(i=c.items).push.apply(i,D(a))}else{var l={execute:n,requesterId:o,items:a,searchClient:r};e.push(l)}return e}),[]).map((function(e){if(!N(e))return Promise.resolve(e);var t=e,r=t.execute,n=t.items;return r({searchClient:t.searchClient,requests:n})}));return Promise.all(t).then((function(e){return c(e)}))}function q(e,t){return t.map((function(t){var r=e.filter((function(e){return e.sourceId===t.sourceId})),n=r.map((function(e){return e.items})),o=r[0].transformResponse,a=o?o(function(e){var t=e.map((function(e){var t;return P(P({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return P(P({},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)}}(n)):n;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 T(e,t){var r=t;return{then:function(t,n){return T(e.then(H(t,r,e),H(n,r,e)),r)},catch:function(t){return T(e.catch(H(t,r,e)),r)},finally:function(t){return t&&r.onCancelList.push(t),T(e.finally(H(t&&function(){return r.onCancelList=[],t()},r,e)),r)},cancel:function(){r.isCanceled=!0;var e=r.onCancelList;r.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===r.isCanceled}}}function L(e){return T(new Promise((function(t,r){return e(t,r)})),{isCanceled:!1,onCancelList:[]})}function M(e){return T(e,{isCanceled:!1,onCancelList:[]})}function H(e,t,r){return e?function(r){return t.isCanceled?r:e(r)}:r}function F(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,r){var n=(e[r-1]||0)+t;return e.push(n),e}),[]).reduce((function(t,r){return r<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var r=t.items[function(e){for(var t=e.state,r=e.collection,n=!1,o=0,a=0;!1===n;){var c=t.collections[o];if(c===r){n=!0;break}a+=c.items.length,o++}return t.activeItemId-a}({state:e,collection:t})],n=t.source;return{item:r,itemInputValue:n.getItemInputValue({item:r,state:e}),itemUrl:n.getItemUrl({item:r,state:e}),source:n}}L.resolve=function(e){return M(Promise.resolve(e))},L.reject=function(e){return M(Promise.reject(e))};var U=["event","nextState","props","query","refresh","store"];function B(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function V(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?B(Object(r),!0).forEach((function(t){K(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):B(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function K(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function J(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var $,z,W,Q=null,Z=($=-1,z=-1,W=void 0,function(e){var t=++$;return Promise.resolve(e).then((function(e){return W&&t<z?W:(z=t,W=e,e)}))});function Y(e){var t=e.event,r=e.nextState,n=void 0===r?{}:r,o=e.props,a=e.query,i=e.refresh,l=e.store,s=J(e,U);Q&&o.environment.clearTimeout(Q);var u=s.setCollections,f=s.setIsOpen,m=s.setQuery,p=s.setActiveItemId,d=s.setStatus;if(m(a),p(o.defaultActiveItemId),!a&&!1===o.openOnFocus){var h,v=l.getState().collections.map((function(e){return V(V({},e),{},{items:[]})}));d("idle"),u(v),f(null!==(h=n.isOpen)&&void 0!==h?h:o.shouldPanelOpen({state:l.getState()}));var y=M(Z(v).then((function(){return Promise.resolve()})));return l.pendingRequests.add(y)}d("loading"),Q=o.environment.setTimeout((function(){d("stalled")}),o.stallThreshold);var g=M(Z(o.getSources(V({query:a,refresh:i,state:l.getState()},s)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(V({query:a,refresh:i,state:l.getState()},s))).then((function(t){return R(t,e.sourceId)}))}))).then(_).then((function(t){return q(t,e)})).then((function(e){return function(e){var t=e.collections,r=e.props,n=e.state,o=t.reduce((function(e,t){return E(E({},e),{},j({},t.source.sourceId,E(E({},t.source),{},{getItems:function(){return c(t.items)}})))}),{});return c(r.reshape({sources:Object.values(o),sourcesBySourceId:o,state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:l.getState()})}))})))).then((function(e){var r;d("idle"),u(e);var c=o.shouldPanelOpen({state:l.getState()});f(null!==(r=n.isOpen)&&void 0!==r?r:o.openOnFocus&&!a&&c||c);var m=F(l.getState());if(null!==l.getState().activeItemId&&m){var p=m.item,h=m.itemInputValue,v=m.itemUrl,y=m.source;y.onActive(V({event:t,item:p,itemInputValue:h,itemUrl:v,refresh:i,source:y,state:l.getState()},s))}})).finally((function(){d("idle"),Q&&o.environment.clearTimeout(Q)}));return l.pendingRequests.add(g)}var G=["event","props","refresh","store"];function X(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?X(Object(r),!0).forEach((function(t){te(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):X(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function te(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function re(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var ne=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var oe=["props","refresh","store"],ae=["inputElement","formElement","panelElement"],ce=["inputElement"],ie=["inputElement","maxLength"],le=["item","source"];function se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ue(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?se(Object(r),!0).forEach((function(t){fe(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function fe(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function me(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function pe(e){var t=e.props,r=e.refresh,n=e.store,o=me(e,oe);return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,a=e.panelElement;function c(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,a].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())}return ue({onTouchStart:c,onMouseDown:c,onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},me(e,ae))},getRootProps:function(e){return ue({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return ue({action:"",noValidate:!0,role:"search",onSubmit:function(a){var c;a.preventDefault(),t.onSubmit(ue({event:a,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(c=e.inputElement)||void 0===c||c.blur()},onReset:function(a){var c;a.preventDefault(),t.onReset(ue({event:a,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(c=e.inputElement)||void 0===c||c.focus()}},me(e,ce))},getLabelProps:function(e){return ue({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function c(e){(t.openOnFocus||Boolean(n.getState().query))&&Y(ue({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var i=e||{},l=(i.inputElement,i.maxLength),s=void 0===l?512:l,u=me(i,ie),f=F(n.getState()),p=function(e){return Boolean(e&&e.match(ne))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),d=null!=f&&f.itemUrl&&!p?"go":"search";return ue({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:d,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:s,type:"search",onChange:function(e){Y(ue({event:e,props:t,query:e.currentTarget.value.slice(0,s),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,a=re(e,G);if("ArrowUp"===t.key||"ArrowDown"===t.key){var c=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},i=function(){var e=F(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,c=e.itemInputValue,i=e.itemUrl,l=e.source;l.onActive(ee({event:t,item:r,itemInputValue:c,itemUrl:i,refresh:n,source:l,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?Y(ee({event:t,props:r,query:o.getState().query,refresh:n,store:o},a)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),i(),setTimeout(c,0)})):(o.dispatch(t.key,{}),i(),c())}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(r.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=F(o.getState()),s=l.item,u=l.itemInputValue,f=l.itemUrl,m=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewTab({itemUrl:f,item:s,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewWindow({itemUrl:f,item:s,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),void r.navigator.navigate({itemUrl:f,item:s,state:o.getState()});Y(ee({event:t,nextState:{isOpen:!1},props:r,query:u,refresh:n,store:o},a)).then((function(){m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a))}))}}}(ue({event:e,props:t,refresh:r,store:n},o))},onFocus:c,onBlur:m,onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||c(r)}},u)},getPanelProps:function(e){return ue({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){return ue({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,c=e.source,i=me(e,le);return ue({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=F(n.getState());if(null!==n.getState().activeItemId&&t){var c=t.item,i=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(ue({event:e,item:c,itemInputValue:i,itemUrl:l,refresh:r,source:s,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:a,state:n.getState()}),l=c.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():Y(ue({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:r,store:n},o))).then((function(){c.onSelect(ue({event:e,item:a,itemInputValue:i,itemUrl:l,refresh:r,source:c,state:n.getState()},o))}))}},i)}}}var de=[{segment:"autocomplete-core",version:"1.7.4"}];function he(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ve(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?he(Object(r),!0).forEach((function(t){ye(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):he(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ye(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ge(e){var t,r,n,o,a=e.plugins,c=e.options,i=null===(t=((null===(r=c.__autocomplete_metadata)||void 0===r?void 0:r.userAgents)||[])[0])||void 0===t?void 0:t.segment,l=i?ye({},i,Object.keys((null===(n=c.__autocomplete_metadata)||void 0===n?void 0:n.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:ve({"autocomplete-core":Object.keys(c)},l),ua:de.concat((null===(o=c.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function be(e){var t,r=e.state;return!1===r.isOpen||null===r.activeItemId?null:(null===(t=F(r))||void 0===t?void 0:t.itemInputValue)||null}function Oe(e,t,r,n){if(!r)return null;if(e<0&&(null===t||null!==n&&0===t))return r+e;var o=(null===t?-1:t)+e;return o<=-1||o>=r?null===n?null:0:o}function Se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(r),!0).forEach((function(t){je(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Se(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function je(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var we=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return Ee(Ee({},e),{},{activeItemId:t.payload});case"setQuery":return Ee(Ee({},e),{},{query:t.payload,completion:null});case"setCollections":return Ee(Ee({},e),{},{collections:t.payload});case"setIsOpen":return Ee(Ee({},e),{},{isOpen:t.payload});case"setStatus":return Ee(Ee({},e),{},{status:t.payload});case"setContext":return Ee(Ee({},e),{},{context:Ee(Ee({},e.context),t.payload)});case"ArrowDown":var r=Ee(Ee({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:Oe(1,e.activeItemId,u(e),t.props.defaultActiveItemId)});return Ee(Ee({},r),{},{completion:be({state:r})});case"ArrowUp":var n=Ee(Ee({},e),{},{activeItemId:Oe(-1,e.activeItemId,u(e),t.props.defaultActiveItemId)});return Ee(Ee({},n),{},{completion:be({state:n})});case"Escape":return e.isOpen?Ee(Ee({},e),{},{activeItemId:null,isOpen:!1,completion:null}):Ee(Ee({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return Ee(Ee({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return Ee(Ee({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return Ee(Ee({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:Ee(Ee({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return Ee(Ee({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function Pe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ie(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(r),!0).forEach((function(t){De(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Pe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function De(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ce(e){var t=[],r=function(e,t){var r,n="undefined"!=typeof window?window:{},o=e.plugins||[];return b(b({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:n,shouldPanelOpen:function(e){return u(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(f++),plugins:o,initialState:b({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(v(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return h(e,r)}))).then((function(e){return c(e)})).then((function(e){return e.map((function(e){return b(b({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:b({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}(e,t),n=a(we,r,(function(e){var t=e.prevState,n=e.state;r.onStateChange(Ie({prevState:t,state:n,refresh:s},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 r=0,n=e.map((function(e){return l(l({},e),{},{items:c(e.items).map((function(e){return l(l({},e),{},{__autocomplete_id:r++})}))})}));t.dispatch("setCollections",n)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:n}),i=pe(Ie({props:r,refresh:s,store:n},o));function s(){return Y(Ie({event:new Event("input"),nextState:{isOpen:n.getState().isOpen},props:r,query:n.getState().query,refresh:s,store:n},o))}return r.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Ie(Ie({},o),{},{refresh:s,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,r,n=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(r=t.userAgent)||void 0===r?void 0:r.includes("Algolia Crawler")){var a=o.document.createElement("meta"),c=o.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(n),c.appendChild(a)}),0)}}({metadata:ge({plugins:r.plugins,options:e}),environment:r.environment}),Ie(Ie({refresh:s},i),o)}var ke=r(7294);function Ae(e){var t=e.translations,r=(void 0===t?{}:t).searchByText,n=void 0===r?"Search by":r;return ke.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},ke.createElement("span",{className:"DocSearch-Label"},n),ke.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},ke.createElement("defs",null,ke.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),ke.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),ke.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),ke.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),ke.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),ke.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),ke.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),ke.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),ke.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),ke.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function xe(e){return ke.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},ke.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Ne(e){var t=e.translations,r=void 0===t?{}:t,n=r.selectText,o=void 0===n?"to select":n,a=r.selectKeyAriaLabel,c=void 0===a?"Enter key":a,i=r.navigateText,l=void 0===i?"to navigate":i,s=r.navigateUpKeyAriaLabel,u=void 0===s?"Arrow up":s,f=r.navigateDownKeyAriaLabel,m=void 0===f?"Arrow down":f,p=r.closeText,d=void 0===p?"to close":p,h=r.closeKeyAriaLabel,v=void 0===h?"Escape key":h,y=r.searchByText,g=void 0===y?"Search by":y;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Logo"},ke.createElement(Ae,{translations:{searchByText:g}})),ke.createElement("ul",{className:"DocSearch-Commands"},ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:c},ke.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),ke.createElement("span",{className:"DocSearch-Label"},o)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:m},ke.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:u},ke.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),ke.createElement("span",{className:"DocSearch-Label"},l)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:v},ke.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),ke.createElement("span",{className:"DocSearch-Label"},d))))}function Re(e){var t=e.hit,r=e.children;return ke.createElement("a",{href:t.url},r)}function _e(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function qe(e){var t=e.translations,r=void 0===t?{}:t,n=r.titleText,o=void 0===n?"Unable to fetch results":n,a=r.helpText,c=void 0===a?"You might want to check your network connection.":a;return ke.createElement("div",{className:"DocSearch-ErrorScreen"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(_e,null)),ke.createElement("p",{className:"DocSearch-Title"},o),ke.createElement("p",{className:"DocSearch-Help"},c))}function Te(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}var Le=["translations"];function Me(e){return function(e){if(Array.isArray(e))return He(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 He(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return He(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 He(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Fe(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ue(e){var t=e.translations,r=void 0===t?{}:t,n=Fe(e,Le),o=r.noResultsText,a=void 0===o?"No results for":o,c=r.suggestedQueryText,i=void 0===c?"Try searching for":c,l=r.reportMissingResultsText,s=void 0===l?"Believe this query should return results?":l,u=r.reportMissingResultsLinkText,f=void 0===u?"Let us know.":u,m=n.state.context.searchSuggestions;return ke.createElement("div",{className:"DocSearch-NoResults"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(Te,null)),ke.createElement("p",{className:"DocSearch-Title"},a,' "',ke.createElement("strong",null,n.state.query),'"'),m&&m.length>0&&ke.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},ke.createElement("p",{className:"DocSearch-Help"},i,":"),ke.createElement("ul",null,m.slice(0,3).reduce((function(e,t){return[].concat(Me(e),[ke.createElement("li",{key:t},ke.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){n.setQuery(t.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},t))])}),[]))),n.getMissingResultsUrl&&ke.createElement("p",{className:"DocSearch-Help"},"".concat(s," "),ke.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},f)))}var Be=function(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Ve(e){switch(e.type){case"lvl1":return ke.createElement(Be,null);case"content":return ke.createElement(Je,null);default:return ke.createElement(Ke,null)}}function Ke(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Je(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function $e(){return ke.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),ke.createElement("path",{d:"M8 17l-6-6 6-6"})))}var ze=["hit","attribute","tagName"];function We(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Qe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?We(Object(r),!0).forEach((function(t){Ze(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):We(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Ze(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ye(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ge(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function Xe(e){var t=e.hit,r=e.attribute,n=e.tagName,o=void 0===n?"span":n,a=Ye(e,ze);return(0,ke.createElement)(o,Qe(Qe({},a),{},{dangerouslySetInnerHTML:{__html:Ge(t,"_snippetResult.".concat(r,".value"))||Ge(t,r)}}))}function et(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],c=!0,i=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);c=!0);}catch(l){i=!0,o=l}finally{try{c||null==r.return||r.return()}finally{if(i)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return tt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return tt(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 tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function rt(){return rt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},rt.apply(this,arguments)}function nt(e){return e.collection&&0!==e.collection.items.length?ke.createElement("section",{className:"DocSearch-Hits"},ke.createElement("div",{className:"DocSearch-Hit-source"},e.title),ke.createElement("ul",e.getListProps(),e.collection.items.map((function(t,r){return ke.createElement(ot,rt({key:[e.title,t.objectID].join(":"),item:t,index:r},e))})))):null}function ot(e){var t=e.item,r=e.index,n=e.renderIcon,o=e.renderAction,a=e.getItemProps,c=e.onItemClick,i=e.collection,l=e.hitComponent,s=et(ke.useState(!1),2),u=s[0],f=s[1],m=et(ke.useState(!1),2),p=m[0],d=m[1],h=ke.useRef(null),v=l;return ke.createElement("li",rt({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",u&&"DocSearch-Hit--deleting",p&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){h.current&&h.current()}},a({item:t,source:i.source,onClick:function(){c(t)}})),ke.createElement(v,{hit:t},ke.createElement("div",{className:"DocSearch-Hit-Container"},n({item:t,index:r}),t.hierarchy[t.type]&&"lvl1"===t.type&&ke.createElement("div",{className:"DocSearch-Hit-content-wrapper"},ke.createElement(Xe,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&ke.createElement(Xe,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&ke.createElement("div",{className:"DocSearch-Hit-content-wrapper"},ke.createElement(Xe,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),ke.createElement(Xe,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&ke.createElement("div",{className:"DocSearch-Hit-content-wrapper"},ke.createElement(Xe,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),ke.createElement(Xe,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),o({item:t,runDeleteTransition:function(e){f(!0),h.current=e},runFavoriteTransition:function(e){d(!0),h.current=e}}))))}var at=/(<mark>|<\/mark>)/g,ct=RegExp(at.source);function it(e){var t,r,n,o,a,c=e;if(!c.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var i=((c.__docsearch_parent?null===(t=c.__docsearch_parent)||void 0===t||null===(r=t._highlightResult)||void 0===r||null===(n=r.hierarchy)||void 0===n?void 0:n.lvl0:null===(o=e._highlightResult)||void 0===o||null===(a=o.hierarchy)||void 0===a?void 0:a.lvl0)||{}).value;return i&&ct.test(i)?i.replace(at,""):i}function lt(){return lt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},lt.apply(this,arguments)}function st(e){return ke.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var r=it(t.items[0]);return ke.createElement(nt,lt({},e,{key:t.source.sourceId,title:r,collection:t,renderIcon:function(e){var r,n=e.item,o=e.index;return ke.createElement(ke.Fragment,null,n.__docsearch_parent&&ke.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},n.__docsearch_parent!==(null===(r=t.items[o+1])||void 0===r?void 0:r.__docsearch_parent)?ke.createElement("path",{d:"M8 6v21M20 27H8.3"}):ke.createElement("path",{d:"M8 6v42M20 27H8.3"}))),ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(Ve,{type:n.type})))},renderAction:function(){return ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement($e,null))}}))})),e.resultsFooterComponent&&ke.createElement("section",{className:"DocSearch-HitsFooter"},ke.createElement(e.resultsFooterComponent,{state:e.state})))}function ut(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),ke.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function ft(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function mt(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var pt=["translations"];function dt(){return dt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},dt.apply(this,arguments)}function ht(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function vt(e){var t=e.translations,r=void 0===t?{}:t,n=ht(e,pt),o=r.recentSearchesTitle,a=void 0===o?"Recent":o,c=r.noRecentSearchesText,i=void 0===c?"No recent searches":c,l=r.saveRecentSearchButtonTitle,s=void 0===l?"Save this search":l,u=r.removeRecentSearchButtonTitle,f=void 0===u?"Remove this search from history":u,m=r.favoriteSearchesTitle,p=void 0===m?"Favorite":m,d=r.removeFavoriteSearchButtonTitle,h=void 0===d?"Remove this search from favorites":d;return"idle"===n.state.status&&!1===n.hasCollections?n.disableUserPersonalization?null:ke.createElement("div",{className:"DocSearch-StartScreen"},ke.createElement("p",{className:"DocSearch-Help"},i)):!1===n.hasCollections?null:ke.createElement("div",{className:"DocSearch-Dropdown-Container"},ke.createElement(nt,dt({},n,{title:a,collection:n.state.collections[0],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(ut,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,o=e.runDeleteTransition;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:s,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.add(t),n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(ft,null))),ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(mt,null))))}})),ke.createElement(nt,dt({},n,{title:p,collection:n.state.collections[1],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(ft,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.remove(t),n.refresh()}))}},ke.createElement(mt,null)))}})))}var yt=["translations"];function gt(){return gt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},gt.apply(this,arguments)}function bt(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ot=ke.memo((function(e){var t=e.translations,r=void 0===t?{}:t,n=bt(e,yt);if("error"===n.state.status)return ke.createElement(qe,{translations:null==r?void 0:r.errorScreen});var o=n.state.collections.some((function(e){return e.items.length>0}));return n.state.query?!1===o?ke.createElement(Ue,gt({},n,{translations:null==r?void 0:r.noResultsScreen})):ke.createElement(st,n):ke.createElement(vt,gt({},n,{hasCollections:o,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function St(){return ke.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},ke.createElement("g",{fill:"none",fillRule:"evenodd"},ke.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},ke.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),ke.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},ke.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var Et=r(830),jt=["translations"];function wt(){return wt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},wt.apply(this,arguments)}function Pt(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function It(e){var t=e.translations,r=void 0===t?{}:t,n=Pt(e,jt),o=r.resetButtonTitle,a=void 0===o?"Clear the query":o,c=r.resetButtonAriaLabel,i=void 0===c?"Clear the query":c,l=r.cancelButtonText,s=void 0===l?"Cancel":l,u=r.cancelButtonAriaLabel,f=void 0===u?"Cancel":u,m=n.getFormProps({inputElement:n.inputRef.current}).onReset;return ke.useEffect((function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()}),[n.autoFocus,n.inputRef]),ke.useEffect((function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()}),[n.isFromSelection,n.inputRef]),ke.createElement(ke.Fragment,null,ke.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:m},ke.createElement("label",wt({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),ke.createElement(Et.W,null)),ke.createElement("div",{className:"DocSearch-LoadingIndicator"},ke.createElement(St,null)),ke.createElement("input",wt({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:64}))),ke.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":i,hidden:!n.state.query},ke.createElement(mt,null))),ke.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:n.onClose},s))}var Dt=["_highlightResult","_snippetResult"];function Ct(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function kt(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function At(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=kt(t),a=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,Ct(t,Dt)),c=a.findIndex((function(e){return e.objectID===r.objectID}));c>-1&&a.splice(c,1),a.unshift(r),a=a.slice(0,n),o.setItem(a)},remove:function(e){a=a.filter((function(t){return t.objectID!==e.objectID})),o.setItem(a)},getAll:function(){return a}}}function xt(e){const t=`algoliasearch-client-js-${e.key}`;let r;const n=()=>(void 0===r&&(r=e.localStorage||window.localStorage),r),o=()=>JSON.parse(n().getItem(t)||"{}");return{get:(e,t,r={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>{const r=JSON.stringify(e),n=o()[r];return Promise.all([n||t(),void 0!==n])})).then((([e,t])=>Promise.all([e,t||r.miss(e)]))).then((([e])=>e)),set:(e,r)=>Promise.resolve().then((()=>{const a=o();return a[JSON.stringify(e)]=r,n().setItem(t,JSON.stringify(a)),r})),delete:e=>Promise.resolve().then((()=>{const r=o();delete r[JSON.stringify(e)],n().setItem(t,JSON.stringify(r))})),clear:()=>Promise.resolve().then((()=>{n().removeItem(t)}))}}function Nt(e){const t=[...e.caches],r=t.shift();return void 0===r?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,n,o={miss:()=>Promise.resolve()})=>r.get(e,n,o).catch((()=>Nt({caches:t}).get(e,n,o))),set:(e,n)=>r.set(e,n).catch((()=>Nt({caches:t}).set(e,n))),delete:e=>r.delete(e).catch((()=>Nt({caches:t}).delete(e))),clear:()=>r.clear().catch((()=>Nt({caches:t}).clear()))}}function Rt(e={serializable:!0}){let t={};return{get(r,n,o={miss:()=>Promise.resolve()}){const a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);const c=n(),i=o&&o.miss||(()=>Promise.resolve());return c.then((e=>i(e))).then((()=>c))},set:(r,n)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function _t(e){let t=e.length-1;for(;t>0;t--){const r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function qt(e,t){return t?(Object.keys(t).forEach((r=>{e[r]=t[r](e)})),e):e}function Tt(e,...t){let r=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[r++])))}const Lt="4.17.0",Mt={WithinQueryParameters:0,WithinHeaders:1};function Ht(e,t){const r=e||{},n=r.data||{};return Object.keys(r).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}const Ft={Read:1,Write:2,Any:3},Ut=1,Bt=2,Vt=3,Kt=12e4;function Jt(e,t=Ut){return{...e,status:t,lastUpdate:Date.now()}}function $t(e){return"string"==typeof e?{protocol:"https",url:e,accept:Ft.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||Ft.Any}}const zt="GET",Wt="POST";function Qt(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(Jt(t))))))).then((e=>{const r=e.filter((e=>function(e){return e.status===Ut||Date.now()-e.lastUpdate>Kt}(e))),n=e.filter((e=>function(e){return e.status===Vt&&Date.now()-e.lastUpdate<=Kt}(e))),o=[...r,...n];return{getTimeout:(e,t)=>(0===n.length&&0===e?1:n.length+3+e)*t,statelessHosts:o.length>0?o.map((e=>$t(e))):t}}))}function Zt(e,t,r,n){const o=[],a=function(e,t){if(e.method===zt||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(r,n),c=function(e,t){const r={...e.headers,...t.headers},n={};return Object.keys(r).forEach((e=>{const t=r[e];n[e.toLowerCase()]=t})),n}(e,n),i=r.method,l=r.method!==zt?{}:{...r.data,...n.data},s={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...n.queryParameters};let u=0;const f=(t,l)=>{const m=t.pop();if(void 0===m)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:er(o)};const p={data:a,headers:c,method:i,url:Gt(m,r.path,s),connectTimeout:l(u,e.timeouts.connect),responseTimeout:l(u,n.timeout)},d=e=>{const r={request:p,response:e,host:m,triesLeft:t.length};return o.push(r),r},h={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(r){const n=d(r);return r.isTimedOut&&u++,Promise.all([e.logger.info("Retryable failure",tr(n)),e.hostsCache.set(m,Jt(m,r.isTimedOut?Vt:Bt))]).then((()=>f(t,l)))},onFail(e){throw d(e),function({content:e,status:t},r){let n=e;try{n=JSON.parse(e).message}catch(o){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(n,t,r)}(e,er(o))}};return e.requester.send(p).then((e=>((e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e))(e,h)))};return Qt(e.hostsCache,t).then((e=>f([...e.statelessHosts].reverse(),e.getTimeout)))}function Yt(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}function Gt(e,t,r){const n=Xt(r);let o=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return n.length&&(o+=`?${n}`),o}function Xt(e){return Object.keys(e).map((t=>{return Tt("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function er(e){return e.map((e=>tr(e)))}function tr(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const rr=e=>{const t=e.appId,r=function(e,t,r){const n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:()=>e===Mt.WithinHeaders?n:{},queryParameters:()=>e===Mt.WithinQueryParameters?n:{}}}(void 0!==e.authMode?e.authMode:Mt.WithinHeaders,t,e.apiKey),n=function(e){const{hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,hosts:l,queryParameters:s,headers:u}=e,f={hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,headers:u,queryParameters:s,hosts:l.map((e=>$t(e))),read(e,t){const r=Ht(t,f.timeouts.read),n=()=>Zt(f,f.hosts.filter((e=>0!=(e.accept&Ft.Read))),e,r);if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();const o={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(o,(()=>f.requestsCache.get(o,(()=>f.requestsCache.set(o,n()).then((e=>Promise.all([f.requestsCache.delete(o),e])),(e=>Promise.all([f.requestsCache.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.responsesCache.set(o,e)})},write:(e,t)=>Zt(f,f.hosts.filter((e=>0!=(e.accept&Ft.Write))),e,Ht(t,f.timeouts.write))};return f}({hosts:[{url:`${t}-dsn.algolia.net`,accept:Ft.Read},{url:`${t}.algolia.net`,accept:Ft.Write}].concat(_t([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),o={transporter:n,appId:t,addAlgoliaAgent(e,t){n.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then((()=>{}))};return qt(o,e.methods)},nr=e=>(t,r)=>t.method===zt?e.transporter.read(t,r):e.transporter.write(t,r),or=e=>(t,r={})=>qt({transporter:e.transporter,appId:e.appId,indexName:t},r.methods),ar=e=>(t,r)=>{const n=t.map((e=>({...e,params:Xt(e.params||{})})));return e.transporter.read({method:Wt,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)},cr=e=>(t,r)=>Promise.all(t.map((t=>{const{facetName:n,facetQuery:o,...a}=t.params;return or(e)(t.indexName,{methods:{searchForFacetValues:sr}}).searchForFacetValues(n,o,{...r,...a})}))),ir=e=>(t,r,n)=>e.transporter.read({method:Wt,path:Tt("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n),lr=e=>(t,r)=>e.transporter.read({method:Wt,path:Tt("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),sr=e=>(t,r,n)=>e.transporter.read({method:Wt,path:Tt("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n),ur=1,fr=2,mr=3;function pr(e,t,r){const n={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:e=>new Promise((t=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));const n=(e,n)=>setTimeout((()=>{r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e),o=n(e.connectTimeout,"Connection timeout");let a;r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===a&&(clearTimeout(o),a=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(o),clearTimeout(a),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(o),clearTimeout(a),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))},logger:(o=mr,{debug:(e,t)=>(ur>=o&&console.debug(e,t),Promise.resolve()),info:(e,t)=>(fr>=o&&console.info(e,t),Promise.resolve()),error:(e,t)=>(console.error(e,t),Promise.resolve())}),responsesCache:Rt(),requestsCache:Rt({serializable:!1}),hostsCache:Nt({caches:[xt({key:`4.17.0-${e}`}),Rt()]}),userAgent:Yt(Lt).add({segment:"Browser",version:"lite"}),authMode:Mt.WithinQueryParameters};var o;return rr({...n,...r,methods:{search:ar,searchForFacetValues:cr,multipleQueries:ar,multipleSearchForFacetValues:cr,customRequest:nr,initIndex:e=>t=>or(e)(t,{methods:{search:lr,searchForFacetValues:sr,findAnswers:ir}})}})}pr.version=Lt;const dr=pr;var hr="3.3.3";function vr(){}function yr(e){return e}function gr(e,t){return e.reduce((function(e,r){var n=t(r);return e.hasOwnProperty(n)||(e[n]=[]),e[n].length<5&&e[n].push(r),e}),{})}var br=["footer","searchBox"];function Or(){return Or=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Or.apply(this,arguments)}function Sr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Er(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Sr(Object(r),!0).forEach((function(t){jr(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Sr(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function jr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function wr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],c=!0,i=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);c=!0);}catch(l){i=!0,o=l}finally{try{c||null==r.return||r.return()}finally{if(i)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Pr(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Pr(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 Pr(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Ir(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Dr(e){var t=e.appId,r=e.apiKey,n=e.indexName,o=e.placeholder,a=void 0===o?"Search docs":o,c=e.searchParameters,i=e.onClose,l=void 0===i?vr:i,s=e.transformItems,u=void 0===s?yr:s,f=e.hitComponent,m=void 0===f?Re:f,p=e.resultsFooterComponent,d=void 0===p?function(){return null}:p,h=e.navigator,v=e.initialScrollY,y=void 0===v?0:v,g=e.transformSearchClient,b=void 0===g?yr:g,O=e.disableUserPersonalization,S=void 0!==O&&O,E=e.initialQuery,j=void 0===E?"":E,w=e.translations,P=void 0===w?{}:w,I=e.getMissingResultsUrl,D=P.footer,C=P.searchBox,k=Ir(P,br),A=wr(ke.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),x=A[0],N=A[1],R=ke.useRef(null),_=ke.useRef(null),q=ke.useRef(null),T=ke.useRef(null),L=ke.useRef(null),M=ke.useRef(10),H=ke.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,F=ke.useRef(j||H).current,U=function(e,t,r){return ke.useMemo((function(){var n=dr(e,t);return n.addAlgoliaAgent("docsearch",hr),!1===/docsearch.js \(.*\)/.test(n.transporter.userAgent.value)&&n.addAlgoliaAgent("docsearch-react",hr),r(n)}),[e,t,r])}(t,r,b),B=ke.useRef(At({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,V=ke.useRef(At({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:0===B.getAll().length?7:4})).current,K=ke.useCallback((function(e){if(!S){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===B.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&V.add(t)}}),[B,V,S]),J=ke.useMemo((function(){return Ce({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:F,context:{searchSuggestions:[]}},navigator:h,onStateChange:function(e){N(e.state)},getSources:function(e){var t=e.query,r=e.state,o=e.setContext,a=e.setStatus;return t?U.search([{query:t,indexName:n,params:Er({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(M.current),"hierarchy.lvl2:".concat(M.current),"hierarchy.lvl3:".concat(M.current),"hierarchy.lvl4:".concat(M.current),"hierarchy.lvl5:".concat(M.current),"hierarchy.lvl6:".concat(M.current),"content:".concat(M.current)],snippetEllipsisText:"\u2026",highlightPreTag:"<mark>",highlightPostTag:"</mark>",hitsPerPage:20},c)}]).catch((function(e){throw"RetryError"===e.name&&a("error"),e})).then((function(e){var t=e.results[0],n=t.hits,a=t.nbHits,c=gr(n,(function(e){return it(e)}));return r.context.searchSuggestions.length<Object.keys(c).length&&o({searchSuggestions:Object.keys(c)}),o({nbHits:a}),Object.values(c).map((function(e,t){return{sourceId:"hits".concat(t),onSelect:function(e){var t=e.item,r=e.event;K(t),r.shiftKey||r.ctrlKey||r.metaKey||l()},getItemUrl:function(e){return e.item.url},getItems:function(){return Object.values(gr(e,(function(e){return e.hierarchy.lvl1}))).map(u).map((function(e){return e.map((function(t){return Er(Er({},t),{},{__docsearch_parent:"lvl1"!==t.type&&e.find((function(e){return"lvl1"===e.type&&e.hierarchy.lvl1===t.hierarchy.lvl1}))})}))})).flat()}}}))})):S?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,r=e.event;K(t),r.shiftKey||r.ctrlKey||r.metaKey||l()},getItemUrl:function(e){return e.item.url},getItems:function(){return V.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,r=e.event;K(t),r.shiftKey||r.ctrlKey||r.metaKey||l()},getItemUrl:function(e){return e.item.url},getItems:function(){return B.getAll()}}]}})}),[n,c,U,l,V,B,K,F,a,h,u,S]),$=J.getEnvironmentProps,z=J.getRootProps,W=J.refresh;return function(e){var t=e.getEnvironmentProps,r=e.panelElement,n=e.formElement,o=e.inputElement;ke.useEffect((function(){if(r&&n&&o){var e=t({panelElement:r,formElement:n,inputElement:o}),a=e.onTouchStart,c=e.onTouchMove;return window.addEventListener("touchstart",a),window.addEventListener("touchmove",c),function(){window.removeEventListener("touchstart",a),window.removeEventListener("touchmove",c)}}}),[t,r,n,o])}({getEnvironmentProps:$,panelElement:T.current,formElement:q.current,inputElement:L.current}),function(e){var t=e.container;ke.useEffect((function(){if(t){var e=t.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),r=e[0],n=e[e.length-1];return t.addEventListener("keydown",o),function(){t.removeEventListener("keydown",o)}}function o(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===r&&(e.preventDefault(),n.focus()):document.activeElement===n&&(e.preventDefault(),r.focus()))}}),[t])}({container:R.current}),ke.useEffect((function(){return document.body.classList.add("DocSearch--active"),function(){var e,t;document.body.classList.remove("DocSearch--active"),null===(e=(t=window).scrollTo)||void 0===e||e.call(t,0,y)}}),[]),ke.useEffect((function(){window.matchMedia("(max-width: 768px)").matches&&(M.current=5)}),[]),ke.useEffect((function(){T.current&&(T.current.scrollTop=0)}),[x.query]),ke.useEffect((function(){F.length>0&&(W(),L.current&&L.current.focus())}),[F,W]),ke.useEffect((function(){function e(){if(_.current){var e=.01*window.innerHeight;_.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),ke.createElement("div",Or({ref:R},z({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===x.status&&"DocSearch-Container--Stalled","error"===x.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&l()}}),ke.createElement("div",{className:"DocSearch-Modal",ref:_},ke.createElement("header",{className:"DocSearch-SearchBar",ref:q},ke.createElement(It,Or({},J,{state:x,autoFocus:0===F.length,inputRef:L,isFromSelection:Boolean(F)&&F===H,translations:C,onClose:l}))),ke.createElement("div",{className:"DocSearch-Dropdown",ref:T},ke.createElement(Ot,Or({},J,{indexName:n,state:x,hitComponent:m,resultsFooterComponent:d,disableUserPersonalization:S,recentSearches:V,favoriteSearches:B,inputRef:L,translations:k,getMissingResultsUrl:I,onItemClick:function(e){K(e),l()}}))),ke.createElement("footer",{className:"DocSearch-Footer"},ke.createElement(Ne,{translations:D}))))}}}]); \ No newline at end of file diff --git a/assets/js/6945.46b11133.js b/assets/js/6945.46b11133.js new file mode 100644 index 0000000..0f780dd --- /dev/null +++ b/assets/js/6945.46b11133.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[6945],{6945:(c,e,s)=>{s.r(e)}}]); \ No newline at end of file diff --git a/assets/js/8443.1c75e53c.js b/assets/js/8443.1c75e53c.js deleted file mode 100644 index a9dfc62..0000000 --- a/assets/js/8443.1c75e53c.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 8443.1c75e53c.js.LICENSE.txt */ -(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[8443],{8443:(t,e,n)=>{"use strict";t.exports=n(295)},1228:(t,e,n)=>{"use strict";var i=n(2856),s={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(s.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(s.input,{marginTop:"-1px"}),t.exports=s},9050:(t,e,n)=>{"use strict";var i="aaDataset",s="aaValue",r="aaDatum",o=n(2856),a=n(4910),u=n(3561),c=n(1228),l=n(3109);function h(t){var e;(t=t||{}).templates=t.templates||{},t.source||o.error("missing source"),t.name&&(e=t.name,!/^[_a-zA-Z0-9-]+$/.test(e))&&o.error("invalid dataset name: "+t.name),this.query=null,this._isEmpty=!0,this.highlight=!!t.highlight,this.name=void 0===t.name||null===t.name?o.getUniqueId():t.name,this.source=t.source,this.displayFn=function(t){return t=t||"value",o.isFunction(t)?t:e;function e(e){return e[t]}}(t.display||t.displayKey),this.debounce=t.debounce,this.cache=!1!==t.cache,this.templates=function(t,e){return{empty:t.empty&&o.templatify(t.empty),header:t.header&&o.templatify(t.header),footer:t.footer&&o.templatify(t.footer),suggestion:t.suggestion||n};function n(t){return"<p>"+e(t)+"</p>"}}(t.templates,this.displayFn),this.css=o.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=o.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(n+"-"+this.name).length>0?a.element(t.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(t){return a.element(t).data(i)},h.extractValue=function(t){return a.element(t).data(s)},h.extractDatum=function(t){var e=a.element(t).data(r);return"string"==typeof e&&(e=JSON.parse(e)),e},o.mixin(h.prototype,l,{_render:function(t,e){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=e&&e.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(h.apply(this,l)).prepend(c.templates.header?f.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(n)this.$el.html(p.apply(this,l)).prepend(c.templates.header?f.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(e&&!Array.isArray(e))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",t)}function h(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),c.templates.empty.apply(this,e)}function p(){var t,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return t=a.element(p).css(this.css.suggestions),n=o.map(e,f),t.append.apply(t,n),t;function f(t){var e,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(e=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[t].concat(l)))).data(i,c.name),e.data(s,c.displayFn(t)||void 0),e.data(r,JSON.stringify(t)),e.children().each((function(){a.element(this).css(h.css.suggestionChild)})),e}}function f(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.header.apply(this,e)}function d(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.footer.apply(this,e)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!this.canceled&&t===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(t,e,n),this._render.apply(this,[t,e].concat(n))}}if(this.query=t,this.canceled=!1,this.shouldFetchFromCache(t))e.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(t,e.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(t,e,n){this.cachedQuery=t,this.cachedSuggestions=e,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(t){return this.cache&&this.cachedQuery===t&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),t.exports=h},3354:(t,e,n)=>{"use strict";var i=n(2856),s=n(4910),r=n(3109),o=n(9050),a=n(1228);function u(t){var e,n,r,o=this;(t=t||{}).menu||i.error("menu is required"),i.isArray(t.datasets)||i.isObject(t.datasets)||i.error("1 or more datasets required"),t.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=i.mixin({},a,t.appendTo?a.appendTo:{}),this.cssClasses=t.cssClasses=i.mixin({},a.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),r=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=s.element(t.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,r).on("click.aa",c,e),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=i.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=i.templatify(t.templates.empty),this.$empty=s.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(t.datasets,(function(e){return function(t,e,n){return new u.Dataset(i.mixin({$menu:t,cssClasses:n},e))}(o.$menu,e,t.cssClasses)})),i.each(this.datasets,(function(t){var e=t.getRoot();e&&0===e.parent().length&&o.$menu.append(e),t.onSync("rendered",o._onRendered,o)})),t.templates&&t.templates.footer&&(this.templates.footer=i.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;s.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,r,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",s.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=s.element(t.currentTarget);if(!e.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(e,!1)}),0)}},_onSuggestionMouseLeave:function(t){if(t.relatedTarget&&s.element(t.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(t,e){if(this.isEmpty=i.every(this.datasets,(function(t){return t.isEmpty()})),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,(function(t){return t.templates&&t.templates.empty}))?e.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),e.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,i,s;this.isOpen&&(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=e.index(n)+t)+1)%(e.length+1)-1)?(i<-1&&(i=e.length-1),this._setCursor(s=e.eq(i),!0),this._ensureVisible(s)):this.trigger("cursorRemoved"))},_ensureVisible:function(t){var e,n,i,s;n=(e=t.position().top)+t.height()+parseInt(t.css("margin-top"),10)+parseInt(t.css("margin-bottom"),10),i=this.$menu.scrollTop(),s=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),e<0?this.$menu.scrollTop(i+e):s<n&&this.$menu.scrollTop(i+(n-s))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(t){this.$menu.css("ltr"===t?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(t){var e=null;return t.length&&(e={raw:o.extractDatum(t),value:o.extractValue(t),datasetName:o.extractDatasetName(t)}),e},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(t){i.each(this.datasets,(function(e){e.update(t)}))},empty:function(){i.each(this.datasets,(function(t){t.clear()})),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,(function(t){t.destroy()}))}}),u.Dataset=o,t.exports=u},50:(t,e,n)=>{"use strict";var i=n(2856),s=n(4910);function r(t){t&&t.el||i.error("EventBus initialized without el"),this.$el=s.element(t.el)}i.mixin(r.prototype,{trigger:function(t,e,n,s){var r=i.Event("autocomplete:"+t);return this.$el.trigger(r,[e,n,s]),r}}),t.exports=r},3109:(t,e,n)=>{"use strict";var i=n(624),s=/\s+/;function r(t,e,n,i){var r;if(!n)return this;for(e=e.split(s),n=i?function(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function o(t,e,n){return function(){for(var i,s=0,r=t.length;!i&&s<r;s+=1)i=!1===t[s].apply(e,n);return!i}}t.exports={onSync:function(t,e,n){return r.call(this,"sync",t,e,n)},onAsync:function(t,e,n){return r.call(this,"async",t,e,n)},off:function(t){var e;if(!this._callbacks)return this;t=t.split(s);for(;e=t.shift();)delete this._callbacks[e];return this},trigger:function(t){var e,n,r,a,u;if(!this._callbacks)return this;t=t.split(s),r=[].slice.call(arguments,1);for(;(e=t.shift())&&(n=this._callbacks[e]);)a=o(n.sync,this,[e].concat(r)),u=o(n.async,this,[e].concat(r)),a()&&i(u);return this}}},3561:t=>{"use strict";t.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},2534:(t,e,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var s=n(2856),r=n(4910),o=n(3109);function a(t){var e,n,o,a,u,c=this;(t=t||{}).input||s.error("input is missing"),e=s.bind(this._onBlur,this),n=s.bind(this._onFocus,this),o=s.bind(this._onKeydown,this),a=s.bind(this._onInput,this),this.$hint=r.element(t.hint),this.$input=r.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=s.noop),s.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(t){i[t.which||t.keyCode]||s.defer(s.bind(c._onInput,c,t))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,r.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}a.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},s.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=i[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(t,e){var n,i,s;switch(t){case"tab":i=this.getHint(),s=this.getInputValue(),n=i&&i!==s&&!u(e);break;case"up":case"down":n=!u(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;if("tab"===t)n=!u(e);else n=!0;return n},_checkInputValue:function(){var t,e,n,i,s;t=this.getInputValue(),i=t,s=this.query,n=!(!(e=a.normalizeQuery(i)===a.normalizeQuery(s))||!this.query)&&this.query.length!==t.length,this.query=t,e?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(t){this.query=t},getInputValue:function(){return this.$input.val()},setInputValue:function(t,e){void 0===t&&(t=this.query),this.$input.val(t),e?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(t){this.$input.attr("aria-activedescendant",t)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n;n=(t=this.getInputValue())!==(e=this.getHint())&&0===e.indexOf(t),""!==t&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,e,n;return t=this.$input.val().length,e=this.$input[0].selectionStart,s.isNumber(e)?e===t:!document.selection||((n=document.selection.createRange()).moveStart("character",-t),t===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),t.exports=a},6549:(t,e,n)=>{"use strict";var i="aaAttrs",s=n(2856),r=n(4910),o=n(50),a=n(2534),u=n(3354),c=n(3561),l=n(1228);function h(t){var e,n;if((t=t||{}).input||s.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=s.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,this.clearOnSelected=!!t.clearOnSelected,this.tabAutocomplete=void 0===t.tabAutocomplete||!!t.tabAutocomplete,t.hint=!!t.hint,t.hint&&t.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=t.css=s.mixin({},l,t.appendTo?l.appendTo:{}),this.cssClasses=t.cssClasses=s.mixin({},l.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=s.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",s.getUniqueId()].join("-");var a=function(t){var e,n,o,a;e=r.element(t.input),n=r.element(c.wrapper.replace("%ROOT%",t.cssClasses.root)).css(t.css.wrapper),t.appendTo||"block"!==e.css("display")||"table"!==e.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);o=r.element(u).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&o.html(s.templatify(t.templates.dropdownMenu)());(a=e.clone().css(t.css.hint).css(function(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}(e))).val("").addClass(s.className(t.cssClasses.prefix,t.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();e.data(i,{"aria-autocomplete":e.attr("aria-autocomplete"),"aria-expanded":e.attr("aria-expanded"),"aria-owns":e.attr("aria-owns"),autocomplete:e.attr("autocomplete"),dir:e.attr("dir"),role:e.attr("role"),spellcheck:e.attr("spellcheck"),style:e.attr("style"),type:e.attr("type")}),e.addClass(s.className(t.cssClasses.prefix,t.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":t.datasets&&t.datasets[0]&&t.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":t.ariaLabel,"aria-owns":t.listboxId}).css(t.hint?t.css.input:t.css.inputWithNoHint);try{e.attr("dir")||e.attr("dir","auto")}catch(l){}return(n=t.appendTo?n.appendTo(r.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent()).prepend(t.hint?a:null).append(o),{wrapper:n,input:e,hint:a,menu:o}}(t);this.$node=a.wrapper;var u=this.$input=a.input;e=a.menu,n=a.hint,t.dropdownMenuContainer&&r.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),u.on("blur.aa",(function(t){var n=document.activeElement;s.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),s.defer((function(){u.focus()})))})),e.on("mousedown.aa",(function(t){t.preventDefault()})),this.eventBus=t.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:t.appendTo,wrapper:this.$node,menu:e,datasets:t.datasets,templates:t.templates,cssClasses:t.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(t),this._setLanguageDirection()}s.mixin(h.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];s.each(t.keyboardShortcuts,(function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)})),r.element(document).keydown((function(t){var i=t.target||t.srcElement,s=i.tagName;if(!i.isContentEditable&&"INPUT"!==s&&"SELECT"!==s&&"TEXTAREA"!==s){var r=t.which||t.keyCode;-1!==n.indexOf(r)&&(e.focus(),t.stopPropagation(),t.preventDefault())}}))}},_onSuggestionClicked:function(t,e){var n;(n=this.dropdown.getDatumForSuggestion(e))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(t,e){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(e&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var t=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",t.width+"px");var e=this.$node[0].getBoundingClientRect(),n=t.bottom-e.top;this.$node.css("top",n+"px");var i=t.left-e.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var t=this.input.getQuery();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var t,e;t=this.dropdown.getDatumForCursor(),e=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&t?this._select(t,n):this.autoselectOnBlur&&e?this._select(e,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(t,e){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var s={selectionMethod:"enterKey"};n?(this._select(n,s),e.preventDefault()):this.autoselect&&i&&(this._select(i,s),e.preventDefault())},_onTabKeyed:function(t,e){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),e.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(t,e){this.input.clearHintIfInvalid(),e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var t=this.input.getLanguageDirection();this.dir!==t&&(this.dir=t,this.$node.css("direction",t),this.dropdown.setLanguageDirection(t))},_updateHint:function(){var t,e,n,i,r;(t=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=a.normalizeQuery(e),i=s.escapeRegExChars(n),(r=new RegExp("^(?:"+i+")(.+$)","i").exec(t.value))?this.input.setHint(e+r[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(t){var e,n,i,s;e=this.input.getHint(),n=this.input.getQuery(),i=t||this.input.isCursorAtEnd(),e&&n!==e&&i&&((s=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(s.value),this.eventBus.trigger("autocompleted",s.raw,s.datasetName))},_select:function(t,e){void 0!==t.value&&this.input.setQuery(t.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName,e).isDefaultPrevented()&&(this.dropdown.close(),s.defer(s.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var t=this.input.getInputValue();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(t){t=s.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(t,e){var n=t.find(s.className(e.prefix,e.input));s.each(n.data(i),(function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)})),n.detach().removeClass(s.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData(i);t.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(8840),t.exports=h},4910:t=>{"use strict";t.exports={element:null}},6177:t=>{"use strict";t.exports=function(t){var e=t.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||t.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(e)return[e[1],e[2],e[3]]}},2856:(t,e,n)=>{"use strict";var i,s=n(8820),r=n(4910);function o(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(t){if(void 0===t&&(t=navigator.userAgent),/(msie|trident)/i.test(t)){var e=t.match(/(msie |rv:)(\d+(.\d+)?)/i);if(e)return e[2]}return!1},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return null==t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,(function(t,i){t&&(n.isArray(t)?e[i]=[].concat(t):n.isObject(t)&&(e[i]=n.cloneDeep(t)))})),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,(function(i,s){n&&(n=e.call(null,i,s,t)&&n)})),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,(function(i,s){if(e.call(null,i,s,t))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(t){if(this.isFunction(t))return t;var e=r.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return n?t+e:"."+s(t+e,{isIdentifier:!0})},escapeHighlightedString:function(t,e,n){e=e||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(e)),n=n||"</em>";var s=document.createElement("div");s.appendChild(document.createTextNode(n));var r=document.createElement("div");return r.appendChild(document.createTextNode(t)),r.innerHTML.replace(RegExp(o(i.innerHTML),"g"),e).replace(RegExp(o(s.innerHTML),"g"),n)}}},9983:(t,e,n)=>{"use strict";var i=n(2856),s=n(533),r=n(6177);var o,a,u=(o=[],a=window.Promise.resolve(),function(t,e){return function(n,s){(function(t,e){return window.Promise.resolve().then((function(){return o.length&&(a=t.search(o),o=[]),a})).then((function(t){if(t)return t.results[e]}))})(t.as,o.push({indexName:t.indexName,query:n,params:e})-1).then((function(t){t&&s(t.hits,t)})).catch((function(t){i.error(t.message)}))}});t.exports=function(t,e){var n=r(t.as._ua);if(n&&n[0]>=3&&n[1]>20){var i="autocomplete.js "+s;-1===t.as._ua.indexOf(i)&&(t.as._ua+="; "+i)}return u(t,e)}},8840:(t,e,n)=>{"use strict";t.exports={hits:n(9983),popularIn:n(4445)}},4445:(t,e,n)=>{"use strict";var i=n(2856),s=n(533),r=n(6177);t.exports=function(t,e,n,o){var a=r(t.as._ua);if(a&&a[0]>=3&&a[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+s),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){t.search(a,e,(function(t,a){if(t)i.error(t.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var f=r(c.as._ua);return f&&f[0]>=3&&f[1]>20&&(e.additionalUA="autocomplete.js "+s),void c.search(u(h),p,(function(t,e){if(t)i.error(t.message);else{var n=[];if(o.includeAll){var s=o.allTitle||"All departments";n.push(i.mixin({facet:{value:s,count:e.nbHits}},i.cloneDeep(h)))}i.each(e.facets,(function(t,e){i.each(t,(function(t,s){n.push(i.mixin({facet:{facet:e,value:s,count:t}},i.cloneDeep(h)))}))}));for(var r=1;r<a.hits.length;++r)n.push(a.hits[r]);l(n,a)}}))}l([])}}))}}},295:(t,e,n)=>{"use strict";var i=n(6990);n(4910).element=i;var s=n(2856);s.isArray=i.isArray,s.isFunction=i.isFunction,s.isObject=i.isPlainObject,s.bind=i.proxy,s.each=function(t,e){i.each(t,(function(t,n){return e(n,t)}))},s.map=i.map,s.mixin=i.extend,s.Event=i.Event;var r="aaAutocomplete",o=n(6549),a=n(50);function u(t,e,n,u){n=s.isArray(n)?n:[].slice.call(arguments,2);var c=i(t).each((function(t,s){var c=i(s),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,tabAutocomplete:e.tabAutocomplete,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,clearOnSelected:e.clearOnSelected,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo,autoWidth:e.autoWidth,ariaLabel:e.ariaLabel||s.getAttribute("aria-label")});c.data(r,h)}));return c.autocomplete={},s.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(t){c.autocomplete[t]=function(){var e,n=arguments;return c.each((function(s,o){var a=i(o).data(r);e=a[t].apply(a,n)})),e}})),c}u.sources=o.sources,u.escapeHighlightedString=s.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},t.exports=u},533:t=>{t.exports="0.38.1"},6990:t=>{var e;e=window,t.exports=function(t){var e,n,i=function(){var e,n,i,s,r,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=t.document,p={},f={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,w=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],C=["after","prepend","before","append"],x=h.createElement("table"),_=h.createElement("tr"),S={tr:h.createElement("tbody"),tbody:x,thead:x,tfoot:x,td:_,th:_,"*":h.createElement("div")},E=/complete|loaded|interactive/,A=/^[\w-]*$/,$={},T=$.toString,O={},D=h.createElement("div"),N={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},k=Array.isArray||function(t){return t instanceof Array};function I(t){return null==t?String(t):$[T.call(t)]||"object"}function P(t){return"function"==I(t)}function L(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function F(t){return"object"==I(t)}function R(t){return F(t)&&!L(t)&&Object.getPrototypeOf(t)==Object.prototype}function q(t){var e=!!t&&"length"in t&&t.length,n=i.type(t);return"function"!=n&&!L(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function V(t){return c.call(t,(function(t){return null!=t}))}function H(t){return t.length>0?i.fn.concat.apply([],t):t}function B(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function K(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function j(t,e){return"number"!=typeof e||d[B(t)]?e:e+"px"}function z(t){var e,n;return p[t]||(e=h.createElement(t),h.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),p[t]=n),p[t]}function U(t){return"children"in t?l.call(t.children):i.map(t.childNodes,(function(t){if(1==t.nodeType)return t}))}function Q(t,e){var n,i=t?t.length:0;for(n=0;n<i;n++)this[n]=t[n];this.length=i,this.selector=e||""}function W(t,i,s){for(n in i)s&&(R(i[n])||k(i[n]))?(R(i[n])&&!R(t[n])&&(t[n]={}),k(i[n])&&!k(t[n])&&(t[n]=[]),W(t[n],i[n],s)):i[n]!==e&&(t[n]=i[n])}function Z(t,e){return null==e?i(t):i(t).filter(e)}function X(t,e,n,i){return P(e)?e.call(t,n,i):e}function G(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function J(t,n){var i=t.className||"",s=i&&i.baseVal!==e;if(n===e)return s?i.baseVal:i;s?i.baseVal=n:t.className=n}function Y(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?i.parseJSON(t):t):t}catch(e){return t}}function tt(t,e){e(t);for(var n=0,i=t.childNodes.length;n<i;n++)tt(t.childNodes[n],e)}return O.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,s=t.parentNode,r=!s;return r&&(s=D).appendChild(t),i=~O.qsa(s,e).indexOf(t),r&&D.removeChild(t),i},r=function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},o=function(t){return c.call(t,(function(e,n){return t.indexOf(e)==n}))},O.fragment=function(t,n,s){var r,o,a;return m.test(t)&&(r=i(h.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(v,"<$1></$2>")),n===e&&(n=g.test(t)&&RegExp.$1),n in S||(n="*"),(a=S[n]).innerHTML=""+t,r=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),R(s)&&(o=i(r),i.each(s,(function(t,e){b.indexOf(t)>-1?o[t](e):o.attr(t,e)}))),r},O.Z=function(t,e){return new Q(t,e)},O.isZ=function(t){return t instanceof O.Z},O.init=function(t,n){var s;if(!t)return O.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&g.test(t))s=O.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}else{if(P(t))return i(h).ready(t);if(O.isZ(t))return t;if(k(t))s=V(t);else if(F(t))s=[t],t=null;else if(g.test(t))s=O.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}}return O.Z(s,t)},(i=function(t,e){return O.init(t,e)}).extend=function(t){var e,n=l.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach((function(n){W(t,n,e)})),t},O.qsa=function(t,e){var n,i="#"==e[0],s=!i&&"."==e[0],r=i||s?e.slice(1):e,o=A.test(r);return t.getElementById&&o&&i?(n=t.getElementById(r))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:l.call(o&&!i&&t.getElementsByClassName?s?t.getElementsByClassName(r):t.getElementsByTagName(e):t.querySelectorAll(e))},i.contains=h.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},i.type=I,i.isFunction=P,i.isWindow=L,i.isArray=k,i.isPlainObject=R,i.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},i.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},i.inArray=function(t,e,n){return a.indexOf.call(e,t,n)},i.camelCase=r,i.trim=function(t){return null==t?"":String.prototype.trim.call(t)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(t,e){var n,i,s,r=[];if(q(t))for(i=0;i<t.length;i++)null!=(n=e(t[i],i))&&r.push(n);else for(s in t)null!=(n=e(t[s],s))&&r.push(n);return H(r)},i.each=function(t,e){var n,i;if(q(t)){for(n=0;n<t.length;n++)if(!1===e.call(t[n],n,t[n]))return t}else for(i in t)if(!1===e.call(t[i],i,t[i]))return t;return t},i.grep=function(t,e){return c.call(t,e)},t.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),(function(t,e){$["[object "+e+"]"]=e.toLowerCase()})),i.fn={constructor:O.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=O.isZ(e)?e.toArray():e;return u.apply(O.isZ(this)?this.toArray():this,n)},map:function(t){return i(i.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return i(l.apply(this,arguments))},ready:function(t){return E.test(h.readyState)&&h.body?t(i):h.addEventListener("DOMContentLoaded",(function(){t(i)}),!1),this},get:function(t){return t===e?l.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(t){return a.every.call(this,(function(e,n){return!1!==t.call(e,n,e)})),this},filter:function(t){return P(t)?this.not(this.not(t)):i(c.call(this,(function(e){return O.matches(e,t)})))},add:function(t,e){return i(o(this.concat(i(t,e))))},is:function(t){return this.length>0&&O.matches(this[0],t)},not:function(t){var n=[];if(P(t)&&t.call!==e)this.each((function(e){t.call(this,e)||n.push(this)}));else{var s="string"==typeof t?this.filter(t):q(t)&&P(t.item)?l.call(t):i(t);this.forEach((function(t){s.indexOf(t)<0&&n.push(t)}))}return i(n)},has:function(t){return this.filter((function(){return F(t)?i.contains(this,t):i(this).find(t).size()}))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!F(t)?t:i(t)},last:function(){var t=this[this.length-1];return t&&!F(t)?t:i(t)},find:function(t){var e=this;return t?"object"==typeof t?i(t).filter((function(){var t=this;return a.some.call(e,(function(e){return i.contains(e,t)}))})):1==this.length?i(O.qsa(this[0],t)):this.map((function(){return O.qsa(this,t)})):i()},closest:function(t,e){var n=[],s="object"==typeof t&&i(t);return this.each((function(i,r){for(;r&&!(s?s.indexOf(r)>=0:O.matches(r,t));)r=r!==e&&!M(r)&&r.parentNode;r&&n.indexOf(r)<0&&n.push(r)})),i(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=i.map(n,(function(t){if((t=t.parentNode)&&!M(t)&&e.indexOf(t)<0)return e.push(t),t}));return Z(e,t)},parent:function(t){return Z(o(this.pluck("parentNode")),t)},children:function(t){return Z(this.map((function(){return U(this)})),t)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(t){return Z(this.map((function(t,e){return c.call(U(e.parentNode),(function(t){return t!==e}))})),t)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(t){return i.map(this,(function(e){return e[t]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))}))},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=P(t);if(this[0]&&!e)var n=i(t).get(0),s=n.parentNode||this.length>1;return this.each((function(r){i(this).wrapAll(e?t.call(this,r):s?n.cloneNode(!0):n)}))},wrapAll:function(t){if(this[0]){var e;for(i(this[0]).before(t=i(t));(e=t.children()).length;)t=e.first();i(t).append(this)}return this},wrapInner:function(t){var e=P(t);return this.each((function(n){var s=i(this),r=s.contents(),o=e?t.call(this,n):t;r.length?r.wrapAll(o):s.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(t){return this.each((function(){var n=i(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()}))},prev:function(t){return i(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return i(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each((function(e){var n=this.innerHTML;i(this).empty().append(X(this,t,e,n))})):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each((function(e){var n=X(this,t,e,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,i){var s;return"string"!=typeof t||1 in arguments?this.each((function(e){if(1===this.nodeType)if(F(t))for(n in t)G(this,n,t[n]);else G(this,t,X(this,i,e,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(s=this[0].getAttribute(t))?s:e},removeAttr:function(t){return this.each((function(){1===this.nodeType&&t.split(" ").forEach((function(t){G(this,t)}),this)}))},prop:function(t,e){return t=N[t]||t,1 in arguments?this.each((function(n){this[t]=X(this,e,n,this[t])})):this[0]&&this[0][t]},removeProp:function(t){return t=N[t]||t,this.each((function(){delete this[t]}))},data:function(t,n){var i="data-"+t.replace(w,"-$1").toLowerCase(),s=1 in arguments?this.attr(i,n):this.attr(i);return null!==s?Y(s):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each((function(e){this.value=X(this,t,e,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(t){var n=i(this),s=X(this,e,t,n.offset()),r=n.offsetParent().offset(),o={top:s.top-r.top,left:s.left-r.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var s=this[0];if("string"==typeof t){if(!s)return;return s.style[r(t)]||getComputedStyle(s,"").getPropertyValue(t)}if(k(t)){if(!s)return;var o={},a=getComputedStyle(s,"");return i.each(t,(function(t,e){o[e]=s.style[r(e)]||a.getPropertyValue(e)})),o}}var u="";if("string"==I(t))e||0===e?u=B(t)+":"+j(t,e):this.each((function(){this.style.removeProperty(B(t))}));else for(n in t)t[n]||0===t[n]?u+=B(n)+":"+j(n,t[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(t){return t?this.indexOf(i(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&a.some.call(this,(function(t){return this.test(J(t))}),K(t))},addClass:function(t){return t?this.each((function(e){if("className"in this){s=[];var n=J(this);X(this,t,e,n).split(/\s+/g).forEach((function(t){i(this).hasClass(t)||s.push(t)}),this),s.length&&J(this,n+(n?" ":"")+s.join(" "))}})):this},removeClass:function(t){return this.each((function(n){if("className"in this){if(t===e)return J(this,"");s=J(this),X(this,t,n,s).split(/\s+/g).forEach((function(t){s=s.replace(K(t)," ")})),J(this,s.trim())}}))},toggleClass:function(t,n){return t?this.each((function(s){var r=i(this);X(this,t,s,J(this)).split(/\s+/g).forEach((function(t){(n===e?!r.hasClass(t):n)?r.addClass(t):r.removeClass(t)}))})):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),s=y.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(i(t).css("margin-top"))||0,n.left-=parseFloat(i(t).css("margin-left"))||0,s.top+=parseFloat(i(e[0]).css("border-top-width"))||0,s.left+=parseFloat(i(e[0]).css("border-left-width"))||0,{top:n.top-s.top,left:n.left-s.left}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent||h.body;t&&!y.test(t.nodeName)&&"static"==i(t).css("position");)t=t.offsetParent;return t}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(t){var n=t.replace(/./,(function(t){return t[0].toUpperCase()}));i.fn[t]=function(s){var r,o=this[0];return s===e?L(o)?o["inner"+n]:M(o)?o.documentElement["scroll"+n]:(r=this.offset())&&r[t]:this.each((function(e){(o=i(this)).css(t,X(this,s,e,o[t]()))}))}})),C.forEach((function(n,s){var r=s%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(t){var s=[];return"array"==(n=I(t))?(t.forEach((function(t){return t.nodeType!==e?s.push(t):i.zepto.isZ(t)?s=s.concat(t.get()):void(s=s.concat(O.fragment(t)))})),s):"object"==n||null==t?t:O.fragment(t)})),u=this.length>1;return a.length<1?this:this.each((function(e,n){o=r?n:n.parentNode,n=0==s?n.nextSibling:1==s?n.firstChild:2==s?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(e){if(u)e=e.cloneNode(!0);else if(!o)return i(e).remove();o.insertBefore(e,n),c&&tt(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}}))}))}))},i.fn[r?n+"To":"insert"+(s?"Before":"After")]=function(t){return i(t)[n](this),this}})),O.Z.prototype=Q.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(e){var n,i=1,s=Array.prototype.slice,r=e.isFunction,o=function(t){return"string"==typeof t},a={},u={},c="onfocusin"in t,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(t){return t._zid||(t._zid=i++)}function f(t,e,n,i){if((e=d(e)).ns)var s=g(e.ns);return(a[p(t)]||[]).filter((function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||s.test(t.ns))&&(!n||p(t.fn)===p(n))&&(!i||t.sel==i)}))}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function g(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!c&&t.e in l||!!e}function v(t){return h[t]||c&&l[t]||t}function y(t,i,s,r,o,u,c){var l=p(t),f=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return e(document).ready(s);var a=d(i);a.fn=s,a.sel=o,a.e in h&&(s=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||s;a.proxy=function(e){if(!(e=S(e)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(e,"data");i&&!i.writable||(e.data=r)}catch(e){}var s=l.apply(t,e._args==n?[e]:[e].concat(e._args));return!1===s&&(e.preventDefault(),e.stopPropagation()),s}},a.i=f.length,f.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,m(a,c))}))}function w(t,e,n,i,s){var r=p(t);(e||"").split(/\s/).forEach((function(e){f(t,e,n,i).forEach((function(e){delete a[r][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,m(e,s))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:w},e.proxy=function(t,n){var i=2 in arguments&&s.call(arguments,2);if(r(t)){var a=function(){return t.apply(n,i?i.concat(s.call(arguments)):arguments)};return a._zid=p(t),a}if(o(n))return i?(i.unshift(t[n],t),e.proxy.apply(null,i)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var b=function(){return!0},C=function(){return!1},x=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,_={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function S(t,i){if(i||!t.isDefaultPrevented){i||(i=t),e.each(_,(function(e,n){var s=i[e];t[e]=function(){return this[n]=b,s&&s.apply(i,arguments)},t[n]=C}));try{t.timeStamp||(t.timeStamp=Date.now())}catch(s){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(t.isDefaultPrevented=b)}return t}function E(t){var e,i={originalEvent:t};for(e in t)x.test(e)||t[e]===n||(i[e]=t[e]);return S(i,t)}e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,i,a,u,c){var l,h,p=this;return t&&!o(t)?(e.each(t,(function(t,e){p.on(t,i,a,e,c)})),p):(o(i)||r(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=C),p.each((function(n,r){c&&(l=function(t){return w(r,t.type,u),u.apply(this,arguments)}),i&&(h=function(t){var n,o=e(t.target).closest(i,r).get(0);if(o&&o!==r)return n=e.extend(E(t),{currentTarget:o,liveFired:r}),(l||u).apply(o,[n].concat(s.call(arguments,1)))}),y(r,t,u,a,i,h||l)})))},e.fn.off=function(t,i,s){var a=this;return t&&!o(t)?(e.each(t,(function(t,e){a.off(t,i,e)})),a):(o(i)||r(s)||!1===s||(s=i,i=n),!1===s&&(s=C),a.each((function(){w(this,t,s,i)})))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):S(t))._args=n,this.each((function(){t.type in l&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)}))},e.fn.triggerHandler=function(t,n){var i,s;return this.each((function(r,a){(i=E(o(t)?e.Event(t):t))._args=n,i.target=a,e.each(f(a,t.type||t),(function(t,e){if(s=e.proxy(i),i.isImmediatePropagationStopped())return!1}))})),s},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}})),e.Event=function(t,e){o(t)||(t=(e=t).type);var n=document.createEvent(u[t]||"Events"),i=!0;if(e)for(var s in e)"bubbles"==s?i=!!e[s]:n[s]=e[s];return n.initEvent(t,i,!0),S(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(t){var e={},n=t.fn.data,i=t.camelCase,s=t.expando="Zepto"+ +new Date,r=[];function o(r,o){var u=r[s],c=u&&e[u];if(void 0===o)return c||a(r);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(t(r),o)}function a(n,r,o){var a=n[s]||(n[s]=++t.uuid),c=e[a]||(e[a]=u(n));return void 0!==r&&(c[i(r)]=o),c}function u(e){var n={};return t.each(e.attributes||r,(function(e,s){0==s.name.indexOf("data-")&&(n[i(s.name.replace("data-",""))]=t.zepto.deserializeValue(s.value))})),n}t.fn.data=function(e,n){return void 0===n?t.isPlainObject(e)?this.each((function(n,i){t.each(e,(function(t,e){a(i,t,e)}))})):0 in this?o(this[0],e):void 0:this.each((function(){a(this,e,n)}))},t.data=function(e,n,i){return t(e).data(n,i)},t.hasData=function(n){var i=n[s],r=i&&e[i];return!!r&&!t.isEmptyObject(r)},t.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var r=this[s],o=r&&e[r];o&&t.each(n||o,(function(t){delete o[n?i(this):t]}))}))},["remove","empty"].forEach((function(e){var n=t.fn[e];t.fn[e]=function(){var t=this.find("*");return"remove"===e&&(t=t.add(this)),t.removeData(),n.call(this)}}))}(i),i}(e)},8820:t=>{"use strict";var e={}.hasOwnProperty,n=/[ -,\.\/:-@\[-\^`\{-~]/,i=/[ -,\.\/:-@\[\]\^`\{-~]/,s=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,r=function t(r,o){"single"!=(o=function(t,n){if(!t)return n;var i={};for(var s in n)i[s]=e.call(t,s)?t[s]:n[s];return i}(o,t.options)).quotes&&"double"!=o.quotes&&(o.quotes="single");for(var a="double"==o.quotes?'"':"'",u=o.isIdentifier,c=r.charAt(0),l="",h=0,p=r.length;h<p;){var f=r.charAt(h++),d=f.charCodeAt(),g=void 0;if(d<32||d>126){if(d>=55296&&d<=56319&&h<p){var m=r.charCodeAt(h++);56320==(64512&m)?d=((1023&d)<<10)+(1023&m)+65536:h--}g="\\"+d.toString(16).toUpperCase()+" "}else g=o.escapeEverything?n.test(f)?"\\"+f:"\\"+d.toString(16).toUpperCase()+" ":/[\t\n\f\r\x0B]/.test(f)?"\\"+d.toString(16).toUpperCase()+" ":"\\"==f||!u&&('"'==f&&a==f||"'"==f&&a==f)||u&&i.test(f)?"\\"+f:f;l+=g}return u&&(/^-[-\d]/.test(l)?l="\\-"+l.slice(1):/\d/.test(c)&&(l="\\3"+c+" "+l.slice(1))),l=l.replace(s,(function(t,e,n){return e&&e.length%2?t:(e||"")+n})),!u&&o.wrap?a+l+a:l};r.options={escapeEverything:!1,isIdentifier:!1,quotes:"single",wrap:!1},r.version="3.0.0",t.exports=r},624:(t,e,n)=>{"use strict";var i,s,r,o=[n(5525),n(4785),n(8291),n(2709),n(2506),n(9176)],a=-1,u=[],c=!1;function l(){i&&s&&(i=!1,s.length?u=s.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var t=u.length,e=setTimeout(l);t;){for(s=u,u=[];s&&++a<t;)s[a].run();a=-1,t=u.length}s=null,a=-1,i=!1,clearTimeout(e)}}for(var p=-1,f=o.length;++p<f;)if(o[p]&&o[p].test&&o[p].test()){r=o[p].install(h);break}function d(t,e){this.fun=t,this.array=e}d.prototype.run=function(){var t=this.fun,e=this.array;switch(e.length){case 0:return t();case 1:return t(e[0]);case 2:return t(e[0],e[1]);case 3:return t(e[0],e[1],e[2]);default:return t.apply(null,e)}},t.exports=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),c||i||(c=!0,r())}},2709:(t,e,n)=>{"use strict";e.test=function(){return!n.g.setImmediate&&void 0!==n.g.MessageChannel},e.install=function(t){var e=new n.g.MessageChannel;return e.port1.onmessage=t,function(){e.port2.postMessage(0)}}},8291:(t,e,n)=>{"use strict";var i=n.g.MutationObserver||n.g.WebKitMutationObserver;e.test=function(){return i},e.install=function(t){var e=0,s=new i(t),r=n.g.document.createTextNode("");return s.observe(r,{characterData:!0}),function(){r.data=e=++e%2}}},4785:(t,e,n)=>{"use strict";e.test=function(){return"function"==typeof n.g.queueMicrotask},e.install=function(t){return function(){n.g.queueMicrotask(t)}}},2506:(t,e,n)=>{"use strict";e.test=function(){return"document"in n.g&&"onreadystatechange"in n.g.document.createElement("script")},e.install=function(t){return function(){var e=n.g.document.createElement("script");return e.onreadystatechange=function(){t(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},n.g.document.documentElement.appendChild(e),t}}},9176:(t,e)=>{"use strict";e.test=function(){return!0},e.install=function(t){return function(){setTimeout(t,0)}}}}]); \ No newline at end of file diff --git a/assets/js/8443.1c75e53c.js.LICENSE.txt b/assets/js/8443.1c75e53c.js.LICENSE.txt deleted file mode 100644 index 4f7ccd8..0000000 --- a/assets/js/8443.1c75e53c.js.LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -/*! https://mths.be/cssesc v3.0.0 by @mathias */ diff --git a/assets/js/8894.2f96187b.js b/assets/js/8894.2f96187b.js new file mode 100644 index 0000000..5dbd675 --- /dev/null +++ b/assets/js/8894.2f96187b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[8894],{8894:(c,e,s)=>{s.r(e)}}]); \ No newline at end of file diff --git a/assets/js/8ba33b25.536d428e.js b/assets/js/8ba33b25.536d428e.js deleted file mode 100644 index f87676d..0000000 --- a/assets/js/8ba33b25.536d428e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[9985],{5386:(e,t,a)=>{a.d(t,{Z:()=>o});var n,r,l=a(7294);function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},i.apply(this,arguments)}const o=e=>{let{title:t,titleId:a,...o}=e;return l.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 253.19 53.76","aria-labelledby":a},o),t?l.createElement("title",{id:a},t):null,n||(n=l.createElement("g",{className:"main"},l.createElement("path",{d:"M179.82 40c7.19 0 12.93-3.25 14.78-8.58l-7.3-1.86a7.76 7.76 0 0 1-7.13 4.06c-4.23 0-7.19-2.73-7.89-6.9h23.31a18.22 18.22 0 0 0 .12-2.61c0-9.33-6.5-15.65-16-15.65s-16.3 6.27-16.3 15.54c0 9.57 6.79 16 16.41 16Zm-.29-25.17A7.34 7.34 0 0 1 187 21.4h-14.78c.7-3.95 3.43-6.56 7.31-6.56ZM209.57 36.15V22.38a6.29 6.29 0 0 1 6.26-6.49c3.48 0 5.56 2.55 5.56 6.2V33.7l8.61-1.78v-11c0-7.13-4.47-12.35-11.2-12.35-3.59 0-6.43 1.68-8.63 5.05h-.58V9.39H201v28.54ZM237.85 30.28l8.55-1.78V15.65h6.79V9.39h-6.79l.06-9.39h-6.72l-1.69 9.39h-4.4v6.26h4.17l.03 14.63zM95.8 13.16h-.58a11.72 11.72 0 0 0-9.68-4.64c-8.24 0-14 6.15-14 15.72 0 9.16 5.79 15.24 14 15.24A11.84 11.84 0 0 0 95 35.19h.58v3.31c0 4.87-3.07 8-7.83 8a7.53 7.53 0 0 1-7.54-5.22l-8.29 1.63c1.44 6.66 7.41 10.43 16.08 10.43 9.92 0 16.18-5.45 16.18-14.61V9.39H95.8ZM88 32.47c-4.58 0-7.88-3.48-7.88-8.23s3.3-8.41 7.88-8.41 7.83 3.54 7.83 8.41-3.22 8.23-7.83 8.23ZM119.23 22.15c0-3.83 2.2-6.32 5.56-6.32s5.34 2.49 5.34 6.32v16.93h8.64V22.15c0-3.71 2.32-6.32 5.68-6.32s5.55 2.72 5.55 6.32v16.93h8.59V20.7c0-7.19-4.7-12.18-11.25-12.18a10.21 10.21 0 0 0-9.34 5.57h-.58a10.11 10.11 0 0 0-9.1-5.62 9.63 9.63 0 0 0-8.58 5.33h-.58V9.39h-8.52v29.69h8.58ZM51.43 8.47C41.51 8.47 35 14.67 35 24.24S41.51 40 51.43 40 67.9 33.86 67.9 24.24 61.29 8.47 51.43 8.47Zm0 24.23c-4.64 0-7.89-3.54-7.89-8.46s3.25-8.41 7.89-8.41 7.83 3.48 7.83 8.41S56 32.7 51.43 32.7ZM16.18 32.93c-4.35 0-7.6-3.59-7.6-8.69s3.31-8.7 7.65-8.7a7.27 7.27 0 0 1 7.08 5.51l8-1.05c-1-7-7.13-11.53-15.19-11.53C6.55 8.47 0 14.79 0 24.24S6.67 40 16.12 40c7.94 0 14.15-4.53 15.25-11.54l-8.06-1a7.29 7.29 0 0 1-7.13 5.47Z"}))),r||(r=l.createElement("g",{className:"subscript",fill:"#231f20"},l.createElement("path",{d:"M110.75 43.65h2.67l2.12 7.45h.17l2.14-7.45h2.66l-3.05 9.77h-3.66ZM146.34 53.05a4.55 4.55 0 0 1-1.72-1.86 5.91 5.91 0 0 1-.62-2.74 5.59 5.59 0 0 1 .61-2.67 4.36 4.36 0 0 1 1.71-1.8 4.88 4.88 0 0 1 2.51-.64 4.65 4.65 0 0 1 2.45.65 4.37 4.37 0 0 1 1.66 1.82 5.77 5.77 0 0 1 .6 2.67v.46a3.9 3.9 0 0 1 0 .4h-6.9a3.28 3.28 0 0 0 .42 1.21 2.19 2.19 0 0 0 1.94 1.07 2.25 2.25 0 0 0 1.25-.36 2.35 2.35 0 0 0 .84-1l2.18.61a3.86 3.86 0 0 1-.92 1.5 4.17 4.17 0 0 1-1.52 1 5.33 5.33 0 0 1-1.93.34 4.7 4.7 0 0 1-2.56-.66Zm4.66-5.46a3.13 3.13 0 0 0-.4-1.11 2.11 2.11 0 0 0-.76-.78 2 2 0 0 0-1-.27 2 2 0 0 0-1 .26 2.08 2.08 0 0 0-.74.76 3 3 0 0 0-.4 1.14ZM179 43.65h2.48V45h.19a2.39 2.39 0 0 1 .88-1.1 2.14 2.14 0 0 1 1.27-.41 3.12 3.12 0 0 1 .54 0 1.47 1.47 0 0 1 .46.17v2.56a3.68 3.68 0 0 0-.77-.26 3 3 0 0 0-.67-.09 1.61 1.61 0 0 0-1.35.7 3 3 0 0 0-.52 1.83v5H179ZM212.83 53.32a3.23 3.23 0 0 1-1.45-1.24 3.62 3.62 0 0 1-.5-1.93h2.21a1.74 1.74 0 0 0 .58 1.26 2.11 2.11 0 0 0 1.46.48 1.94 1.94 0 0 0 1.16-.32 1 1 0 0 0 .43-.89.79.79 0 0 0-.23-.63 1.34 1.34 0 0 0-.58-.3 6.18 6.18 0 0 0-1-.18h-.49a8.3 8.3 0 0 1-1.72-.39 2.5 2.5 0 0 1-1.7-2.61 3.14 3.14 0 0 1 .49-1.75 3 3 0 0 1 1.36-1.13 5 5 0 0 1 2-.39 5.14 5.14 0 0 1 2.1.41 3.28 3.28 0 0 1 1.44 1.14 2.87 2.87 0 0 1 .5 1.74h-2.29a1.28 1.28 0 0 0-.49-1 1.9 1.9 0 0 0-1.26-.38 1.83 1.83 0 0 0-1.1.31 1 1 0 0 0-.44.83.73.73 0 0 0 .26.61 1.42 1.42 0 0 0 .64.31 9.54 9.54 0 0 0 1.11.17l.29.06h.12a6.94 6.94 0 0 1 1.72.37 2.93 2.93 0 0 1 1.24.9 2.61 2.61 0 0 1 .49 1.67 3 3 0 0 1-1.92 2.93 5.61 5.61 0 0 1-2.24.4 5.25 5.25 0 0 1-2.19-.45ZM245.75 53.05a4.62 4.62 0 0 1-1.75-1.86 5.91 5.91 0 0 1-.61-2.74 5.71 5.71 0 0 1 .6-2.67 4.45 4.45 0 0 1 1.72-1.8 4.85 4.85 0 0 1 2.5-.64 4.66 4.66 0 0 1 2.46.65 4.43 4.43 0 0 1 1.66 1.82 5.89 5.89 0 0 1 .59 2.67v.46a2.24 2.24 0 0 1 0 .4H246a3.28 3.28 0 0 0 .42 1.21 2.29 2.29 0 0 0 .82.79 2.18 2.18 0 0 0 1.11.28 2.22 2.22 0 0 0 1.24-.36 2.45 2.45 0 0 0 .85-1l2.17.61a3.84 3.84 0 0 1-.91 1.5 4.21 4.21 0 0 1-1.53 1 5.32 5.32 0 0 1-1.92.34 4.76 4.76 0 0 1-2.5-.66Zm4.63-5.46a3.12 3.12 0 0 0-.39-1.11 2.19 2.19 0 0 0-.76-.78 2.07 2.07 0 0 0-1-.27 2 2 0 0 0-1 .26 2.1 2.1 0 0 0-.75.76 3.2 3.2 0 0 0-.39 1.14Z"}))))}},3057:(e,t,a)=>{a.d(t,{ZP:()=>i});var n=a(7462),r=(a(7294),a(3905));const l={toc:[]};function i(e){let{components:t,...a}=e;return(0,r.kt)("wrapper",(0,n.Z)({},l,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source ",(0,r.kt)("a",{parentName:"p",href:"/"},"Cogment")," platform for environments following the OpenAI Gym mold, making it easy to get started."),(0,r.kt)("p",null,"Simply clone the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cogment/cogment-verse"},"repo")," and start training."))}i.isMDXComponent=!0},2058:(e,t,a)=>{a.d(t,{_:()=>o});var n=a(7462),r=a(7294),l=a(6010);const i="cta_i4Jo";function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,l.Z)(a,i)},o),t)}},4388:(e,t,a)=>{a.d(t,{V:()=>o});var n=a(7462),r=a(7294),l=a(6010);const i="hero_uw3b";function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,l.Z)(a,"hero",i)},o),t)}},5137:(e,t,a)=>{a.d(t,{W:()=>o});var n=a(7462),r=a(7294);const l="screenshots_x3pV";var i=a(6010);function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,i.Z)(l,a)},o),t)}},936:(e,t,a)=>{a.d(t,{$:()=>o});var n=a(7462),r=a(7294),l=a(6010);const i="section_ccoD";function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,l.Z)(a,i)},o),t)}},5673:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(7294);const r=a.p+"assets/images/atari_double_dunk-957d0719ded0c73d0d19c54205e9d89f.gif",l=a.p+"assets/images/classic_go-194543ef4e433ad1a827c74bb296b9f7.gif",i=a.p+"assets/images/atari_montezumas_revenge-1451d09162dd95c536af9e45af10d6b5.gif",o=a.p+"assets/images/lunar_lander-49afc13c99c3d30fd673b642cbbc2c9b.gif";const s=function(){return n.createElement(n.Fragment,null,n.createElement("img",{src:r,alt:"Atari Double Dunk - From Petting Zoo"}),n.createElement("img",{src:l,alt:"Go - From Petting Zoo"}),n.createElement("img",{src:i,alt:"Atari Montezuma's Revenge - From Open AI Gym"}),n.createElement("img",{src:o,alt:"Lunar Lander - From Open AI Gym"}))}},2900:(e,t,a)=>{a.r(t),a.d(t,{default:()=>T});var n=a(8947),r=a(1417),l=a(7814),i=a(6010),o=a(7294),s=a(179),c=a(6627),m=a(9960);const d="videoContainer_Inu3",p="cogment_verse_logo_FnS0";var u=a(5386),h=a(7462),g=a(3905);const v={toc:[{value:"Interactive Web Application",id:"interactive-web-application",level:4}]};function f(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},v,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"interactive-web-application"},"Interactive Web Application"),(0,g.kt)("p",null,"A built-in interactive web application enables seamless human participation in episodes during the training and validation processes. Additional environments can be made interactive with very little web development required.."))}f.isMDXComponent=!0;const E={toc:[{value:"HILL and MARL Training",id:"hill-and-marl-training",level:4}]};function b(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},E,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"hill-and-marl-training"},"HILL and MARL Training"),(0,g.kt)("p",null,"Our SDK includes base implementations for multiple RL algorithms such as DQN, TD3, A2C and PPO for both single- and multi-agent reinforcement learning (MARL). For human-in-the-loop learning, Cogment Verse includes different paradigms like learning from demonstrations (behavior cloning), learning from human interventions, and learning from explicit human feedback (RLHF). More importantly, the SDK makes it easy to implement any asynchronous centralized training / decentralized execution algorithm."))}b.isMDXComponent=!0;const y={toc:[{value:"Extensive Environment Library",id:"extensive-environment-library",level:4}]};function N(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"extensive-environment-library"},"Extensive Environment Library"),(0,g.kt)("p",null,"The existing environment library includes the standard ",(0,g.kt)("a",{parentName:"p",href:"https://www.gymlibrary.dev"},"OpenAI Gym")," environments as well as board games, card games, and other multi-agent environments from ",(0,g.kt)("a",{parentName:"p",href:"https://pettingzoo.farama.org"},"Petting Zoo"),". Other environments are gradually being added, such as ",(0,g.kt)("a",{parentName:"p",href:"https://developer.nvidia.com/isaac-gym"},"Isaac Gym")," or ",(0,g.kt)("a",{parentName:"p",href:"https://github.com/HumanCompatibleAI/overcooked_ai"},"Overcooked-AI"),". Implementing your own interactive custom environments is also quite straightforward."))}N.isMDXComponent=!0;const w={toc:[{value:"Collaboration Patterns",id:"collaboration-patterns",level:4}]};function k(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},w,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"collaboration-patterns"},"Collaboration Patterns"),(0,g.kt)("p",null,"Library of predefined roles for agents or humans facilitating the implementation of multiple collaboration patterns: co-players, teacher/student dual control, evaluators, etc."))}k.isMDXComponent=!0;const Z={toc:[{value:"Experiments Management",id:"experiments-management",level:4}]};function M(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},Z,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"experiments-management"},"Experiments Management"),(0,g.kt)("p",null,"Monitor and manage reproducible experiments, thanks to:"),(0,g.kt)("ul",null,(0,g.kt)("li",{parentName:"ul"},"A powerful configuration management system, including hyperparameters and seeds, built on ",(0,g.kt)("a",{parentName:"li",href:"https://hydra.cc"},"Hydra"),"."),(0,g.kt)("li",{parentName:"ul"},"Streamlined experiment tracking using ",(0,g.kt)("a",{parentName:"li",href:"https://mlflow.org"},"mlflow"),"."),(0,g.kt)("li",{parentName:"ul"},"Trained model versioning and storage via the ",(0,g.kt)("a",{parentName:"li",href:"../../../../docs/reference/cli/model-registry"},"Cogment Model Registry"),"."),(0,g.kt)("li",{parentName:"ul"},"Episode data management from the ",(0,g.kt)("a",{parentName:"li",href:"../../../../docs/reference/cli/trial-datastore/trial-datastore-server"},"Cogment Trial Datastore"),".")))}M.isMDXComponent=!0;const L=[b,f,k,N,M],C={toc:[]};function A(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},C,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("p",null,"If you use Cogment Verse in your research, please cite our demo paper appearing in ",(0,g.kt)("a",{parentName:"p",href:"https://aamas2023.soton.ac.uk"},"AAMAS 2023")," ",(0,g.kt)("a",{parentName:"p",href:"https://dl.acm.org/doi/abs/10.5555/3545946.3599174"},"proceedings"),":"),(0,g.kt)("pre",null,(0,g.kt)("code",{parentName:"pre",className:"language-bibtex"},"@inproceedings{cogment_verse_2023,\n title={Hiking up that HILL with Cogment-Verse: Train \\& Operate Multi-agent Systems Learning from Humans},\n author={Gottipati, Sai Krishna and Nguyen, Luong-Ha and Mars, Clod{\\'e}ric and Taylor, Matthew E},\n booktitle={Proceedings of the 2023 International Conference on Autonomous Agents and Multiagent Systems},\n pages={3065--3067},\n year={2023}\n}\n")))}A.isMDXComponent=!0;var _=a(3057),D=a(5137),x=a(5673),I=a(2058),V=a(4388),H=a(936);function T(){return o.createElement(s.Z,{title:"Cogment Verse",description:"Research platform for Human-in-the-loop learning (HILL) & Multi-Agent Reinforcement Learning (MARL)"},o.createElement(V.V,{className:"shadow--md"},o.createElement("div",{className:"container"},o.createElement("div",{className:(0,i.Z)("row")},o.createElement("div",{className:(0,i.Z)("col","col--5",c.Z.verticallyJustifiedCol)},o.createElement("div",{className:"padding--lg"},o.createElement(u.Z,{className:p}))),o.createElement("div",{className:(0,i.Z)("col","col--7")},o.createElement("h1",{className:"hero__title"},"Research platform for Human-in-the-loop learning & Multi-Agent Reinforcement Learning"),o.createElement("h2",{className:"hero__subtitle"},"Start building & training agents with HILL and MARL techniques within ",o.createElement(m.Z,{href:"https://www.gymlibrary.dev/"},"Gym"),","," ",o.createElement(m.Z,{href:"https://pettingzoo.farama.org/"},"Petting Zoo"),", and more..."))),o.createElement(I._,{className:"row"},o.createElement(m.Z,{href:"https://github.com/cogment/cogment-verse",className:"button button--lg button--secondary"},o.createElement(l.G,{icon:r.zhw})," Get started")))),o.createElement(H.$,{className:(0,i.Z)("margin-vert--lg","padding-vert--lg")},o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("h3",null,"Video Demo"))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("div",{className:d},o.createElement("iframe",{src:"https://www.youtube.com/embed/v-K0DqIL9K0",title:"Hiking up that HILL with Cogment Verse",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",frameborder:"0",allowfullscreen:!0})))))),o.createElement(H.$,{className:(0,i.Z)("shadow--md","margin-vert--lg","padding-vert--lg")},o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("h3",null,"Key features"))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement(_.ZP,null))),o.createElement(D.W,{className:"row"},o.createElement(x.Z,null)),o.createElement("div",{className:"row"},o.createElement("div",{className:(0,i.Z)("col",c.Z.verticallyJustifiedCol)},L.filter(((e,t,a)=>t<a.length/2)).map((e=>o.createElement("div",null,o.createElement(e,null))))),o.createElement("div",{className:(0,i.Z)("col",c.Z.verticallyJustifiedCol)},L.filter(((e,t,a)=>t>=a.length/2)).map((e=>o.createElement("div",null,o.createElement(e,null)))))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("h3",null,"Citation"))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement(A,null))),o.createElement(I._,{className:"row"},o.createElement(m.Z,{className:"button button--secondary button--lg",href:"https://discord.com/invite/QDxb9Fweqr"},o.createElement(l.G,{icon:r.omb})," Join the community on Discord")))))}n.vc.autoAddCss=!1},6627:(e,t,a)=>{a.d(t,{Z:()=>n});const n={verticallyJustifiedCol:"verticallyJustifiedCol__fFm"}}}]); \ No newline at end of file diff --git a/assets/js/8ba33b25.993fc35e.js b/assets/js/8ba33b25.993fc35e.js new file mode 100644 index 0000000..993be9d --- /dev/null +++ b/assets/js/8ba33b25.993fc35e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[9985],{5386:(e,t,a)=>{a.d(t,{Z:()=>o});var n,r,l=a(7294);function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},i.apply(this,arguments)}const o=e=>{let{title:t,titleId:a,...o}=e;return l.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 253.19 53.76","aria-labelledby":a},o),t?l.createElement("title",{id:a},t):null,n||(n=l.createElement("g",{className:"main"},l.createElement("path",{d:"M179.82 40c7.19 0 12.93-3.25 14.78-8.58l-7.3-1.86a7.76 7.76 0 0 1-7.13 4.06c-4.23 0-7.19-2.73-7.89-6.9h23.31a18.22 18.22 0 0 0 .12-2.61c0-9.33-6.5-15.65-16-15.65s-16.3 6.27-16.3 15.54c0 9.57 6.79 16 16.41 16Zm-.29-25.17A7.34 7.34 0 0 1 187 21.4h-14.78c.7-3.95 3.43-6.56 7.31-6.56ZM209.57 36.15V22.38a6.29 6.29 0 0 1 6.26-6.49c3.48 0 5.56 2.55 5.56 6.2V33.7l8.61-1.78v-11c0-7.13-4.47-12.35-11.2-12.35-3.59 0-6.43 1.68-8.63 5.05h-.58V9.39H201v28.54ZM237.85 30.28l8.55-1.78V15.65h6.79V9.39h-6.79l.06-9.39h-6.72l-1.69 9.39h-4.4v6.26h4.17l.03 14.63zM95.8 13.16h-.58a11.72 11.72 0 0 0-9.68-4.64c-8.24 0-14 6.15-14 15.72 0 9.16 5.79 15.24 14 15.24A11.84 11.84 0 0 0 95 35.19h.58v3.31c0 4.87-3.07 8-7.83 8a7.53 7.53 0 0 1-7.54-5.22l-8.29 1.63c1.44 6.66 7.41 10.43 16.08 10.43 9.92 0 16.18-5.45 16.18-14.61V9.39H95.8ZM88 32.47c-4.58 0-7.88-3.48-7.88-8.23s3.3-8.41 7.88-8.41 7.83 3.54 7.83 8.41-3.22 8.23-7.83 8.23ZM119.23 22.15c0-3.83 2.2-6.32 5.56-6.32s5.34 2.49 5.34 6.32v16.93h8.64V22.15c0-3.71 2.32-6.32 5.68-6.32s5.55 2.72 5.55 6.32v16.93h8.59V20.7c0-7.19-4.7-12.18-11.25-12.18a10.21 10.21 0 0 0-9.34 5.57h-.58a10.11 10.11 0 0 0-9.1-5.62 9.63 9.63 0 0 0-8.58 5.33h-.58V9.39h-8.52v29.69h8.58ZM51.43 8.47C41.51 8.47 35 14.67 35 24.24S41.51 40 51.43 40 67.9 33.86 67.9 24.24 61.29 8.47 51.43 8.47Zm0 24.23c-4.64 0-7.89-3.54-7.89-8.46s3.25-8.41 7.89-8.41 7.83 3.48 7.83 8.41S56 32.7 51.43 32.7ZM16.18 32.93c-4.35 0-7.6-3.59-7.6-8.69s3.31-8.7 7.65-8.7a7.27 7.27 0 0 1 7.08 5.51l8-1.05c-1-7-7.13-11.53-15.19-11.53C6.55 8.47 0 14.79 0 24.24S6.67 40 16.12 40c7.94 0 14.15-4.53 15.25-11.54l-8.06-1a7.29 7.29 0 0 1-7.13 5.47Z"}))),r||(r=l.createElement("g",{className:"subscript",fill:"#231f20"},l.createElement("path",{d:"M110.75 43.65h2.67l2.12 7.45h.17l2.14-7.45h2.66l-3.05 9.77h-3.66ZM146.34 53.05a4.55 4.55 0 0 1-1.72-1.86 5.91 5.91 0 0 1-.62-2.74 5.59 5.59 0 0 1 .61-2.67 4.36 4.36 0 0 1 1.71-1.8 4.88 4.88 0 0 1 2.51-.64 4.65 4.65 0 0 1 2.45.65 4.37 4.37 0 0 1 1.66 1.82 5.77 5.77 0 0 1 .6 2.67v.46a3.9 3.9 0 0 1 0 .4h-6.9a3.28 3.28 0 0 0 .42 1.21 2.19 2.19 0 0 0 1.94 1.07 2.25 2.25 0 0 0 1.25-.36 2.35 2.35 0 0 0 .84-1l2.18.61a3.86 3.86 0 0 1-.92 1.5 4.17 4.17 0 0 1-1.52 1 5.33 5.33 0 0 1-1.93.34 4.7 4.7 0 0 1-2.56-.66Zm4.66-5.46a3.13 3.13 0 0 0-.4-1.11 2.11 2.11 0 0 0-.76-.78 2 2 0 0 0-1-.27 2 2 0 0 0-1 .26 2.08 2.08 0 0 0-.74.76 3 3 0 0 0-.4 1.14ZM179 43.65h2.48V45h.19a2.39 2.39 0 0 1 .88-1.1 2.14 2.14 0 0 1 1.27-.41 3.12 3.12 0 0 1 .54 0 1.47 1.47 0 0 1 .46.17v2.56a3.68 3.68 0 0 0-.77-.26 3 3 0 0 0-.67-.09 1.61 1.61 0 0 0-1.35.7 3 3 0 0 0-.52 1.83v5H179ZM212.83 53.32a3.23 3.23 0 0 1-1.45-1.24 3.62 3.62 0 0 1-.5-1.93h2.21a1.74 1.74 0 0 0 .58 1.26 2.11 2.11 0 0 0 1.46.48 1.94 1.94 0 0 0 1.16-.32 1 1 0 0 0 .43-.89.79.79 0 0 0-.23-.63 1.34 1.34 0 0 0-.58-.3 6.18 6.18 0 0 0-1-.18h-.49a8.3 8.3 0 0 1-1.72-.39 2.5 2.5 0 0 1-1.7-2.61 3.14 3.14 0 0 1 .49-1.75 3 3 0 0 1 1.36-1.13 5 5 0 0 1 2-.39 5.14 5.14 0 0 1 2.1.41 3.28 3.28 0 0 1 1.44 1.14 2.87 2.87 0 0 1 .5 1.74h-2.29a1.28 1.28 0 0 0-.49-1 1.9 1.9 0 0 0-1.26-.38 1.83 1.83 0 0 0-1.1.31 1 1 0 0 0-.44.83.73.73 0 0 0 .26.61 1.42 1.42 0 0 0 .64.31 9.54 9.54 0 0 0 1.11.17l.29.06h.12a6.94 6.94 0 0 1 1.72.37 2.93 2.93 0 0 1 1.24.9 2.61 2.61 0 0 1 .49 1.67 3 3 0 0 1-1.92 2.93 5.61 5.61 0 0 1-2.24.4 5.25 5.25 0 0 1-2.19-.45ZM245.75 53.05a4.62 4.62 0 0 1-1.75-1.86 5.91 5.91 0 0 1-.61-2.74 5.71 5.71 0 0 1 .6-2.67 4.45 4.45 0 0 1 1.72-1.8 4.85 4.85 0 0 1 2.5-.64 4.66 4.66 0 0 1 2.46.65 4.43 4.43 0 0 1 1.66 1.82 5.89 5.89 0 0 1 .59 2.67v.46a2.24 2.24 0 0 1 0 .4H246a3.28 3.28 0 0 0 .42 1.21 2.29 2.29 0 0 0 .82.79 2.18 2.18 0 0 0 1.11.28 2.22 2.22 0 0 0 1.24-.36 2.45 2.45 0 0 0 .85-1l2.17.61a3.84 3.84 0 0 1-.91 1.5 4.21 4.21 0 0 1-1.53 1 5.32 5.32 0 0 1-1.92.34 4.76 4.76 0 0 1-2.5-.66Zm4.63-5.46a3.12 3.12 0 0 0-.39-1.11 2.19 2.19 0 0 0-.76-.78 2.07 2.07 0 0 0-1-.27 2 2 0 0 0-1 .26 2.1 2.1 0 0 0-.75.76 3.2 3.2 0 0 0-.39 1.14Z"}))))}},3057:(e,t,a)=>{a.d(t,{ZP:()=>i});var n=a(7462),r=(a(7294),a(3905));const l={toc:[]};function i(e){let{components:t,...a}=e;return(0,r.kt)("wrapper",(0,n.Z)({},l,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source ",(0,r.kt)("a",{parentName:"p",href:"/"},"Cogment")," platform for environments following the OpenAI Gym mold, making it easy to get started."),(0,r.kt)("p",null,"Simply clone the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cogment/cogment-verse"},"repo")," and start training."))}i.isMDXComponent=!0},2058:(e,t,a)=>{a.d(t,{_:()=>o});var n=a(7462),r=a(7294),l=a(6010);const i="cta_i4Jo";function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,l.Z)(a,i)},o),t)}},4388:(e,t,a)=>{a.d(t,{V:()=>o});var n=a(7462),r=a(7294),l=a(6010);const i="hero_uw3b";function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,l.Z)(a,"hero",i)},o),t)}},5137:(e,t,a)=>{a.d(t,{W:()=>o});var n=a(7462),r=a(7294);const l="screenshots_x3pV";var i=a(6010);function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,i.Z)(l,a)},o),t)}},936:(e,t,a)=>{a.d(t,{$:()=>o});var n=a(7462),r=a(7294),l=a(6010);const i="section_ccoD";function o(e){let{children:t,className:a,...o}=e;return r.createElement("div",(0,n.Z)({className:(0,l.Z)(a,i)},o),t)}},5673:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(7294);const r=a.p+"assets/images/atari_double_dunk-957d0719ded0c73d0d19c54205e9d89f.gif",l=a.p+"assets/images/classic_go-194543ef4e433ad1a827c74bb296b9f7.gif",i=a.p+"assets/images/atari_montezumas_revenge-1451d09162dd95c536af9e45af10d6b5.gif",o=a.p+"assets/images/lunar_lander-49afc13c99c3d30fd673b642cbbc2c9b.gif";const s=function(){return n.createElement(n.Fragment,null,n.createElement("img",{src:r,alt:"Atari Double Dunk - From Petting Zoo"}),n.createElement("img",{src:l,alt:"Go - From Petting Zoo"}),n.createElement("img",{src:i,alt:"Atari Montezuma's Revenge - From Open AI Gym"}),n.createElement("img",{src:o,alt:"Lunar Lander - From Open AI Gym"}))}},2900:(e,t,a)=>{a.r(t),a.d(t,{default:()=>T});var n=a(8947),r=a(1417),l=a(7814),i=a(6010),o=a(7294),s=a(7452),c=a(6627),m=a(9960);const d="videoContainer_Inu3",p="cogment_verse_logo_FnS0";var u=a(5386),h=a(7462),g=a(3905);const v={toc:[{value:"Interactive Web Application",id:"interactive-web-application",level:4}]};function f(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},v,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"interactive-web-application"},"Interactive Web Application"),(0,g.kt)("p",null,"A built-in interactive web application enables seamless human participation in episodes during the training and validation processes. Additional environments can be made interactive with very little web development required.."))}f.isMDXComponent=!0;const E={toc:[{value:"HILL and MARL Training",id:"hill-and-marl-training",level:4}]};function b(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},E,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"hill-and-marl-training"},"HILL and MARL Training"),(0,g.kt)("p",null,"Our SDK includes base implementations for multiple RL algorithms such as DQN, TD3, A2C and PPO for both single- and multi-agent reinforcement learning (MARL). For human-in-the-loop learning, Cogment Verse includes different paradigms like learning from demonstrations (behavior cloning), learning from human interventions, and learning from explicit human feedback (RLHF). More importantly, the SDK makes it easy to implement any asynchronous centralized training / decentralized execution algorithm."))}b.isMDXComponent=!0;const y={toc:[{value:"Extensive Environment Library",id:"extensive-environment-library",level:4}]};function N(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"extensive-environment-library"},"Extensive Environment Library"),(0,g.kt)("p",null,"The existing environment library includes the standard ",(0,g.kt)("a",{parentName:"p",href:"https://www.gymlibrary.dev"},"OpenAI Gym")," environments as well as board games, card games, and other multi-agent environments from ",(0,g.kt)("a",{parentName:"p",href:"https://pettingzoo.farama.org"},"Petting Zoo"),". Other environments are gradually being added, such as ",(0,g.kt)("a",{parentName:"p",href:"https://developer.nvidia.com/isaac-gym"},"Isaac Gym")," or ",(0,g.kt)("a",{parentName:"p",href:"https://github.com/HumanCompatibleAI/overcooked_ai"},"Overcooked-AI"),". Implementing your own interactive custom environments is also quite straightforward."))}N.isMDXComponent=!0;const w={toc:[{value:"Collaboration Patterns",id:"collaboration-patterns",level:4}]};function k(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},w,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"collaboration-patterns"},"Collaboration Patterns"),(0,g.kt)("p",null,"Library of predefined roles for agents or humans facilitating the implementation of multiple collaboration patterns: co-players, teacher/student dual control, evaluators, etc."))}k.isMDXComponent=!0;const Z={toc:[{value:"Experiments Management",id:"experiments-management",level:4}]};function M(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},Z,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("h4",{id:"experiments-management"},"Experiments Management"),(0,g.kt)("p",null,"Monitor and manage reproducible experiments, thanks to:"),(0,g.kt)("ul",null,(0,g.kt)("li",{parentName:"ul"},"A powerful configuration management system, including hyperparameters and seeds, built on ",(0,g.kt)("a",{parentName:"li",href:"https://hydra.cc"},"Hydra"),"."),(0,g.kt)("li",{parentName:"ul"},"Streamlined experiment tracking using ",(0,g.kt)("a",{parentName:"li",href:"https://mlflow.org"},"mlflow"),"."),(0,g.kt)("li",{parentName:"ul"},"Trained model versioning and storage via the ",(0,g.kt)("a",{parentName:"li",href:"../../../../docs/reference/cli/model-registry"},"Cogment Model Registry"),"."),(0,g.kt)("li",{parentName:"ul"},"Episode data management from the ",(0,g.kt)("a",{parentName:"li",href:"../../../../docs/reference/cli/trial-datastore/trial-datastore-server"},"Cogment Trial Datastore"),".")))}M.isMDXComponent=!0;const L=[b,f,k,N,M],C={toc:[]};function A(e){let{components:t,...a}=e;return(0,g.kt)("wrapper",(0,h.Z)({},C,a,{components:t,mdxType:"MDXLayout"}),(0,g.kt)("p",null,"If you use Cogment Verse in your research, please cite our demo paper appearing in ",(0,g.kt)("a",{parentName:"p",href:"https://aamas2023.soton.ac.uk"},"AAMAS 2023")," ",(0,g.kt)("a",{parentName:"p",href:"https://dl.acm.org/doi/abs/10.5555/3545946.3599174"},"proceedings"),":"),(0,g.kt)("pre",null,(0,g.kt)("code",{parentName:"pre",className:"language-bibtex"},"@inproceedings{cogment_verse_2023,\n title={Hiking up that HILL with Cogment-Verse: Train \\& Operate Multi-agent Systems Learning from Humans},\n author={Gottipati, Sai Krishna and Nguyen, Luong-Ha and Mars, Clod{\\'e}ric and Taylor, Matthew E},\n booktitle={Proceedings of the 2023 International Conference on Autonomous Agents and Multiagent Systems},\n pages={3065--3067},\n year={2023}\n}\n")))}A.isMDXComponent=!0;var _=a(3057),D=a(5137),x=a(5673),I=a(2058),V=a(4388),H=a(936);function T(){return o.createElement(s.Z,{title:"Cogment Verse",description:"Research platform for Human-in-the-loop learning (HILL) & Multi-Agent Reinforcement Learning (MARL)"},o.createElement(V.V,{className:"shadow--md"},o.createElement("div",{className:"container"},o.createElement("div",{className:(0,i.Z)("row")},o.createElement("div",{className:(0,i.Z)("col","col--5",c.Z.verticallyJustifiedCol)},o.createElement("div",{className:"padding--lg"},o.createElement(u.Z,{className:p}))),o.createElement("div",{className:(0,i.Z)("col","col--7")},o.createElement("h1",{className:"hero__title"},"Research platform for Human-in-the-loop learning & Multi-Agent Reinforcement Learning"),o.createElement("h2",{className:"hero__subtitle"},"Start building & training agents with HILL and MARL techniques within ",o.createElement(m.Z,{href:"https://www.gymlibrary.dev/"},"Gym"),","," ",o.createElement(m.Z,{href:"https://pettingzoo.farama.org/"},"Petting Zoo"),", and more..."))),o.createElement(I._,{className:"row"},o.createElement(m.Z,{href:"https://github.com/cogment/cogment-verse",className:"button button--lg button--secondary"},o.createElement(l.G,{icon:r.zhw})," Get started")))),o.createElement(H.$,{className:(0,i.Z)("margin-vert--lg","padding-vert--lg")},o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("h3",null,"Video Demo"))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("div",{className:d},o.createElement("iframe",{src:"https://www.youtube.com/embed/v-K0DqIL9K0",title:"Hiking up that HILL with Cogment Verse",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",frameborder:"0",allowfullscreen:!0})))))),o.createElement(H.$,{className:(0,i.Z)("shadow--md","margin-vert--lg","padding-vert--lg")},o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("h3",null,"Key features"))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement(_.ZP,null))),o.createElement(D.W,{className:"row"},o.createElement(x.Z,null)),o.createElement("div",{className:"row"},o.createElement("div",{className:(0,i.Z)("col",c.Z.verticallyJustifiedCol)},L.filter(((e,t,a)=>t<a.length/2)).map((e=>o.createElement("div",null,o.createElement(e,null))))),o.createElement("div",{className:(0,i.Z)("col",c.Z.verticallyJustifiedCol)},L.filter(((e,t,a)=>t>=a.length/2)).map((e=>o.createElement("div",null,o.createElement(e,null)))))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement("h3",null,"Citation"))),o.createElement("div",{className:"row"},o.createElement("div",{className:"col"},o.createElement(A,null))),o.createElement(I._,{className:"row"},o.createElement(m.Z,{className:"button button--secondary button--lg",href:"https://discord.com/invite/QDxb9Fweqr"},o.createElement(l.G,{icon:r.omb})," Join the community on Discord")))))}n.vc.autoAddCss=!1},6627:(e,t,a)=>{a.d(t,{Z:()=>n});const n={verticallyJustifiedCol:"verticallyJustifiedCol__fFm"}}}]); \ No newline at end of file diff --git a/assets/js/8f51b104.1586c228.js b/assets/js/8f51b104.1586c228.js deleted file mode 100644 index 64aa120..0000000 --- a/assets/js/8f51b104.1586c228.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[7330],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function i(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){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),m=p(n),h=i,u=m["".concat(s,".").concat(h)]||m[h]||c[h]||r;return n?a.createElement(u,l(l({ref:t},d),{},{components:n})):a.createElement(u,l({ref:t},d))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var p=2;p<r;p++)l[p]=n[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8009:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>p});var a=n(7462),i=(n(7294),n(3905));const r={sidebar_position:5},l="Javascript SDK",o={unversionedId:"reference/javascript",id:"reference/javascript",title:"Javascript SDK",description:"Repository Latest release",source:"@site/docs/reference/javascript.md",sourceDirName:"reference",slug:"/reference/javascript",permalink:"/docs/reference/javascript",draft:!1,tags:[],version:"current",lastUpdatedAt:1664561629,formattedLastUpdatedAt:"Sep 30, 2022",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"docSidebar",previous:{title:"Python SDK",permalink:"/docs/reference/python"},next:{title:"Installation",permalink:"/docs/reference/python-enterprise/installation"}},s={},p=[{value:"Installation",id:"installation",level:2},{value:"General usage",id:"general-usage",level:2},{value:"The spec file",id:"the-spec-file",level:3},{value:"Trial Parameters",id:"trial-parameters",level:3},{value:"Compiling the spec file",id:"compiling-the-spec-file",level:4},{value:"CogSettings.js",id:"cogsettingsjs",level:3},{value:"Imports",id:"imports",level:3},{value:"class cogment.Context",id:"class-cogmentcontext",level:2},{value:"<code>constructor(userId, cogSettings)</code>",id:"constructoruserid-cogsettings",level:3},{value:"<code>getController(endpoint)</code>",id:"getcontrollerendpoint",level:3},{value:"<code>async joinTrial(trialId, endpoint, actorName)</code>",id:"async-jointrialtrialid-endpoint-actorname",level:3},{value:"<code>registerActor(impl, actorName, actorClass)</code>",id:"registeractorimpl-actorname-actorclass",level:3},{value:"class Controller",id:"class-controller",level:2},{value:"<code>async startTrial(trialConfig = undefined, trialIdRequested = undefined)</code>",id:"async-starttrialtrialconfig--undefined-trialidrequested--undefined",level:3},{value:"<code>terminateTrial(trialIds, hard = false)</code>",id:"terminatetrialtrialids-hard--false",level:3},{value:"<code>async getTrialInfo(trialIds)</code>",id:"async-gettrialinfotrialids",level:3},{value:"<code>async watchTrials(trialStateFilters=[])</code>",id:"async-watchtrialstrialstatefilters",level:3},{value:"<code>async getActors(trialId)</code>",id:"async-getactorstrialid",level:3},{value:"<code>async getRemoteVersions()</code>",id:"async-getremoteversions",level:3},{value:"class Session",id:"class-session",level:2},{value:"<code>getTrialId()</code>",id:"gettrialid",level:3},{value:"<code>getTickId()</code>",id:"gettickid",level:3},{value:"<code>isTrialOver()</code>",id:"istrialover",level:3},{value:"<code>sendingDone()</code>",id:"sendingdone",level:3},{value:"class ActorSession extends Session",id:"class-actorsession-extends-session",level:2},{value:"<code>start(autoDoneSending=True)</code>",id:"startautodonesendingtrue",level:3},{value:"<code>async *eventLoop()</code>",id:"async-eventloop",level:3},{value:"<code>doAction(action)</code>",id:"doactionaction",level:3},{value:"<code>sendMessage(payload, to)</code>",id:"sendmessagepayload-to",level:3},{value:"enum cogment.TrialState",id:"enum-cogmenttrialstate",level:2},{value:"class TrialInfo",id:"class-trialinfo",level:2},{value:"class RecvEvent",id:"class-recvevent",level:2},{value:"enum cogment.EventType",id:"enum-cogmenteventtype",level:3},{value:"type ObservationT",id:"type-observationt",level:2},{value:"type ActionT",id:"type-actiont",level:2},{value:"class MessageBase",id:"class-messagebase",level:2},{value:"type Reward",id:"type-reward",level:2},{value:"interface IRewardSource",id:"interface-irewardsource",level:2}],d={toc:p};function c(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"javascript-sdk"},"Javascript SDK"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/cogment/cogment-js-sdk"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/repository-cogment%2Fcogment--js--sdk-%235217b8?style=for-the-badge&logo=github",alt:"Repository"}))," ",(0,i.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/@cogment/cogment-js-sdk"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/npm/v/@cogment/cogment-js-sdk?style=for-the-badge",alt:"Latest release"}))),(0,i.kt)("h2",{id:"installation"},"Installation"),(0,i.kt)("p",null,"The simplest way to install the Javascript SDK is to just install it using npm:\n",(0,i.kt)("inlineCode",{parentName:"p"},"npm install @cogment/cogment-js-sdk")),(0,i.kt)("h2",{id:"general-usage"},"General usage"),(0,i.kt)("h3",{id:"the-spec-file"},"The spec file"),(0,i.kt)("p",null,"The specifications of a trial type are contained in a ",(0,i.kt)("a",{parentName:"p",href:"/docs/reference/cogment-yaml"},"spec file")," and the imported files defined in the spec. This file is typically named ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment.yaml"),"."),(0,i.kt)("p",null,"For example, an ",(0,i.kt)("a",{parentName:"p",href:"/docs/guide/core-concepts#actors"},"actor")," class is defined by its required observation space and action space."),(0,i.kt)("p",null,'These "spaces" are defined by using protobuf message types (from the imported files). ',(0,i.kt)("a",{parentName:"p",href:"/docs/guide/core-concepts#observations--actions"},"Observations and actions")," will simply be instances of the appropriate type."),(0,i.kt)("p",null,"Messages and feedback user data don't have a set type, they can be any type as long as the receiver can manage that type. The type is determined by the provided message from the originator."),(0,i.kt)("p",null,"They will mostly arrive as an instance of ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment.MessageBase")," and have fields according to their definition in your proto files."),(0,i.kt)("h3",{id:"trial-parameters"},"Trial Parameters"),(0,i.kt)("p",null,"The trial ",(0,i.kt)("a",{parentName:"p",href:"/docs/reference/parameters"},"parameters")," can come from the default parameters provided to the Orchestrator on startup, or from the pre-trial hooks (themselves provided to the Orchestrator on startup)."),(0,i.kt)("p",null,"The parameters are mostly indepedent of the spec file (cogment.yaml), except that the active actors listed in the parameters must have their actor class match an actor class defined in the spec file."),(0,i.kt)("p",null,"Below, when we refer to the trial parameters, we mean the final parameters after any pre-trial hooks."),(0,i.kt)("h4",{id:"compiling-the-spec-file"},"Compiling the spec file"),(0,i.kt)("p",null,'In order to use the specification found in the spec file within Javascript scripts, it needs to be compiled into Javascript modules. This is done by a tool called "cogment-js-sdk-generate".'),(0,i.kt)("h3",{id:"cogsettingsjs"},"CogSettings.js"),(0,i.kt)("p",null,"All API entry points require a cogment specification object. This specification object can be determined\nfrom the content of a project's spec file. As such, it should be generated using the ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment-js-sdk-generate")," tool"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"npx cogment-js-sdk-generate config.yaml\n")),(0,i.kt)("p",null,"This will generate both a ",(0,i.kt)("inlineCode",{parentName:"p"},"CogSettings.js")," file, as well as any required compiled protocol buffer files."),(0,i.kt)("h3",{id:"imports"},"Imports"),(0,i.kt)("p",null,"Whether a script implements an actor or environment, it should import both the ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment")," module (generic Javascript SDK for Cogment) and the ",(0,i.kt)("inlineCode",{parentName:"p"},"cogSettings")," module (project specific definitions created from the spec file)."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-Javascript"},"import { cogSettings } from './CogSettings';\nimport * as cogment from '@cogment/cogment-js-sdk'\n")),(0,i.kt)("h2",{id:"class-cogmentcontext"},"class cogment.Context"),(0,i.kt)("p",null,"Class to setup and run all the different aspects of trials."),(0,i.kt)("h3",{id:"constructoruserid-cogsettings"},(0,i.kt)("inlineCode",{parentName:"h3"},"constructor(userId, cogSettings)")),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"userId"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - Identifier for the user of this context."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"cogSettings"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.CogSettings")," - Settings module associated with trials that will be run (",(0,i.kt)("a",{parentName:"li",href:"#cog_settings.py"},"cogSettings")," namespace).")),(0,i.kt)("h3",{id:"getcontrollerendpoint"},(0,i.kt)("inlineCode",{parentName:"h3"},"getController(endpoint)")),(0,i.kt)("p",null,"Method to get a controller instance to manage trials (start, stop, inquire, etc)."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"endpoint"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - URL of the connection to the Orchestrator.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"Controller")," - An instance of the Controller class used to manage trials."),(0,i.kt)("h3",{id:"async-jointrialtrialid-endpoint-actorname"},(0,i.kt)("inlineCode",{parentName:"h3"},"async joinTrial(trialId, endpoint, actorName)")),(0,i.kt)("p",null,"Method for an actor to asynchronously join an existing trial. This task will normally end after the user implementation has exited."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialId"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The UUID of the trial to join."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"endpoint"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - URL of the connection to the Orchestrator."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"actorName"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - Name of the actor joining the trial.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"registeractorimpl-actorname-actorclass"},(0,i.kt)("inlineCode",{parentName:"h3"},"registerActor(impl, actorName, actorClass)")),(0,i.kt)("p",null,"Method to register the asynchronous callback function that will run an actor for a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"impl"),": ",(0,i.kt)("em",{parentName:"li"},"async function(ActorSession instance)")," - Callback function to be registered."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"actorName"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - Name for the actor implementation being run by the given callback function."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"actorClass"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The actor class name that can be run by the given callback function. The possible names are specified in spec file under section ",(0,i.kt)("inlineCode",{parentName:"li"},"actorClasses:name"),". If the list is empty, this implementation can run any actor class.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h2",{id:"class-controller"},"class Controller"),(0,i.kt)("p",null,"Class containing data and methods to control and manage trials."),(0,i.kt)("h3",{id:"async-starttrialtrialconfig--undefined-trialidrequested--undefined"},(0,i.kt)("inlineCode",{parentName:"h3"},"async startTrial(trialConfig = undefined, trialIdRequested = undefined)")),(0,i.kt)("p",null,"Method to start a new trial. The parameters of the trial will be set by the pre-trial hooks (registered in ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment.Context"),"), and the hooks will receive the provided trial config."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialConfig"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.MessageBase")," - Configuration for the trial. The type is specified in the spec file under the section ",(0,i.kt)("inlineCode",{parentName:"li"},"trial:config_type"),". Can be ",(0,i.kt)("inlineCode",{parentName:"li"},"undefined")," if no configuration is provided. This is provided to the first pre-trial hook."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialIdRequested"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The trial identifier requested for the new trial. It must be unique among all active trials and a limited set of the latest ended trials (this list of trials can be retrieved with ",(0,i.kt)("inlineCode",{parentName:"li"},"getTrialInfo")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"watchTrial"),"). If provided, the Orchestrator will try to use this trialId, otherwise, a UUID will be created.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"string")," - The newly started trial ID."),(0,i.kt)("h3",{id:"terminatetrialtrialids-hard--false"},(0,i.kt)("inlineCode",{parentName:"h3"},"terminateTrial(trialIds, hard = false)")),(0,i.kt)("p",null,"Method to request the end of a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialIds"),": ",(0,i.kt)("em",{parentName:"li"},"string[]")," - The trial ID(s) to request to terminate. There must be at least one ID."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"hard"),": ",(0,i.kt)("em",{parentName:"li"},"boolean")," - If ",(0,i.kt)("inlineCode",{parentName:"li"},"true"),", the termination will be forced and not wait for any action or observation. If ",(0,i.kt)("inlineCode",{parentName:"li"},"false"),", the trial will wait for the next tick, to end gracefully (i.e. wait for the next full set of actions and response observations).")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"async-gettrialinfotrialids"},(0,i.kt)("inlineCode",{parentName:"h3"},"async getTrialInfo(trialIds)")),(0,i.kt)("p",null,"Method to get information about a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialIds"),": ",(0,i.kt)("em",{parentName:"li"},"string[]")," - The trial ID(s) from which to request information. If no ID is provided, returns information about all trials. Note that ended trials may only appear for a short time in this list after they have ended.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"TrialInfo[]")," - List of trial information, one per trial. Can be empty if no trial matches."),(0,i.kt)("h3",{id:"async-watchtrialstrialstatefilters"},(0,i.kt)("inlineCode",{parentName:"h3"},"async watchTrials(trialStateFilters=[])")),(0,i.kt)("p",null,"Generator method to iterate, in real-time, through all trial states matching the filters. When called, it will first iterate over the current states matching the filters, for all trials. Afterwards, it will iterate in real-time over the matching states as they change."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialStateFilters"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.TrialState[]")," - List of enum values from ",(0,i.kt)("inlineCode",{parentName:"li"},"cogment.TrialState")," for which we are interested in receiving state changes.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"generator(TrialInfo instance)")," - A generator for the state changes that arrive. The ",(0,i.kt)("inlineCode",{parentName:"p"},"TrialInfo")," received here only contains the trial ID and the state."),(0,i.kt)("h3",{id:"async-getactorstrialid"},(0,i.kt)("inlineCode",{parentName:"h3"},"async getActors(trialId)")),(0,i.kt)("p",null,"Method to get the list of configured actors in a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialId"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The trial ID from which to request the list of actors.")),(0,i.kt)("p",null,"Return: ActorInfo[] - List of actors configured in this trial."),(0,i.kt)("h3",{id:"async-getremoteversions"},(0,i.kt)("inlineCode",{parentName:"h3"},"async getRemoteVersions()")),(0,i.kt)("p",null,"Method to get the versions from the remote Orchestrator."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"{","[key: string]",": string}")," - The key of the object is the name of the component (",(0,i.kt)("em",{parentName:"p"},"string"),"), and the value is the version (",(0,i.kt)("em",{parentName:"p"},"string"),")."),(0,i.kt)("h2",{id:"class-session"},"class Session"),(0,i.kt)("p",null,"Abstract class that manages aspects of a trial. Contains data and methods common to all sessions ."),(0,i.kt)("h3",{id:"gettrialid"},(0,i.kt)("inlineCode",{parentName:"h3"},"getTrialId()")),(0,i.kt)("p",null,"Method to get the UUID of the trial managed by this session."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"string")," - UUID of the trial."),(0,i.kt)("h3",{id:"gettickid"},(0,i.kt)("inlineCode",{parentName:"h3"},"getTickId()")),(0,i.kt)("p",null,"Method to get the current tick id of the trial (i.e. time step)."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"number")," - The current tick id."),(0,i.kt)("h3",{id:"istrialover"},(0,i.kt)("inlineCode",{parentName:"h3"},"isTrialOver()")),(0,i.kt)("p",null,"Method to inquire if the current trial has ended."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"boolean")," - True if the trial has ended, false otherwise."),(0,i.kt)("h3",{id:"sendingdone"},(0,i.kt)("inlineCode",{parentName:"h3"},"sendingDone()")),(0,i.kt)("p",null,"Method to notify the Orchestrator that all data for the trial, from this session, has been sent. This can be called only when the session is ending. When starting the session (see ",(0,i.kt)("inlineCode",{parentName:"p"},"ActorSession"),"), if the ",(0,i.kt)("inlineCode",{parentName:"p"},"autoDoneSending")," parameter is True, this method should not be called, and if the parameter is False, it MUST be called to end the trial properly."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h2",{id:"class-actorsession-extends-session"},"class ActorSession extends Session"),(0,i.kt)("h3",{id:"startautodonesendingtrue"},(0,i.kt)("inlineCode",{parentName:"h3"},"start(autoDoneSending=True)")),(0,i.kt)("p",null,"Method to start the actor. This method should be called before any other method in the session."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"autoDoneSending"),": ",(0,i.kt)("em",{parentName:"li"},"boolean")," - Controls when to notify the Orchestrator that all data has been sent. If True, the session will automatically send the notification after receiving the last observation. If False, the user MUST call ",(0,i.kt)("inlineCode",{parentName:"li"},"sendingDone")," to end the trial properly.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"async-eventloop"},(0,i.kt)("inlineCode",{parentName:"h3"},"async *eventLoop()")),(0,i.kt)("p",null,"Generator method to iterate over all events (observations, rewards, messages) as they are received. This will block and wait for an event.\nWhen this generator exits, the callback function (registered with ",(0,i.kt)("inlineCode",{parentName:"p"},"registerActor"),') should return to end the trial cleanly.\nThe generator will exit for various reasons indicating the end of the trial, a loss of communication with the orchestrator, or if the generator is sent "False".'),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"AsyncGenerator<RecvEvent",">")," - A generator for the events that arrive. The ",(0,i.kt)("inlineCode",{parentName:"p"},"RecvEvent")," instances received from this generator will not contain actions. When receiving an observation in the event, the ",(0,i.kt)("inlineCode",{parentName:"p"},"this.doAction"),' method is normally used to "reply" (if the event type is ',(0,i.kt)("inlineCode",{parentName:"p"},"EventType.ACTIVE"),")."),(0,i.kt)("h3",{id:"doactionaction"},(0,i.kt)("inlineCode",{parentName:"h3"},"doAction(action)")),(0,i.kt)("p",null,"Method to send actions to the environment."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"action"),": ",(0,i.kt)("em",{parentName:"li"},"ActionT")," - An instance of the action space class specified in the corresponding section ",(0,i.kt)("inlineCode",{parentName:"li"},"actorClasses:action:space")," of the spec file. If ",(0,i.kt)("inlineCode",{parentName:"li"},"undefined"),", then no action space is sent (empty content) and the environment will receive a default initialized action space of the appropriate type.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"sendmessagepayload-to"},(0,i.kt)("inlineCode",{parentName:"h3"},"sendMessage(payload, to)")),(0,i.kt)("p",null,"Method to send a message related to the current time step (tick id)."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"payload"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.MessageBase")," - The message data to be sent. The class can be any protobuf class. It is the responsibility of the receiving actor to manage the class received."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"to"),": ",(0,i.kt)("em",{parentName:"li"},"string[]")," - Targets of feedback. Each value could be the name of an actor in the trial, or the name of the environment (from ",(0,i.kt)("inlineCode",{parentName:"li"},"this.envName"),'). Or it could represent a set of actors (with wildcards); A set of actors can be represented with the wildcard character "',(0,i.kt)("inlineCode",{parentName:"li"},"*"),'" for all actors (of all classes), or "',(0,i.kt)("inlineCode",{parentName:"li"},"actorClass.*"),'" for all actors of a specific class (the ',(0,i.kt)("inlineCode",{parentName:"li"},"actorClass")," must match one of the classes listed in the trial parameters). Note that the wildcard does not include the environment.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h2",{id:"enum-cogmenttrialstate"},"enum cogment.TrialState"),(0,i.kt)("p",null,"Enum representing the various states of trials."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"UNKNOWN: Should not be used."),(0,i.kt)("li",{parentName:"ul"},"INITIALIZING: The trial is in the process of starting."),(0,i.kt)("li",{parentName:"ul"},"PENDING: The trial is waiting for its final parameters, before running."),(0,i.kt)("li",{parentName:"ul"},"RUNNING: The trial is running."),(0,i.kt)("li",{parentName:"ul"},"TERMINATING: The trial is in the process of terminating (either a request to terminate has been received or the last observation has been received)."),(0,i.kt)("li",{parentName:"ul"},"ENDED: The trial has ended. Only a set number of ended trials will be kept (configured in the Orchestrator).")),(0,i.kt)("p",null,"For further information on trial lifetime, check the ",(0,i.kt)("a",{parentName:"p",href:"/docs/guide/development-guide#trial-lifetime"},"dedicated section"),"."),(0,i.kt)("h2",{id:"class-trialinfo"},"class TrialInfo"),(0,i.kt)("p",null,"Class enclosing the details of a trial."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"trialId"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - The trial ID to which the details pertain."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"state"),": ",(0,i.kt)("em",{parentName:"p"},"cogment.TrialState")," - The current state of the trial."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"envName"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - The name of the environment running the trial."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"tickId"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - The time step that the information relates to. Only provided from a call to ",(0,i.kt)("inlineCode",{parentName:"p"},"getTrialInfo"),"."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"duration"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - The time (in nanoseconds) that the trial has run. Only provided from a call to ",(0,i.kt)("inlineCode",{parentName:"p"},"getTrialInfo"),"."),(0,i.kt)("h2",{id:"class-recvevent"},"class RecvEvent"),(0,i.kt)("p",null,"Class representing a received event (for environments and actors). It can contain any combination of data according to the receiver needs, or even be empty, but it will always have a type."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"type"),": ",(0,i.kt)("em",{parentName:"p"},"EventType")," - Type of event the enclosed data represents."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"observation"),": ",(0,i.kt)("em",{parentName:"p"},"ObservationT")," - Observation data. This can only be received by actors. ",(0,i.kt)("inlineCode",{parentName:"p"},"undefined")," if not present."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"actions"),": ",(0,i.kt)("em",{parentName:"p"},"ActionT")," - Action data from actors. This can only be received by the environment. The list is empty if not present."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"rewards"),": ",(0,i.kt)("em",{parentName:"p"},"Reward[]")," - Reward values and data. This can only be received by actors. The list is empty if not present."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"messages"),": ",(0,i.kt)("em",{parentName:"p"},"MessageBase[]")," - Message data. The list is empty if not present."),(0,i.kt)("h3",{id:"enum-cogmenteventtype"},"enum cogment.EventType"),(0,i.kt)("p",null,"Enum representing the type of an event."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.NONE"),": Empty event. This kind of event should never be received.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.ACTIVE"),": Normal event from an active trial. Most events will be of this type.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.ENDING"),": Events from a trial in the process of ending. For the environment, this means that these events contain the last actions from the actors, and the trial is awaiting a final observation. For the actors, this means that the trial is ending and no action can/need to be sent in response. Note that because of network timing, there may be ",(0,i.kt)("inlineCode",{parentName:"p"},"ACTIVE")," events (e.g. rewards or messages) arriving after some ",(0,i.kt)("inlineCode",{parentName:"p"},"ENDING")," events, but the trial is ending regardless.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.FINAL"),": Final event for the trial. This does not contain data. The event loop will exit after this event is delivered. This event can be ignored if nothing needs to be done before exiting the loop."))),(0,i.kt)("p",null,"For further information on trial lifetime, check the ",(0,i.kt)("a",{parentName:"p",href:"/docs/guide/development-guide#trial-lifetime"},"dedicated section"),"."),(0,i.kt)("h2",{id:"type-observationt"},"type ObservationT"),(0,i.kt)("p",null,"Type containing the details of an actor's observation. This will be different depending on what the ActionSpace defined in your spec file contains"),(0,i.kt)("h2",{id:"type-actiont"},"type ActionT"),(0,i.kt)("p",null,"Type containing the details of an action from an actor. This will be different depending on what the ActionSpace defined in your spec file contains"),(0,i.kt)("h2",{id:"class-messagebase"},"class MessageBase"),(0,i.kt)("p",null,"Base Class of all messages, this will contain different fields depending on what fields are in the specific message you are receiving (defined in proto files)"),(0,i.kt)("h2",{id:"type-reward"},"type Reward"),(0,i.kt)("p",null,"type containing the details of a received reward."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"tickId"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - The tick id (time step) for which the reward should be applied."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"receiverName"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - Name of the receiver for the reward (the name of an actor, or wildcard string)."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"value"),": ",(0,i.kt)("em",{parentName:"p"},"float")," - Value of the reward (aggregated from the sources)"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"sources"),": ",(0,i.kt)("em",{parentName:"p"},"IRewardSource[]")," - List of sources that gave this reward"),(0,i.kt)("h2",{id:"interface-irewardsource"},"interface IRewardSource"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"senderName"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - Name of the reward sender;"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"value"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - Value of the reward;"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"confidence"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - Confidence of this reward;"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"userData"),": ",(0,i.kt)("em",{parentName:"p"},"google.protobuf.IAny")," - Extra data;"))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8f51b104.3158977f.js b/assets/js/8f51b104.3158977f.js new file mode 100644 index 0000000..98caf4e --- /dev/null +++ b/assets/js/8f51b104.3158977f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[7330],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function i(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){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),m=d(n),h=i,u=m["".concat(s,".").concat(h)]||m[h]||c[h]||r;return n?a.createElement(u,l(l({ref:t},p),{},{components:n})):a.createElement(u,l({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var d=2;d<r;d++)l[d]=n[d];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8009:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>d});var a=n(7462),i=(n(7294),n(3905));const r={sidebar_position:5},l="Javascript SDK",o={unversionedId:"reference/javascript",id:"reference/javascript",title:"Javascript SDK",description:"Repository Latest release",source:"@site/docs/reference/javascript.md",sourceDirName:"reference",slug:"/reference/javascript",permalink:"/docs/reference/javascript",draft:!1,tags:[],version:"current",lastUpdatedAt:1664807199,formattedLastUpdatedAt:"Oct 3, 2022",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"docSidebar",previous:{title:"Python SDK",permalink:"/docs/reference/python"},next:{title:"Installation",permalink:"/docs/reference/python-enterprise/installation"}},s={},d=[{value:"Installation",id:"installation",level:2},{value:"General usage",id:"general-usage",level:2},{value:"The spec file",id:"the-spec-file",level:3},{value:"Trial Parameters",id:"trial-parameters",level:3},{value:"Compiling the spec file",id:"compiling-the-spec-file",level:4},{value:"CogSettings.js",id:"cogsettingsjs",level:3},{value:"Imports",id:"imports",level:3},{value:"class cogment.Context",id:"class-cogmentcontext",level:2},{value:"<code>constructor(userId, cogSettings)</code>",id:"constructoruserid-cogsettings",level:3},{value:"<code>getController(endpoint)</code>",id:"getcontrollerendpoint",level:3},{value:"<code>async joinTrial(trialId, endpoint, actorName)</code>",id:"async-jointrialtrialid-endpoint-actorname",level:3},{value:"<code>registerActor(impl, actorName, actorClass)</code>",id:"registeractorimpl-actorname-actorclass",level:3},{value:"class Controller",id:"class-controller",level:2},{value:"<code>async startTrial(trialConfig = undefined, trialIdRequested = undefined)</code>",id:"async-starttrialtrialconfig--undefined-trialidrequested--undefined",level:3},{value:"<code>terminateTrial(trialIds, hard = false)</code>",id:"terminatetrialtrialids-hard--false",level:3},{value:"<code>async getTrialInfo(trialIds)</code>",id:"async-gettrialinfotrialids",level:3},{value:"<code>async watchTrials(trialStateFilters=[])</code>",id:"async-watchtrialstrialstatefilters",level:3},{value:"<code>async getActors(trialId)</code>",id:"async-getactorstrialid",level:3},{value:"<code>async getRemoteVersions()</code>",id:"async-getremoteversions",level:3},{value:"class Session",id:"class-session",level:2},{value:"<code>getTrialId()</code>",id:"gettrialid",level:3},{value:"<code>getTickId()</code>",id:"gettickid",level:3},{value:"<code>isTrialOver()</code>",id:"istrialover",level:3},{value:"<code>sendingDone()</code>",id:"sendingdone",level:3},{value:"class ActorSession extends Session",id:"class-actorsession-extends-session",level:2},{value:"<code>start(autoDoneSending=True)</code>",id:"startautodonesendingtrue",level:3},{value:"<code>async *eventLoop()</code>",id:"async-eventloop",level:3},{value:"<code>doAction(action)</code>",id:"doactionaction",level:3},{value:"<code>sendMessage(payload, to)</code>",id:"sendmessagepayload-to",level:3},{value:"enum cogment.TrialState",id:"enum-cogmenttrialstate",level:2},{value:"class TrialInfo",id:"class-trialinfo",level:2},{value:"class RecvEvent",id:"class-recvevent",level:2},{value:"enum cogment.EventType",id:"enum-cogmenteventtype",level:3},{value:"type ObservationT",id:"type-observationt",level:2},{value:"type ActionT",id:"type-actiont",level:2},{value:"class MessageBase",id:"class-messagebase",level:2},{value:"type Reward",id:"type-reward",level:2},{value:"interface IRewardSource",id:"interface-irewardsource",level:2}],p={toc:d};function c(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"javascript-sdk"},"Javascript SDK"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/cogment/cogment-js-sdk"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/repository-cogment%2Fcogment--js--sdk-%235217b8?style=for-the-badge&logo=github",alt:"Repository"}))," ",(0,i.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/@cogment/cogment-js-sdk"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/npm/v/@cogment/cogment-js-sdk?style=for-the-badge",alt:"Latest release"}))),(0,i.kt)("h2",{id:"installation"},"Installation"),(0,i.kt)("p",null,"The simplest way to install the Javascript SDK is to just install it using npm:\n",(0,i.kt)("inlineCode",{parentName:"p"},"npm install @cogment/cogment-js-sdk")),(0,i.kt)("h2",{id:"general-usage"},"General usage"),(0,i.kt)("h3",{id:"the-spec-file"},"The spec file"),(0,i.kt)("p",null,"The specifications of a trial type are contained in a ",(0,i.kt)("a",{parentName:"p",href:"/docs/reference/cogment-yaml"},"spec file")," and the imported files defined in the spec. This file is typically named ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment.yaml"),"."),(0,i.kt)("p",null,"For example, an ",(0,i.kt)("a",{parentName:"p",href:"/docs/guide/core-concepts#actors"},"actor")," class is defined by its required observation space and action space."),(0,i.kt)("p",null,'These "spaces" are defined by using protobuf message types (from the imported files). ',(0,i.kt)("a",{parentName:"p",href:"/docs/guide/core-concepts#observations--actions"},"Observations and actions")," will simply be instances of the appropriate type."),(0,i.kt)("p",null,"Messages and feedback user data don't have a set type, they can be any type as long as the receiver can manage that type. The type is determined by the provided message from the originator."),(0,i.kt)("p",null,"They will mostly arrive as an instance of ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment.MessageBase")," and have fields according to their definition in your proto files."),(0,i.kt)("h3",{id:"trial-parameters"},"Trial Parameters"),(0,i.kt)("p",null,"The trial ",(0,i.kt)("a",{parentName:"p",href:"/docs/reference/parameters"},"parameters")," can come from the default parameters provided to the Orchestrator on startup, or from the pre-trial hooks (themselves provided to the Orchestrator on startup)."),(0,i.kt)("p",null,"The parameters are mostly indepedent of the spec file (cogment.yaml), except that the active actors listed in the parameters must have their actor class match an actor class defined in the spec file."),(0,i.kt)("p",null,"Below, when we refer to the trial parameters, we mean the final parameters after any pre-trial hooks."),(0,i.kt)("h4",{id:"compiling-the-spec-file"},"Compiling the spec file"),(0,i.kt)("p",null,'In order to use the specification found in the spec file within Javascript scripts, it needs to be compiled into Javascript modules. This is done by a tool called "cogment-js-sdk-generate".'),(0,i.kt)("h3",{id:"cogsettingsjs"},"CogSettings.js"),(0,i.kt)("p",null,"All API entry points require a cogment specification object. This specification object can be determined\nfrom the content of a project's spec file. As such, it should be generated using the ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment-js-sdk-generate")," tool"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"npx cogment-js-sdk-generate config.yaml\n")),(0,i.kt)("p",null,"This will generate both a ",(0,i.kt)("inlineCode",{parentName:"p"},"CogSettings.js")," file, as well as any required compiled protocol buffer files."),(0,i.kt)("h3",{id:"imports"},"Imports"),(0,i.kt)("p",null,"Whether a script implements an actor or environment, it should import both the ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment")," module (generic Javascript SDK for Cogment) and the ",(0,i.kt)("inlineCode",{parentName:"p"},"cogSettings")," module (project specific definitions created from the spec file)."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-Javascript"},"import { cogSettings } from './CogSettings';\nimport * as cogment from '@cogment/cogment-js-sdk'\n")),(0,i.kt)("h2",{id:"class-cogmentcontext"},"class cogment.Context"),(0,i.kt)("p",null,"Class to setup and run all the different aspects of trials."),(0,i.kt)("h3",{id:"constructoruserid-cogsettings"},(0,i.kt)("inlineCode",{parentName:"h3"},"constructor(userId, cogSettings)")),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"userId"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - Identifier for the user of this context."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"cogSettings"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.CogSettings")," - Settings module associated with trials that will be run (",(0,i.kt)("a",{parentName:"li",href:"#cog_settings.py"},"cogSettings")," namespace).")),(0,i.kt)("h3",{id:"getcontrollerendpoint"},(0,i.kt)("inlineCode",{parentName:"h3"},"getController(endpoint)")),(0,i.kt)("p",null,"Method to get a controller instance to manage trials (start, stop, inquire, etc)."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"endpoint"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - URL of the connection to the Orchestrator.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"Controller")," - An instance of the Controller class used to manage trials."),(0,i.kt)("h3",{id:"async-jointrialtrialid-endpoint-actorname"},(0,i.kt)("inlineCode",{parentName:"h3"},"async joinTrial(trialId, endpoint, actorName)")),(0,i.kt)("p",null,"Method for an actor to asynchronously join an existing trial. This task will normally end after the user implementation has exited."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialId"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The UUID of the trial to join."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"endpoint"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - URL of the connection to the Orchestrator."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"actorName"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - Name of the actor joining the trial.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"registeractorimpl-actorname-actorclass"},(0,i.kt)("inlineCode",{parentName:"h3"},"registerActor(impl, actorName, actorClass)")),(0,i.kt)("p",null,"Method to register the asynchronous callback function that will run an actor for a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"impl"),": ",(0,i.kt)("em",{parentName:"li"},"async function(ActorSession instance)")," - Callback function to be registered."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"actorName"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - Name for the actor implementation being run by the given callback function."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"actorClass"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The actor class name that can be run by the given callback function. The possible names are specified in spec file under section ",(0,i.kt)("inlineCode",{parentName:"li"},"actorClasses:name"),". If the list is empty, this implementation can run any actor class.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h2",{id:"class-controller"},"class Controller"),(0,i.kt)("p",null,"Class containing data and methods to control and manage trials."),(0,i.kt)("h3",{id:"async-starttrialtrialconfig--undefined-trialidrequested--undefined"},(0,i.kt)("inlineCode",{parentName:"h3"},"async startTrial(trialConfig = undefined, trialIdRequested = undefined)")),(0,i.kt)("p",null,"Method to start a new trial. The parameters of the trial will be set by the pre-trial hooks (registered in ",(0,i.kt)("inlineCode",{parentName:"p"},"cogment.Context"),"), and the hooks will receive the provided trial config."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialConfig"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.MessageBase")," - Configuration for the trial. The type is specified in the spec file under the section ",(0,i.kt)("inlineCode",{parentName:"li"},"trial:config_type"),". Can be ",(0,i.kt)("inlineCode",{parentName:"li"},"undefined")," if no configuration is provided. This is provided to the first pre-trial hook."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialIdRequested"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The trial identifier requested for the new trial. It must be unique among all active trials and a limited set of the latest ended trials (this list of trials can be retrieved with ",(0,i.kt)("inlineCode",{parentName:"li"},"getTrialInfo")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"watchTrial"),"). If provided, the Orchestrator will try to use this trialId, otherwise, a UUID will be created.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"string")," - The newly started trial ID."),(0,i.kt)("h3",{id:"terminatetrialtrialids-hard--false"},(0,i.kt)("inlineCode",{parentName:"h3"},"terminateTrial(trialIds, hard = false)")),(0,i.kt)("p",null,"Method to request the end of a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialIds"),": ",(0,i.kt)("em",{parentName:"li"},"string[]")," - The trial ID(s) to request to terminate. There must be at least one ID."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"hard"),": ",(0,i.kt)("em",{parentName:"li"},"boolean")," - If ",(0,i.kt)("inlineCode",{parentName:"li"},"true"),", the termination will be forced and not wait for any action or observation. If ",(0,i.kt)("inlineCode",{parentName:"li"},"false"),", the trial will wait for the next tick, to end gracefully (i.e. wait for the next full set of actions and response observations).")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"async-gettrialinfotrialids"},(0,i.kt)("inlineCode",{parentName:"h3"},"async getTrialInfo(trialIds)")),(0,i.kt)("p",null,"Method to get information about a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialIds"),": ",(0,i.kt)("em",{parentName:"li"},"string[]")," - The trial ID(s) from which to request information. If no ID is provided, returns information about all trials. Note that ended trials may only appear for a short time in this list after they have ended.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"TrialInfo[]")," - List of trial information, one per trial. Can be empty if no trial matches."),(0,i.kt)("h3",{id:"async-watchtrialstrialstatefilters"},(0,i.kt)("inlineCode",{parentName:"h3"},"async watchTrials(trialStateFilters=[])")),(0,i.kt)("p",null,"Generator method to iterate, in real-time, through all trial states matching the filters. When called, it will first iterate over the current states matching the filters, for all trials. Afterwards, it will iterate in real-time over the matching states as they change."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialStateFilters"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.TrialState[]")," - List of enum values from ",(0,i.kt)("inlineCode",{parentName:"li"},"cogment.TrialState")," for which we are interested in receiving state changes.")),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"generator(TrialInfo instance)")," - A generator for the state changes that arrive. The ",(0,i.kt)("inlineCode",{parentName:"p"},"TrialInfo")," received here only contains the trial ID and the state."),(0,i.kt)("h3",{id:"async-getactorstrialid"},(0,i.kt)("inlineCode",{parentName:"h3"},"async getActors(trialId)")),(0,i.kt)("p",null,"Method to get the list of configured actors in a trial."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"trialId"),": ",(0,i.kt)("em",{parentName:"li"},"string")," - The trial ID from which to request the list of actors.")),(0,i.kt)("p",null,"Return: ActorInfo[] - List of actors configured in this trial."),(0,i.kt)("h3",{id:"async-getremoteversions"},(0,i.kt)("inlineCode",{parentName:"h3"},"async getRemoteVersions()")),(0,i.kt)("p",null,"Method to get the versions from the remote Orchestrator."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"{","[key: string]",": string}")," - The key of the object is the name of the component (",(0,i.kt)("em",{parentName:"p"},"string"),"), and the value is the version (",(0,i.kt)("em",{parentName:"p"},"string"),")."),(0,i.kt)("h2",{id:"class-session"},"class Session"),(0,i.kt)("p",null,"Abstract class that manages aspects of a trial. Contains data and methods common to all sessions ."),(0,i.kt)("h3",{id:"gettrialid"},(0,i.kt)("inlineCode",{parentName:"h3"},"getTrialId()")),(0,i.kt)("p",null,"Method to get the UUID of the trial managed by this session."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"string")," - UUID of the trial."),(0,i.kt)("h3",{id:"gettickid"},(0,i.kt)("inlineCode",{parentName:"h3"},"getTickId()")),(0,i.kt)("p",null,"Method to get the current tick id of the trial (i.e. time step)."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"number")," - The current tick id."),(0,i.kt)("h3",{id:"istrialover"},(0,i.kt)("inlineCode",{parentName:"h3"},"isTrialOver()")),(0,i.kt)("p",null,"Method to inquire if the current trial has ended."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"boolean")," - True if the trial has ended, false otherwise."),(0,i.kt)("h3",{id:"sendingdone"},(0,i.kt)("inlineCode",{parentName:"h3"},"sendingDone()")),(0,i.kt)("p",null,"Method to notify the Orchestrator that all data for the trial, from this session, has been sent. This can be called only when the session is ending. When starting the session (see ",(0,i.kt)("inlineCode",{parentName:"p"},"ActorSession"),"), if the ",(0,i.kt)("inlineCode",{parentName:"p"},"autoDoneSending")," parameter is True, this method should not be called, and if the parameter is False, it MUST be called to end the trial properly."),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h2",{id:"class-actorsession-extends-session"},"class ActorSession extends Session"),(0,i.kt)("h3",{id:"startautodonesendingtrue"},(0,i.kt)("inlineCode",{parentName:"h3"},"start(autoDoneSending=True)")),(0,i.kt)("p",null,"Method to start the actor. This method should be called before any other method in the session."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"autoDoneSending"),": ",(0,i.kt)("em",{parentName:"li"},"boolean")," - Controls when to notify the Orchestrator that all data has been sent. If True, the session will automatically send the notification after receiving the last observation. If False, the user MUST call ",(0,i.kt)("inlineCode",{parentName:"li"},"sendingDone")," to end the trial properly.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"async-eventloop"},(0,i.kt)("inlineCode",{parentName:"h3"},"async *eventLoop()")),(0,i.kt)("p",null,"Generator method to iterate over all events (observations, rewards, messages) as they are received. This will block and wait for an event.\nWhen this generator exits, the callback function (registered with ",(0,i.kt)("inlineCode",{parentName:"p"},"registerActor"),') should return to end the trial cleanly.\nThe generator will exit for various reasons indicating the end of the trial, a loss of communication with the orchestrator, or if the generator is sent "False".'),(0,i.kt)("p",null,"Parameters: None"),(0,i.kt)("p",null,"Return: ",(0,i.kt)("em",{parentName:"p"},"AsyncGenerator<RecvEvent",">")," - A generator for the events that arrive. The ",(0,i.kt)("inlineCode",{parentName:"p"},"RecvEvent")," instances received from this generator will not contain actions. When receiving an observation in the event, the ",(0,i.kt)("inlineCode",{parentName:"p"},"this.doAction"),' method is normally used to "reply" (if the event type is ',(0,i.kt)("inlineCode",{parentName:"p"},"EventType.ACTIVE"),")."),(0,i.kt)("h3",{id:"doactionaction"},(0,i.kt)("inlineCode",{parentName:"h3"},"doAction(action)")),(0,i.kt)("p",null,"Method to send actions to the environment."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"action"),": ",(0,i.kt)("em",{parentName:"li"},"ActionT")," - An instance of the action space class specified in the corresponding section ",(0,i.kt)("inlineCode",{parentName:"li"},"actorClasses:action:space")," of the spec file. If ",(0,i.kt)("inlineCode",{parentName:"li"},"undefined"),", then no action space is sent (empty content) and the environment will receive a default initialized action space of the appropriate type.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h3",{id:"sendmessagepayload-to"},(0,i.kt)("inlineCode",{parentName:"h3"},"sendMessage(payload, to)")),(0,i.kt)("p",null,"Method to send a message related to the current time step (tick id)."),(0,i.kt)("p",null,"Parameters:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"payload"),": ",(0,i.kt)("em",{parentName:"li"},"cogment.MessageBase")," - The message data to be sent. The class can be any protobuf class. It is the responsibility of the receiving actor to manage the class received."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"to"),": ",(0,i.kt)("em",{parentName:"li"},"string[]")," - Targets of feedback. Each value could be the name of an actor in the trial, or the name of the environment (from ",(0,i.kt)("inlineCode",{parentName:"li"},"this.envName"),'). Or it could represent a set of actors (with wildcards); A set of actors can be represented with the wildcard character "',(0,i.kt)("inlineCode",{parentName:"li"},"*"),'" for all actors (of all classes), or "',(0,i.kt)("inlineCode",{parentName:"li"},"actorClass.*"),'" for all actors of a specific class (the ',(0,i.kt)("inlineCode",{parentName:"li"},"actorClass")," must match one of the classes listed in the trial parameters). Note that the wildcard does not include the environment.")),(0,i.kt)("p",null,"Return: void"),(0,i.kt)("h2",{id:"enum-cogmenttrialstate"},"enum cogment.TrialState"),(0,i.kt)("p",null,"Enum representing the various states of trials."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"UNKNOWN: Should not be used."),(0,i.kt)("li",{parentName:"ul"},"INITIALIZING: The trial is in the process of starting."),(0,i.kt)("li",{parentName:"ul"},"PENDING: The trial is waiting for its final parameters, before running."),(0,i.kt)("li",{parentName:"ul"},"RUNNING: The trial is running."),(0,i.kt)("li",{parentName:"ul"},"TERMINATING: The trial is in the process of terminating (either a request to terminate has been received or the last observation has been received)."),(0,i.kt)("li",{parentName:"ul"},"ENDED: The trial has ended. Only a set number of ended trials will be kept (configured in the Orchestrator).")),(0,i.kt)("p",null,"For further information on trial lifetime, check the ",(0,i.kt)("a",{parentName:"p",href:"/docs/guide/development-guide#trial-lifetime"},"dedicated section"),"."),(0,i.kt)("h2",{id:"class-trialinfo"},"class TrialInfo"),(0,i.kt)("p",null,"Class enclosing the details of a trial."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"trialId"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - The trial ID to which the details pertain."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"state"),": ",(0,i.kt)("em",{parentName:"p"},"cogment.TrialState")," - The current state of the trial."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"envName"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - The name of the environment running the trial."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"tickId"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - The time step that the information relates to. Only provided from a call to ",(0,i.kt)("inlineCode",{parentName:"p"},"getTrialInfo"),"."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"duration"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - The time (in nanoseconds) that the trial has run. Only provided from a call to ",(0,i.kt)("inlineCode",{parentName:"p"},"getTrialInfo"),"."),(0,i.kt)("h2",{id:"class-recvevent"},"class RecvEvent"),(0,i.kt)("p",null,"Class representing a received event (for environments and actors). It can contain any combination of data according to the receiver needs, or even be empty, but it will always have a type."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"type"),": ",(0,i.kt)("em",{parentName:"p"},"EventType")," - Type of event the enclosed data represents."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"observation"),": ",(0,i.kt)("em",{parentName:"p"},"ObservationT")," - Observation data. This can only be received by actors. ",(0,i.kt)("inlineCode",{parentName:"p"},"undefined")," if not present."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"actions"),": ",(0,i.kt)("em",{parentName:"p"},"ActionT")," - Action data from actors. This can only be received by the environment. The list is empty if not present."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"rewards"),": ",(0,i.kt)("em",{parentName:"p"},"Reward[]")," - Reward values and data. This can only be received by actors. The list is empty if not present."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"messages"),": ",(0,i.kt)("em",{parentName:"p"},"MessageBase[]")," - Message data. The list is empty if not present."),(0,i.kt)("h3",{id:"enum-cogmenteventtype"},"enum cogment.EventType"),(0,i.kt)("p",null,"Enum representing the type of an event."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.NONE"),": Empty event. This kind of event should never be received.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.ACTIVE"),": Normal event from an active trial. Most events will be of this type.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.ENDING"),": Events from a trial in the process of ending. For the environment, this means that these events contain the last actions from the actors, and the trial is awaiting a final observation. For the actors, this means that the trial is ending and no action can/need to be sent in response. Note that because of network timing, there may be ",(0,i.kt)("inlineCode",{parentName:"p"},"ACTIVE")," events (e.g. rewards or messages) arriving after some ",(0,i.kt)("inlineCode",{parentName:"p"},"ENDING")," events, but the trial is ending regardless.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"EventType.FINAL"),": Final event for the trial. This does not contain data. The event loop will exit after this event is delivered. This event can be ignored if nothing needs to be done before exiting the loop."))),(0,i.kt)("p",null,"For further information on trial lifetime, check the ",(0,i.kt)("a",{parentName:"p",href:"/docs/guide/development-guide#trial-lifetime"},"dedicated section"),"."),(0,i.kt)("h2",{id:"type-observationt"},"type ObservationT"),(0,i.kt)("p",null,"Type containing the details of an actor's observation. This will be different depending on what the ActionSpace defined in your spec file contains"),(0,i.kt)("h2",{id:"type-actiont"},"type ActionT"),(0,i.kt)("p",null,"Type containing the details of an action from an actor. This will be different depending on what the ActionSpace defined in your spec file contains"),(0,i.kt)("h2",{id:"class-messagebase"},"class MessageBase"),(0,i.kt)("p",null,"Base Class of all messages, this will contain different fields depending on what fields are in the specific message you are receiving (defined in proto files)"),(0,i.kt)("h2",{id:"type-reward"},"type Reward"),(0,i.kt)("p",null,"type containing the details of a received reward."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"tickId"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - The tick id (time step) for which the reward should be applied."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"receiverName"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - Name of the receiver for the reward (the name of an actor, or wildcard string)."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"value"),": ",(0,i.kt)("em",{parentName:"p"},"float")," - Value of the reward (aggregated from the sources)"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"sources"),": ",(0,i.kt)("em",{parentName:"p"},"IRewardSource[]")," - List of sources that gave this reward"),(0,i.kt)("h2",{id:"interface-irewardsource"},"interface IRewardSource"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"senderName"),": ",(0,i.kt)("em",{parentName:"p"},"string")," - Name of the reward sender;"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"value"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - Value of the reward;"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"confidence"),": ",(0,i.kt)("em",{parentName:"p"},"number")," - Confidence of this reward;"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"userData"),": ",(0,i.kt)("em",{parentName:"p"},"google.protobuf.IAny")," - Extra data;"))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ac5280f2.476e8c59.js b/assets/js/ac5280f2.476e8c59.js new file mode 100644 index 0000000..95acc87 --- /dev/null +++ b/assets/js/ac5280f2.476e8c59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[8529],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>p});var i=n(7294);function o(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){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},r=Object.keys(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=c(n),p=o,f=h["".concat(l,".").concat(p)]||h[p]||u[p]||r;return n?i.createElement(f,a(a({ref:t},d),{},{components:n})):i.createElement(f,a({ref:t},d))}));function p(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,a=new Array(r);a[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,a[1]=s;for(var c=2;c<r;c++)a[c]=n[c];return i.createElement.apply(null,a)}return i.createElement.apply(null,n)}h.displayName="MDXCreateElement"},5687:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=n(7462),o=(n(7294),n(3905));const r={sidebar_position:7},a="Apache License",s={unversionedId:"license",id:"license",title:"Apache License",description:"Version 2.0, January 2004",source:"@site/docs/license.md",sourceDirName:".",slug:"/license",permalink:"/docs/license",draft:!1,tags:[],version:"current",lastUpdatedAt:1664807199,formattedLastUpdatedAt:"Oct 3, 2022",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"docSidebar",previous:{title:"Cogment 2.0",permalink:"/docs/reference/cogment-v2-changes"}},l={},c=[{value:"Terms and Conditions for use, reproduction, and distribution",id:"terms-and-conditions-for-use-reproduction-and-distribution",level:3},{value:"1. Definitions",id:"1-definitions",level:4},{value:"2. Grant of Copyright License",id:"2-grant-of-copyright-license",level:4},{value:"3. Grant of Patent License",id:"3-grant-of-patent-license",level:4},{value:"4. Redistribution",id:"4-redistribution",level:4},{value:"5. Submission of Contributions",id:"5-submission-of-contributions",level:4},{value:"6. Trademarks",id:"6-trademarks",level:4},{value:"7. Disclaimer of Warranty",id:"7-disclaimer-of-warranty",level:4},{value:"8. Limitation of Liability",id:"8-limitation-of-liability",level:4},{value:"9. Accepting Warranty or Additional Liability",id:"9-accepting-warranty-or-additional-liability",level:4}],d={toc:c};function u(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,i.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"apache-license"},"Apache License"),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Version 2.0, January 2004"),"\n",(0,o.kt)("em",{parentName:"p"},"<",(0,o.kt)("a",{parentName:"em",href:"http://www.apache.org/licenses/"},"http://www.apache.org/licenses/"),">")),(0,o.kt)("h3",{id:"terms-and-conditions-for-use-reproduction-and-distribution"},"Terms and Conditions for use, reproduction, and distribution"),(0,o.kt)("h4",{id:"1-definitions"},"1. Definitions"),(0,o.kt)("p",null,"\u201cLicense\u201d shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document."),(0,o.kt)("p",null,"\u201cLicensor\u201d shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License."),(0,o.kt)("p",null,"\u201cLegal Entity\u201d shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \u201ccontrol\u201d means ",(0,o.kt)("strong",{parentName:"p"},"(i)")," the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or ",(0,o.kt)("strong",{parentName:"p"},"(ii)")," ownership of fifty percent (50%) or more of the\noutstanding shares, or ",(0,o.kt)("strong",{parentName:"p"},"(iii)")," beneficial ownership of such entity."),(0,o.kt)("p",null,"\u201cYou\u201d (or \u201cYour\u201d) shall mean an individual or Legal Entity exercising\npermissions granted by this License."),(0,o.kt)("p",null,"\u201cSource\u201d form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles."),(0,o.kt)("p",null,"\u201cObject\u201d form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types."),(0,o.kt)("p",null,"\u201cWork\u201d shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below)."),(0,o.kt)("p",null,"\u201cDerivative Works\u201d shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof."),(0,o.kt)("p",null,"\u201cContribution\u201d shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\u201csubmitted\u201d means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \u201cNot a Contribution.\u201d"),(0,o.kt)("p",null,"\u201cContributor\u201d shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work."),(0,o.kt)("h4",{id:"2-grant-of-copyright-license"},"2. Grant of Copyright License"),(0,o.kt)("p",null,"Subject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form."),(0,o.kt)("h4",{id:"3-grant-of-patent-license"},"3. Grant of Patent License"),(0,o.kt)("p",null,"Subject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed."),(0,o.kt)("h4",{id:"4-redistribution"},"4. Redistribution"),(0,o.kt)("p",null,"You may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(a)")," You must give any other recipients of the Work or Derivative Works a copy of\nthis License; and"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(b)")," You must cause any modified files to carry prominent notices stating that You\nchanged the files; and"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(c)")," You must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(d)")," If the Work includes a \u201cNOTICE\u201d text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.")),(0,o.kt)("p",null,"You may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License."),(0,o.kt)("h4",{id:"5-submission-of-contributions"},"5. Submission of Contributions"),(0,o.kt)("p",null,"Unless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions."),(0,o.kt)("h4",{id:"6-trademarks"},"6. Trademarks"),(0,o.kt)("p",null,"This License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file."),(0,o.kt)("h4",{id:"7-disclaimer-of-warranty"},"7. Disclaimer of Warranty"),(0,o.kt)("p",null,"Unless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \u201cAS IS\u201d BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License."),(0,o.kt)("h4",{id:"8-limitation-of-liability"},"8. Limitation of Liability"),(0,o.kt)("p",null,"In no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages."),(0,o.kt)("h4",{id:"9-accepting-warranty-or-additional-liability"},"9. Accepting Warranty or Additional Liability"),(0,o.kt)("p",null,"While redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Copyright 2019 Artificial Intelligence Redefined")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ac5280f2.57860295.js b/assets/js/ac5280f2.57860295.js deleted file mode 100644 index 25afb81..0000000 --- a/assets/js/ac5280f2.57860295.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[8529],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>p});var i=n(7294);function o(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){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},r=Object.keys(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=c(n),p=o,f=h["".concat(l,".").concat(p)]||h[p]||u[p]||r;return n?i.createElement(f,a(a({ref:t},d),{},{components:n})):i.createElement(f,a({ref:t},d))}));function p(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,a=new Array(r);a[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,a[1]=s;for(var c=2;c<r;c++)a[c]=n[c];return i.createElement.apply(null,a)}return i.createElement.apply(null,n)}h.displayName="MDXCreateElement"},5687:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=n(7462),o=(n(7294),n(3905));const r={sidebar_position:7},a="Apache License",s={unversionedId:"license",id:"license",title:"Apache License",description:"Version 2.0, January 2004",source:"@site/docs/license.md",sourceDirName:".",slug:"/license",permalink:"/docs/license",draft:!1,tags:[],version:"current",lastUpdatedAt:1664561629,formattedLastUpdatedAt:"Sep 30, 2022",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"docSidebar",previous:{title:"Cogment 2.0",permalink:"/docs/reference/cogment-v2-changes"}},l={},c=[{value:"Terms and Conditions for use, reproduction, and distribution",id:"terms-and-conditions-for-use-reproduction-and-distribution",level:3},{value:"1. Definitions",id:"1-definitions",level:4},{value:"2. Grant of Copyright License",id:"2-grant-of-copyright-license",level:4},{value:"3. Grant of Patent License",id:"3-grant-of-patent-license",level:4},{value:"4. Redistribution",id:"4-redistribution",level:4},{value:"5. Submission of Contributions",id:"5-submission-of-contributions",level:4},{value:"6. Trademarks",id:"6-trademarks",level:4},{value:"7. Disclaimer of Warranty",id:"7-disclaimer-of-warranty",level:4},{value:"8. Limitation of Liability",id:"8-limitation-of-liability",level:4},{value:"9. Accepting Warranty or Additional Liability",id:"9-accepting-warranty-or-additional-liability",level:4}],d={toc:c};function u(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,i.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"apache-license"},"Apache License"),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Version 2.0, January 2004"),"\n",(0,o.kt)("em",{parentName:"p"},"<",(0,o.kt)("a",{parentName:"em",href:"http://www.apache.org/licenses/"},"http://www.apache.org/licenses/"),">")),(0,o.kt)("h3",{id:"terms-and-conditions-for-use-reproduction-and-distribution"},"Terms and Conditions for use, reproduction, and distribution"),(0,o.kt)("h4",{id:"1-definitions"},"1. Definitions"),(0,o.kt)("p",null,"\u201cLicense\u201d shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document."),(0,o.kt)("p",null,"\u201cLicensor\u201d shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License."),(0,o.kt)("p",null,"\u201cLegal Entity\u201d shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \u201ccontrol\u201d means ",(0,o.kt)("strong",{parentName:"p"},"(i)")," the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or ",(0,o.kt)("strong",{parentName:"p"},"(ii)")," ownership of fifty percent (50%) or more of the\noutstanding shares, or ",(0,o.kt)("strong",{parentName:"p"},"(iii)")," beneficial ownership of such entity."),(0,o.kt)("p",null,"\u201cYou\u201d (or \u201cYour\u201d) shall mean an individual or Legal Entity exercising\npermissions granted by this License."),(0,o.kt)("p",null,"\u201cSource\u201d form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles."),(0,o.kt)("p",null,"\u201cObject\u201d form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types."),(0,o.kt)("p",null,"\u201cWork\u201d shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below)."),(0,o.kt)("p",null,"\u201cDerivative Works\u201d shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof."),(0,o.kt)("p",null,"\u201cContribution\u201d shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\u201csubmitted\u201d means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \u201cNot a Contribution.\u201d"),(0,o.kt)("p",null,"\u201cContributor\u201d shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work."),(0,o.kt)("h4",{id:"2-grant-of-copyright-license"},"2. Grant of Copyright License"),(0,o.kt)("p",null,"Subject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form."),(0,o.kt)("h4",{id:"3-grant-of-patent-license"},"3. Grant of Patent License"),(0,o.kt)("p",null,"Subject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed."),(0,o.kt)("h4",{id:"4-redistribution"},"4. Redistribution"),(0,o.kt)("p",null,"You may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(a)")," You must give any other recipients of the Work or Derivative Works a copy of\nthis License; and"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(b)")," You must cause any modified files to carry prominent notices stating that You\nchanged the files; and"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(c)")," You must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"(d)")," If the Work includes a \u201cNOTICE\u201d text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.")),(0,o.kt)("p",null,"You may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License."),(0,o.kt)("h4",{id:"5-submission-of-contributions"},"5. Submission of Contributions"),(0,o.kt)("p",null,"Unless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions."),(0,o.kt)("h4",{id:"6-trademarks"},"6. Trademarks"),(0,o.kt)("p",null,"This License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file."),(0,o.kt)("h4",{id:"7-disclaimer-of-warranty"},"7. Disclaimer of Warranty"),(0,o.kt)("p",null,"Unless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \u201cAS IS\u201d BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License."),(0,o.kt)("h4",{id:"8-limitation-of-liability"},"8. Limitation of Liability"),(0,o.kt)("p",null,"In no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages."),(0,o.kt)("h4",{id:"9-accepting-warranty-or-additional-liability"},"9. Accepting Warranty or Additional Liability"),(0,o.kt)("p",null,"While redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Copyright 2019 Artificial Intelligence Redefined")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.75997564.js b/assets/js/c4f5d8e4.75997564.js new file mode 100644 index 0000000..ebe95f5 --- /dev/null +++ b/assets/js/c4f5d8e4.75997564.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[4195],{5386:(e,t,n)=>{n.d(t,{Z:()=>o});var a,r,l=n(7294);function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},i.apply(this,arguments)}const o=e=>{let{title:t,titleId:n,...o}=e;return l.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 253.19 53.76","aria-labelledby":n},o),t?l.createElement("title",{id:n},t):null,a||(a=l.createElement("g",{className:"main"},l.createElement("path",{d:"M179.82 40c7.19 0 12.93-3.25 14.78-8.58l-7.3-1.86a7.76 7.76 0 0 1-7.13 4.06c-4.23 0-7.19-2.73-7.89-6.9h23.31a18.22 18.22 0 0 0 .12-2.61c0-9.33-6.5-15.65-16-15.65s-16.3 6.27-16.3 15.54c0 9.57 6.79 16 16.41 16Zm-.29-25.17A7.34 7.34 0 0 1 187 21.4h-14.78c.7-3.95 3.43-6.56 7.31-6.56ZM209.57 36.15V22.38a6.29 6.29 0 0 1 6.26-6.49c3.48 0 5.56 2.55 5.56 6.2V33.7l8.61-1.78v-11c0-7.13-4.47-12.35-11.2-12.35-3.59 0-6.43 1.68-8.63 5.05h-.58V9.39H201v28.54ZM237.85 30.28l8.55-1.78V15.65h6.79V9.39h-6.79l.06-9.39h-6.72l-1.69 9.39h-4.4v6.26h4.17l.03 14.63zM95.8 13.16h-.58a11.72 11.72 0 0 0-9.68-4.64c-8.24 0-14 6.15-14 15.72 0 9.16 5.79 15.24 14 15.24A11.84 11.84 0 0 0 95 35.19h.58v3.31c0 4.87-3.07 8-7.83 8a7.53 7.53 0 0 1-7.54-5.22l-8.29 1.63c1.44 6.66 7.41 10.43 16.08 10.43 9.92 0 16.18-5.45 16.18-14.61V9.39H95.8ZM88 32.47c-4.58 0-7.88-3.48-7.88-8.23s3.3-8.41 7.88-8.41 7.83 3.54 7.83 8.41-3.22 8.23-7.83 8.23ZM119.23 22.15c0-3.83 2.2-6.32 5.56-6.32s5.34 2.49 5.34 6.32v16.93h8.64V22.15c0-3.71 2.32-6.32 5.68-6.32s5.55 2.72 5.55 6.32v16.93h8.59V20.7c0-7.19-4.7-12.18-11.25-12.18a10.21 10.21 0 0 0-9.34 5.57h-.58a10.11 10.11 0 0 0-9.1-5.62 9.63 9.63 0 0 0-8.58 5.33h-.58V9.39h-8.52v29.69h8.58ZM51.43 8.47C41.51 8.47 35 14.67 35 24.24S41.51 40 51.43 40 67.9 33.86 67.9 24.24 61.29 8.47 51.43 8.47Zm0 24.23c-4.64 0-7.89-3.54-7.89-8.46s3.25-8.41 7.89-8.41 7.83 3.48 7.83 8.41S56 32.7 51.43 32.7ZM16.18 32.93c-4.35 0-7.6-3.59-7.6-8.69s3.31-8.7 7.65-8.7a7.27 7.27 0 0 1 7.08 5.51l8-1.05c-1-7-7.13-11.53-15.19-11.53C6.55 8.47 0 14.79 0 24.24S6.67 40 16.12 40c7.94 0 14.15-4.53 15.25-11.54l-8.06-1a7.29 7.29 0 0 1-7.13 5.47Z"}))),r||(r=l.createElement("g",{className:"subscript",fill:"#231f20"},l.createElement("path",{d:"M110.75 43.65h2.67l2.12 7.45h.17l2.14-7.45h2.66l-3.05 9.77h-3.66ZM146.34 53.05a4.55 4.55 0 0 1-1.72-1.86 5.91 5.91 0 0 1-.62-2.74 5.59 5.59 0 0 1 .61-2.67 4.36 4.36 0 0 1 1.71-1.8 4.88 4.88 0 0 1 2.51-.64 4.65 4.65 0 0 1 2.45.65 4.37 4.37 0 0 1 1.66 1.82 5.77 5.77 0 0 1 .6 2.67v.46a3.9 3.9 0 0 1 0 .4h-6.9a3.28 3.28 0 0 0 .42 1.21 2.19 2.19 0 0 0 1.94 1.07 2.25 2.25 0 0 0 1.25-.36 2.35 2.35 0 0 0 .84-1l2.18.61a3.86 3.86 0 0 1-.92 1.5 4.17 4.17 0 0 1-1.52 1 5.33 5.33 0 0 1-1.93.34 4.7 4.7 0 0 1-2.56-.66Zm4.66-5.46a3.13 3.13 0 0 0-.4-1.11 2.11 2.11 0 0 0-.76-.78 2 2 0 0 0-1-.27 2 2 0 0 0-1 .26 2.08 2.08 0 0 0-.74.76 3 3 0 0 0-.4 1.14ZM179 43.65h2.48V45h.19a2.39 2.39 0 0 1 .88-1.1 2.14 2.14 0 0 1 1.27-.41 3.12 3.12 0 0 1 .54 0 1.47 1.47 0 0 1 .46.17v2.56a3.68 3.68 0 0 0-.77-.26 3 3 0 0 0-.67-.09 1.61 1.61 0 0 0-1.35.7 3 3 0 0 0-.52 1.83v5H179ZM212.83 53.32a3.23 3.23 0 0 1-1.45-1.24 3.62 3.62 0 0 1-.5-1.93h2.21a1.74 1.74 0 0 0 .58 1.26 2.11 2.11 0 0 0 1.46.48 1.94 1.94 0 0 0 1.16-.32 1 1 0 0 0 .43-.89.79.79 0 0 0-.23-.63 1.34 1.34 0 0 0-.58-.3 6.18 6.18 0 0 0-1-.18h-.49a8.3 8.3 0 0 1-1.72-.39 2.5 2.5 0 0 1-1.7-2.61 3.14 3.14 0 0 1 .49-1.75 3 3 0 0 1 1.36-1.13 5 5 0 0 1 2-.39 5.14 5.14 0 0 1 2.1.41 3.28 3.28 0 0 1 1.44 1.14 2.87 2.87 0 0 1 .5 1.74h-2.29a1.28 1.28 0 0 0-.49-1 1.9 1.9 0 0 0-1.26-.38 1.83 1.83 0 0 0-1.1.31 1 1 0 0 0-.44.83.73.73 0 0 0 .26.61 1.42 1.42 0 0 0 .64.31 9.54 9.54 0 0 0 1.11.17l.29.06h.12a6.94 6.94 0 0 1 1.72.37 2.93 2.93 0 0 1 1.24.9 2.61 2.61 0 0 1 .49 1.67 3 3 0 0 1-1.92 2.93 5.61 5.61 0 0 1-2.24.4 5.25 5.25 0 0 1-2.19-.45ZM245.75 53.05a4.62 4.62 0 0 1-1.75-1.86 5.91 5.91 0 0 1-.61-2.74 5.71 5.71 0 0 1 .6-2.67 4.45 4.45 0 0 1 1.72-1.8 4.85 4.85 0 0 1 2.5-.64 4.66 4.66 0 0 1 2.46.65 4.43 4.43 0 0 1 1.66 1.82 5.89 5.89 0 0 1 .59 2.67v.46a2.24 2.24 0 0 1 0 .4H246a3.28 3.28 0 0 0 .42 1.21 2.29 2.29 0 0 0 .82.79 2.18 2.18 0 0 0 1.11.28 2.22 2.22 0 0 0 1.24-.36 2.45 2.45 0 0 0 .85-1l2.17.61a3.84 3.84 0 0 1-.91 1.5 4.21 4.21 0 0 1-1.53 1 5.32 5.32 0 0 1-1.92.34 4.76 4.76 0 0 1-2.5-.66Zm4.63-5.46a3.12 3.12 0 0 0-.39-1.11 2.19 2.19 0 0 0-.76-.78 2.07 2.07 0 0 0-1-.27 2 2 0 0 0-1 .26 2.1 2.1 0 0 0-.75.76 3.2 3.2 0 0 0-.39 1.14Z"}))))}},3057:(e,t,n)=>{n.d(t,{ZP:()=>i});var a=n(7462),r=(n(7294),n(3905));const l={toc:[]};function i(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,a.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source ",(0,r.kt)("a",{parentName:"p",href:"/"},"Cogment")," platform for environments following the OpenAI Gym mold, making it easy to get started."),(0,r.kt)("p",null,"Simply clone the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cogment/cogment-verse"},"repo")," and start training."))}i.isMDXComponent=!0},2058:(e,t,n)=>{n.d(t,{_:()=>o});var a=n(7462),r=n(7294),l=n(6010);const i="cta_i4Jo";function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,l.Z)(n,i)},o),t)}},4388:(e,t,n)=>{n.d(t,{V:()=>o});var a=n(7462),r=n(7294),l=n(6010);const i="hero_uw3b";function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,l.Z)(n,"hero",i)},o),t)}},5137:(e,t,n)=>{n.d(t,{W:()=>o});var a=n(7462),r=n(7294);const l="screenshots_x3pV";var i=n(6010);function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,i.Z)(l,n)},o),t)}},936:(e,t,n)=>{n.d(t,{$:()=>o});var a=n(7462),r=n(7294),l=n(6010);const i="section_ccoD";function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,l.Z)(n,i)},o),t)}},5673:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7294);const r=n.p+"assets/images/atari_double_dunk-957d0719ded0c73d0d19c54205e9d89f.gif",l=n.p+"assets/images/classic_go-194543ef4e433ad1a827c74bb296b9f7.gif",i=n.p+"assets/images/atari_montezumas_revenge-1451d09162dd95c536af9e45af10d6b5.gif",o=n.p+"assets/images/lunar_lander-49afc13c99c3d30fd673b642cbbc2c9b.gif";const s=function(){return a.createElement(a.Fragment,null,a.createElement("img",{src:r,alt:"Atari Double Dunk - From Petting Zoo"}),a.createElement("img",{src:l,alt:"Go - From Petting Zoo"}),a.createElement("img",{src:i,alt:"Atari Montezuma's Revenge - From Open AI Gym"}),a.createElement("img",{src:o,alt:"Lunar Lander - From Open AI Gym"}))}},4825:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ee});var a=n(8947),r=n(1417),l=n(7814),i=n(6010),o=n(7452),s=n(9960),c=n(7294),m=n(6627),u=n(2263),d=n(7462),p=n(4996);const h="logos_W70m",g="logo_kX79";function v(e){let{imgSrc:t,title:n,href:a=null,...r}=e;return a?c.createElement("div",{className:g},c.createElement(s.Z,{href:a},c.createElement("img",{src:(0,p.Z)(t),alt:`logo for ${n}`,title:n}))):c.createElement("div",(0,d.Z)({className:g},r),c.createElement("img",{src:(0,p.Z)(t),alt:`logo for ${n}`,title:n}))}function f(e){let{children:t,...n}=e;return c.createElement("div",(0,d.Z)({className:h},n),t)}const y="benefits_d4xt",w="benefit_pXnC";function E(e){let{children:t,className:n,...a}=e;return c.createElement("div",(0,d.Z)({className:(0,i.Z)(n,y)},a),t)}function Z(e){let{children:t,className:n,...a}=e;return c.createElement("div",(0,d.Z)({className:(0,i.Z)(n,w)},a),t)}var b=n(5137),k=n(2058),N=n(4388),M=n(936),_=n(3905);const C={toc:[{value:"Orchestrate intelligence ecosystems",id:"orchestrate-intelligence-ecosystems",level:4}]};function D(e){let{components:t,...a}=e;return(0,_.kt)("wrapper",(0,d.Z)({},C,a,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"orchestrate-intelligence-ecosystems"},"Orchestrate intelligence ecosystems"),(0,_.kt)("p",null,(0,_.kt)("img",{alt:"Orchestrate intelligence ecosystems",src:n(6696).Z,width:"1080",height:"1080"})),(0,_.kt)("ul",null,(0,_.kt)("li",{parentName:"ul"},"Best of human & AI capabilities"),(0,_.kt)("li",{parentName:"ul"},"Human supervision when it matters"),(0,_.kt)("li",{parentName:"ul"},"Hybrid AI: Compliance & high performance"),(0,_.kt)("li",{parentName:"ul"},"Modular approach: reduce compute usage & faciliate validation")))}D.isMDXComponent=!0;const x={toc:[{value:"Continuously train AIs & humans together",id:"continuously-train-ais--humans-together",level:4}]};function I(e){let{components:t,...a}=e;return(0,_.kt)("wrapper",(0,d.Z)({},x,a,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"continuously-train-ais--humans-together"},"Continuously train AIs & humans together"),(0,_.kt)("p",null,(0,_.kt)("img",{alt:"Continuously train AIs & humans together",src:n(607).Z,width:"1080",height:"1080"})),(0,_.kt)("ul",null,(0,_.kt)("li",{parentName:"ul"},"Less data required"),(0,_.kt)("li",{parentName:"ul"},"Real-time adaptation"),(0,_.kt)("li",{parentName:"ul"},"Faster training"),(0,_.kt)("li",{parentName:"ul"},"Fostering of trust")))}I.isMDXComponent=!0;const L={toc:[{value:"Iterate smoothly from sim to real",id:"iterate-smoothly-from-sim-to-real",level:4}]};function X(e){let{components:t,...a}=e;return(0,_.kt)("wrapper",(0,d.Z)({},L,a,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"iterate-smoothly-from-sim-to-real"},"Iterate smoothly from sim to real"),(0,_.kt)("p",null,(0,_.kt)("img",{alt:"Iterate smoothly from sim to real",src:n(9170).Z,width:"1000",height:"1001"})),(0,_.kt)("ul",null,(0,_.kt)("li",{parentName:"ul"},"Safe and simple design and training in simulation"),(0,_.kt)("li",{parentName:"ul"},"Progressive deployment to real environment"),(0,_.kt)("li",{parentName:"ul"},"Real environments, digital twins, numerical simulations, etc.")))}X.isMDXComponent=!0;const A=[I,D,X],T={toc:[{value:"Hybrid AI",id:"hybrid-ai",level:4}]};function S(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},T,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"hybrid-ai"},"Hybrid AI"),(0,_.kt)("p",null,"Mix different kind of agents: expert systems, doctrines, search, planners, neural networks\u2026"))}S.isMDXComponent=!0;const V={toc:[{value:"Implementation swapping",id:"implementation-swapping",level:4}]};function z(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},V,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"implementation-swapping"},"Implementation swapping"),(0,_.kt)("p",null,"Swap actors in and out from one implementation of an agent to another, from a human user to another, or from a human user to a trained or untrained agent, and vice-versa. Bootstrap training with pseudo-humans or rule-based agents."))}z.isMDXComponent=!0;const O={toc:[{value:"Optimized for minimal discontinuity between development and deployment",id:"optimized-for-minimal-discontinuity-between-development-and-deployment",level:4}]};function R(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},O,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"optimized-for-minimal-discontinuity-between-development-and-deployment"},"Optimized for minimal discontinuity between development and deployment"),(0,_.kt)("p",null,"There is virtually no difference between developed and productionized versions of a Cogment project. Develop in an iterative way, with any part of a project being live-developed so iteration cycles between simulated and real environments can happen as quickly as possible."))}R.isMDXComponent=!0;const P={toc:[{value:"Multi-actor",id:"multi-actor",level:4}]};function F(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},P,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-actor"},"Multi-actor"),(0,_.kt)("p",null,'Allow multiple agents and multiple human users (all "actors") to exist, train, and work together within the same environment, interacting with one another and their environment. They can be part of collaborative or competitive setups, with heterogeneous roles.'))}F.isMDXComponent=!0;const G={toc:[{value:"Multi-experience learning",id:"multi-experience-learning",level:4}]};function H(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},G,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-experience-learning"},"Multi-experience learning"),(0,_.kt)("p",null,"Run multiple instances of the same agent in multiple and distributed trials / experiences. The accumulated data can be used in a centralized way to contribute to the training of a single agent, or in a decentralized way to train a population of specialized agents."))}H.isMDXComponent=!0;const J={toc:[{value:"Multi-method",id:"multi-method",level:4}]};function $(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},J,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-method"},"Multi-method"),(0,_.kt)("p",null,"Train agents in various ways using Reinforcement learning (on policy, off policy, Q learning, etc.), Imitation Learning (behavior cloning), Curriculum Learning\u2026"))}$.isMDXComponent=!0;const j={toc:[{value:"Multi-source and retroactive rewards",id:"multi-source-and-retroactive-rewards",level:4}]};function B(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},j,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-source-and-retroactive-rewards"},"Multi-source and retroactive rewards"),(0,_.kt)("p",null,"Multiple Reinforcement Learning (RL) agents can use any number of reward sources; environment (real or simulated), users, other agents. Delays in the evaluation are supported while maintaining live training capabilities."))}B.isMDXComponent=!0;const W={toc:[{value:"Tech stack agnostic",id:"tech-stack-agnostic",level:4}]};function q(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},W,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"tech-stack-agnostic"},"Tech stack agnostic"),(0,_.kt)("p",null,"Develop tech-heterogeneous components working together regardless of the tech stacks used to develop them. Use Pytorch, Keras, or Tensorflow frameworks, with Unity, OpenAI Gym, Petting Zoo or any environments or digital twin simulations."))}q.isMDXComponent=!0;const K=[F,$,q,H,z,B,S,R];var U=n(3057),Q=n(5673),Y=n(5386);function ee(){const{siteConfig:e}=(0,u.Z)();return c.createElement(o.Z,{title:e.title,description:e.tagline},c.createElement(N.V,{className:"shadow--md"},c.createElement("div",{className:"container"},c.createElement("h1",{className:"hero__title"},"Build, train, and operate AI agents in simulated or real environments shared with humans."),c.createElement("h2",{className:"hero__subtitle"},"Cogment is the first open source platform designed to address the challenges of continuously training humans and AI together."),c.createElement(k._,{className:"row"},c.createElement(s.Z,{className:(0,i.Z)("button","button--lg","margin-right--sm","button--primary"),href:"https://github.com/cogment/cogment-verse"},c.createElement(l.G,{icon:r.zhw})," Get started for free"),c.createElement(s.Z,{className:"button button--secondary button--lg",href:"https://discord.com/invite/QDxb9Fweqr"},c.createElement(l.G,{icon:r.omb})," Come chat and share!")))),c.createElement(M.$,{className:(0,i.Z)("margin-vert--lg","padding-vert--lg")},c.createElement("div",{className:"container"},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"Why Cogment"))),c.createElement(E,{className:"row padding-vert--md"},A.map(((e,t)=>c.createElement(Z,{key:t,className:"col"},c.createElement(e,null))))),c.createElement(k._,{className:"row"},c.createElement(s.Z,{href:"https://ai-r.com/solutions",className:"button button--secondary"},"Discover Cogment-enabled solutions from AI Redefined")))),c.createElement(M.$,{className:(0,i.Z)("shadow--md","padding-vert--lg")},c.createElement("div",{className:(0,i.Z)("margin-vert--lg","container")},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"Compatible with your existing tools"))),c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement(f,null,c.createElement(v,{title:"PyTorch",imgSrc:"/img/3rd_party_tools/pytorch.svg",href:"https://pytorch.org"}),c.createElement(v,{title:"Open AI Gym",imgSrc:"/img/3rd_party_tools/openai_gym.svg",href:"https://gym.openai.com"}),c.createElement(v,{title:"Petting Zoo",imgSrc:"/img/3rd_party_tools/petting_zoo.svg",href:"https://www.pettingzoo.ml"}),c.createElement(v,{title:"Tensorflow",imgSrc:"/img/3rd_party_tools/tensorflow.svg",href:"https://www.tensorflow.org"}))))),c.createElement("div",{className:(0,i.Z)("margin-vert--lg","container")},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"They're already using Cogment"))),c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement(f,null,c.createElement(v,{title:"Thales",imgSrc:"/img/users/thales.svg",href:"https://www.thalesgroup.com"}),c.createElement(v,{title:"The Chandar Research Lab at MILA",imgSrc:"/img/users/mila_chandar_research_lab.svg",href:"https://chandar-lab.github.io"}),c.createElement(v,{title:"The Intelligent Robot Learning Laboratory at University of Alberta",imgSrc:"/img/users/university_of_alberta_intelligent_robot_learning_laboratory.svg",href:"https://irll.ca"}),c.createElement(v,{title:"Alberta Machine Intelligence Institute",imgSrc:"/img/users/alberta_machine_intelligence_institute.svg",href:"https://www.amii.ca"}))))),c.createElement("div",{className:(0,i.Z)("margin-vert--xl","container")},c.createElement("div",{className:"row"},c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},c.createElement("div",{className:"padding--lg"},c.createElement(Y.Z,null))),c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},c.createElement(U.ZP,null))),c.createElement(b.W,{className:"row"},c.createElement(Q.Z,null)),c.createElement(k._,{className:"row"},c.createElement(s.Z,{className:"button button--primary button--lg margin-right--sm",to:"/cogment_verse"},"Learn more about Cogment Verse...")))),c.createElement(M.$,{className:(0,i.Z)("margin-vert--lg","padding-vert--lg")},c.createElement("div",{className:"container"},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"Key features"))),c.createElement("div",{className:"row"},c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},K.filter(((e,t,n)=>t<n.length/2)).map((e=>c.createElement("div",null,c.createElement(e,null))))),c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},K.filter(((e,t,n)=>t>=n.length/2)).map((e=>c.createElement("div",null,c.createElement(e,null)))))))))}a.vc.autoAddCss=!1},6627:(e,t,n)=>{n.d(t,{Z:()=>a});const a={verticallyJustifiedCol:"verticallyJustifiedCol__fFm"}},9170:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/iterate-da54e365fa4b823db0e09680cc5ea3c7.svg"},6696:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/orchestrate-20ff18d9d060351df4e61ce4db9236ba.svg"},607:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/train-4f831c56a7e8eb20b9450c27de607f7d.svg"}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.c51554bf.js b/assets/js/c4f5d8e4.c51554bf.js deleted file mode 100644 index caf8b40..0000000 --- a/assets/js/c4f5d8e4.c51554bf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[4195],{5386:(e,t,n)=>{n.d(t,{Z:()=>o});var a,r,l=n(7294);function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},i.apply(this,arguments)}const o=e=>{let{title:t,titleId:n,...o}=e;return l.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 253.19 53.76","aria-labelledby":n},o),t?l.createElement("title",{id:n},t):null,a||(a=l.createElement("g",{className:"main"},l.createElement("path",{d:"M179.82 40c7.19 0 12.93-3.25 14.78-8.58l-7.3-1.86a7.76 7.76 0 0 1-7.13 4.06c-4.23 0-7.19-2.73-7.89-6.9h23.31a18.22 18.22 0 0 0 .12-2.61c0-9.33-6.5-15.65-16-15.65s-16.3 6.27-16.3 15.54c0 9.57 6.79 16 16.41 16Zm-.29-25.17A7.34 7.34 0 0 1 187 21.4h-14.78c.7-3.95 3.43-6.56 7.31-6.56ZM209.57 36.15V22.38a6.29 6.29 0 0 1 6.26-6.49c3.48 0 5.56 2.55 5.56 6.2V33.7l8.61-1.78v-11c0-7.13-4.47-12.35-11.2-12.35-3.59 0-6.43 1.68-8.63 5.05h-.58V9.39H201v28.54ZM237.85 30.28l8.55-1.78V15.65h6.79V9.39h-6.79l.06-9.39h-6.72l-1.69 9.39h-4.4v6.26h4.17l.03 14.63zM95.8 13.16h-.58a11.72 11.72 0 0 0-9.68-4.64c-8.24 0-14 6.15-14 15.72 0 9.16 5.79 15.24 14 15.24A11.84 11.84 0 0 0 95 35.19h.58v3.31c0 4.87-3.07 8-7.83 8a7.53 7.53 0 0 1-7.54-5.22l-8.29 1.63c1.44 6.66 7.41 10.43 16.08 10.43 9.92 0 16.18-5.45 16.18-14.61V9.39H95.8ZM88 32.47c-4.58 0-7.88-3.48-7.88-8.23s3.3-8.41 7.88-8.41 7.83 3.54 7.83 8.41-3.22 8.23-7.83 8.23ZM119.23 22.15c0-3.83 2.2-6.32 5.56-6.32s5.34 2.49 5.34 6.32v16.93h8.64V22.15c0-3.71 2.32-6.32 5.68-6.32s5.55 2.72 5.55 6.32v16.93h8.59V20.7c0-7.19-4.7-12.18-11.25-12.18a10.21 10.21 0 0 0-9.34 5.57h-.58a10.11 10.11 0 0 0-9.1-5.62 9.63 9.63 0 0 0-8.58 5.33h-.58V9.39h-8.52v29.69h8.58ZM51.43 8.47C41.51 8.47 35 14.67 35 24.24S41.51 40 51.43 40 67.9 33.86 67.9 24.24 61.29 8.47 51.43 8.47Zm0 24.23c-4.64 0-7.89-3.54-7.89-8.46s3.25-8.41 7.89-8.41 7.83 3.48 7.83 8.41S56 32.7 51.43 32.7ZM16.18 32.93c-4.35 0-7.6-3.59-7.6-8.69s3.31-8.7 7.65-8.7a7.27 7.27 0 0 1 7.08 5.51l8-1.05c-1-7-7.13-11.53-15.19-11.53C6.55 8.47 0 14.79 0 24.24S6.67 40 16.12 40c7.94 0 14.15-4.53 15.25-11.54l-8.06-1a7.29 7.29 0 0 1-7.13 5.47Z"}))),r||(r=l.createElement("g",{className:"subscript",fill:"#231f20"},l.createElement("path",{d:"M110.75 43.65h2.67l2.12 7.45h.17l2.14-7.45h2.66l-3.05 9.77h-3.66ZM146.34 53.05a4.55 4.55 0 0 1-1.72-1.86 5.91 5.91 0 0 1-.62-2.74 5.59 5.59 0 0 1 .61-2.67 4.36 4.36 0 0 1 1.71-1.8 4.88 4.88 0 0 1 2.51-.64 4.65 4.65 0 0 1 2.45.65 4.37 4.37 0 0 1 1.66 1.82 5.77 5.77 0 0 1 .6 2.67v.46a3.9 3.9 0 0 1 0 .4h-6.9a3.28 3.28 0 0 0 .42 1.21 2.19 2.19 0 0 0 1.94 1.07 2.25 2.25 0 0 0 1.25-.36 2.35 2.35 0 0 0 .84-1l2.18.61a3.86 3.86 0 0 1-.92 1.5 4.17 4.17 0 0 1-1.52 1 5.33 5.33 0 0 1-1.93.34 4.7 4.7 0 0 1-2.56-.66Zm4.66-5.46a3.13 3.13 0 0 0-.4-1.11 2.11 2.11 0 0 0-.76-.78 2 2 0 0 0-1-.27 2 2 0 0 0-1 .26 2.08 2.08 0 0 0-.74.76 3 3 0 0 0-.4 1.14ZM179 43.65h2.48V45h.19a2.39 2.39 0 0 1 .88-1.1 2.14 2.14 0 0 1 1.27-.41 3.12 3.12 0 0 1 .54 0 1.47 1.47 0 0 1 .46.17v2.56a3.68 3.68 0 0 0-.77-.26 3 3 0 0 0-.67-.09 1.61 1.61 0 0 0-1.35.7 3 3 0 0 0-.52 1.83v5H179ZM212.83 53.32a3.23 3.23 0 0 1-1.45-1.24 3.62 3.62 0 0 1-.5-1.93h2.21a1.74 1.74 0 0 0 .58 1.26 2.11 2.11 0 0 0 1.46.48 1.94 1.94 0 0 0 1.16-.32 1 1 0 0 0 .43-.89.79.79 0 0 0-.23-.63 1.34 1.34 0 0 0-.58-.3 6.18 6.18 0 0 0-1-.18h-.49a8.3 8.3 0 0 1-1.72-.39 2.5 2.5 0 0 1-1.7-2.61 3.14 3.14 0 0 1 .49-1.75 3 3 0 0 1 1.36-1.13 5 5 0 0 1 2-.39 5.14 5.14 0 0 1 2.1.41 3.28 3.28 0 0 1 1.44 1.14 2.87 2.87 0 0 1 .5 1.74h-2.29a1.28 1.28 0 0 0-.49-1 1.9 1.9 0 0 0-1.26-.38 1.83 1.83 0 0 0-1.1.31 1 1 0 0 0-.44.83.73.73 0 0 0 .26.61 1.42 1.42 0 0 0 .64.31 9.54 9.54 0 0 0 1.11.17l.29.06h.12a6.94 6.94 0 0 1 1.72.37 2.93 2.93 0 0 1 1.24.9 2.61 2.61 0 0 1 .49 1.67 3 3 0 0 1-1.92 2.93 5.61 5.61 0 0 1-2.24.4 5.25 5.25 0 0 1-2.19-.45ZM245.75 53.05a4.62 4.62 0 0 1-1.75-1.86 5.91 5.91 0 0 1-.61-2.74 5.71 5.71 0 0 1 .6-2.67 4.45 4.45 0 0 1 1.72-1.8 4.85 4.85 0 0 1 2.5-.64 4.66 4.66 0 0 1 2.46.65 4.43 4.43 0 0 1 1.66 1.82 5.89 5.89 0 0 1 .59 2.67v.46a2.24 2.24 0 0 1 0 .4H246a3.28 3.28 0 0 0 .42 1.21 2.29 2.29 0 0 0 .82.79 2.18 2.18 0 0 0 1.11.28 2.22 2.22 0 0 0 1.24-.36 2.45 2.45 0 0 0 .85-1l2.17.61a3.84 3.84 0 0 1-.91 1.5 4.21 4.21 0 0 1-1.53 1 5.32 5.32 0 0 1-1.92.34 4.76 4.76 0 0 1-2.5-.66Zm4.63-5.46a3.12 3.12 0 0 0-.39-1.11 2.19 2.19 0 0 0-.76-.78 2.07 2.07 0 0 0-1-.27 2 2 0 0 0-1 .26 2.1 2.1 0 0 0-.75.76 3.2 3.2 0 0 0-.39 1.14Z"}))))}},3057:(e,t,n)=>{n.d(t,{ZP:()=>i});var a=n(7462),r=(n(7294),n(3905));const l={toc:[]};function i(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,a.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source ",(0,r.kt)("a",{parentName:"p",href:"/"},"Cogment")," platform for environments following the OpenAI Gym mold, making it easy to get started."),(0,r.kt)("p",null,"Simply clone the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/cogment/cogment-verse"},"repo")," and start training."))}i.isMDXComponent=!0},2058:(e,t,n)=>{n.d(t,{_:()=>o});var a=n(7462),r=n(7294),l=n(6010);const i="cta_i4Jo";function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,l.Z)(n,i)},o),t)}},4388:(e,t,n)=>{n.d(t,{V:()=>o});var a=n(7462),r=n(7294),l=n(6010);const i="hero_uw3b";function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,l.Z)(n,"hero",i)},o),t)}},5137:(e,t,n)=>{n.d(t,{W:()=>o});var a=n(7462),r=n(7294);const l="screenshots_x3pV";var i=n(6010);function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,i.Z)(l,n)},o),t)}},936:(e,t,n)=>{n.d(t,{$:()=>o});var a=n(7462),r=n(7294),l=n(6010);const i="section_ccoD";function o(e){let{children:t,className:n,...o}=e;return r.createElement("div",(0,a.Z)({className:(0,l.Z)(n,i)},o),t)}},5673:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7294);const r=n.p+"assets/images/atari_double_dunk-957d0719ded0c73d0d19c54205e9d89f.gif",l=n.p+"assets/images/classic_go-194543ef4e433ad1a827c74bb296b9f7.gif",i=n.p+"assets/images/atari_montezumas_revenge-1451d09162dd95c536af9e45af10d6b5.gif",o=n.p+"assets/images/lunar_lander-49afc13c99c3d30fd673b642cbbc2c9b.gif";const s=function(){return a.createElement(a.Fragment,null,a.createElement("img",{src:r,alt:"Atari Double Dunk - From Petting Zoo"}),a.createElement("img",{src:l,alt:"Go - From Petting Zoo"}),a.createElement("img",{src:i,alt:"Atari Montezuma's Revenge - From Open AI Gym"}),a.createElement("img",{src:o,alt:"Lunar Lander - From Open AI Gym"}))}},4825:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ee});var a=n(8947),r=n(1417),l=n(7814),i=n(6010),o=n(179),s=n(9960),c=n(7294),m=n(6627),u=n(2263),d=n(7462),p=n(4996);const h="logos_W70m",g="logo_kX79";function v(e){let{imgSrc:t,title:n,href:a=null,...r}=e;return a?c.createElement("div",{className:g},c.createElement(s.Z,{href:a},c.createElement("img",{src:(0,p.Z)(t),alt:`logo for ${n}`,title:n}))):c.createElement("div",(0,d.Z)({className:g},r),c.createElement("img",{src:(0,p.Z)(t),alt:`logo for ${n}`,title:n}))}function f(e){let{children:t,...n}=e;return c.createElement("div",(0,d.Z)({className:h},n),t)}const y="benefits_d4xt",w="benefit_pXnC";function E(e){let{children:t,className:n,...a}=e;return c.createElement("div",(0,d.Z)({className:(0,i.Z)(n,y)},a),t)}function Z(e){let{children:t,className:n,...a}=e;return c.createElement("div",(0,d.Z)({className:(0,i.Z)(n,w)},a),t)}var b=n(5137),k=n(2058),N=n(4388),M=n(936),_=n(3905);const C={toc:[{value:"Orchestrate intelligence ecosystems",id:"orchestrate-intelligence-ecosystems",level:4}]};function D(e){let{components:t,...a}=e;return(0,_.kt)("wrapper",(0,d.Z)({},C,a,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"orchestrate-intelligence-ecosystems"},"Orchestrate intelligence ecosystems"),(0,_.kt)("p",null,(0,_.kt)("img",{alt:"Orchestrate intelligence ecosystems",src:n(6696).Z,width:"1080",height:"1080"})),(0,_.kt)("ul",null,(0,_.kt)("li",{parentName:"ul"},"Best of human & AI capabilities"),(0,_.kt)("li",{parentName:"ul"},"Human supervision when it matters"),(0,_.kt)("li",{parentName:"ul"},"Hybrid AI: Compliance & high performance"),(0,_.kt)("li",{parentName:"ul"},"Modular approach: reduce compute usage & faciliate validation")))}D.isMDXComponent=!0;const x={toc:[{value:"Continuously train AIs & humans together",id:"continuously-train-ais--humans-together",level:4}]};function I(e){let{components:t,...a}=e;return(0,_.kt)("wrapper",(0,d.Z)({},x,a,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"continuously-train-ais--humans-together"},"Continuously train AIs & humans together"),(0,_.kt)("p",null,(0,_.kt)("img",{alt:"Continuously train AIs & humans together",src:n(607).Z,width:"1080",height:"1080"})),(0,_.kt)("ul",null,(0,_.kt)("li",{parentName:"ul"},"Less data required"),(0,_.kt)("li",{parentName:"ul"},"Real-time adaptation"),(0,_.kt)("li",{parentName:"ul"},"Faster training"),(0,_.kt)("li",{parentName:"ul"},"Fostering of trust")))}I.isMDXComponent=!0;const L={toc:[{value:"Iterate smoothly from sim to real",id:"iterate-smoothly-from-sim-to-real",level:4}]};function X(e){let{components:t,...a}=e;return(0,_.kt)("wrapper",(0,d.Z)({},L,a,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"iterate-smoothly-from-sim-to-real"},"Iterate smoothly from sim to real"),(0,_.kt)("p",null,(0,_.kt)("img",{alt:"Iterate smoothly from sim to real",src:n(9170).Z,width:"1000",height:"1001"})),(0,_.kt)("ul",null,(0,_.kt)("li",{parentName:"ul"},"Safe and simple design and training in simulation"),(0,_.kt)("li",{parentName:"ul"},"Progressive deployment to real environment"),(0,_.kt)("li",{parentName:"ul"},"Real environments, digital twins, numerical simulations, etc.")))}X.isMDXComponent=!0;const A=[I,D,X],T={toc:[{value:"Hybrid AI",id:"hybrid-ai",level:4}]};function S(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},T,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"hybrid-ai"},"Hybrid AI"),(0,_.kt)("p",null,"Mix different kind of agents: expert systems, doctrines, search, planners, neural networks\u2026"))}S.isMDXComponent=!0;const V={toc:[{value:"Implementation swapping",id:"implementation-swapping",level:4}]};function z(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},V,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"implementation-swapping"},"Implementation swapping"),(0,_.kt)("p",null,"Swap actors in and out from one implementation of an agent to another, from a human user to another, or from a human user to a trained or untrained agent, and vice-versa. Bootstrap training with pseudo-humans or rule-based agents."))}z.isMDXComponent=!0;const O={toc:[{value:"Optimized for minimal discontinuity between development and deployment",id:"optimized-for-minimal-discontinuity-between-development-and-deployment",level:4}]};function R(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},O,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"optimized-for-minimal-discontinuity-between-development-and-deployment"},"Optimized for minimal discontinuity between development and deployment"),(0,_.kt)("p",null,"There is virtually no difference between developed and productionized versions of a Cogment project. Develop in an iterative way, with any part of a project being live-developed so iteration cycles between simulated and real environments can happen as quickly as possible."))}R.isMDXComponent=!0;const P={toc:[{value:"Multi-actor",id:"multi-actor",level:4}]};function F(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},P,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-actor"},"Multi-actor"),(0,_.kt)("p",null,'Allow multiple agents and multiple human users (all "actors") to exist, train, and work together within the same environment, interacting with one another and their environment. They can be part of collaborative or competitive setups, with heterogeneous roles.'))}F.isMDXComponent=!0;const G={toc:[{value:"Multi-experience learning",id:"multi-experience-learning",level:4}]};function H(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},G,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-experience-learning"},"Multi-experience learning"),(0,_.kt)("p",null,"Run multiple instances of the same agent in multiple and distributed trials / experiences. The accumulated data can be used in a centralized way to contribute to the training of a single agent, or in a decentralized way to train a population of specialized agents."))}H.isMDXComponent=!0;const J={toc:[{value:"Multi-method",id:"multi-method",level:4}]};function $(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},J,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-method"},"Multi-method"),(0,_.kt)("p",null,"Train agents in various ways using Reinforcement learning (on policy, off policy, Q learning, etc.), Imitation Learning (behavior cloning), Curriculum Learning\u2026"))}$.isMDXComponent=!0;const j={toc:[{value:"Multi-source and retroactive rewards",id:"multi-source-and-retroactive-rewards",level:4}]};function B(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},j,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"multi-source-and-retroactive-rewards"},"Multi-source and retroactive rewards"),(0,_.kt)("p",null,"Multiple Reinforcement Learning (RL) agents can use any number of reward sources; environment (real or simulated), users, other agents. Delays in the evaluation are supported while maintaining live training capabilities."))}B.isMDXComponent=!0;const W={toc:[{value:"Tech stack agnostic",id:"tech-stack-agnostic",level:4}]};function q(e){let{components:t,...n}=e;return(0,_.kt)("wrapper",(0,d.Z)({},W,n,{components:t,mdxType:"MDXLayout"}),(0,_.kt)("h4",{id:"tech-stack-agnostic"},"Tech stack agnostic"),(0,_.kt)("p",null,"Develop tech-heterogeneous components working together regardless of the tech stacks used to develop them. Use Pytorch, Keras, or Tensorflow frameworks, with Unity, OpenAI Gym, Petting Zoo or any environments or digital twin simulations."))}q.isMDXComponent=!0;const K=[F,$,q,H,z,B,S,R];var U=n(3057),Q=n(5673),Y=n(5386);function ee(){const{siteConfig:e}=(0,u.Z)();return c.createElement(o.Z,{title:e.title,description:e.tagline},c.createElement(N.V,{className:"shadow--md"},c.createElement("div",{className:"container"},c.createElement("h1",{className:"hero__title"},"Build, train, and operate AI agents in simulated or real environments shared with humans."),c.createElement("h2",{className:"hero__subtitle"},"Cogment is the first open source platform designed to address the challenges of continuously training humans and AI together."),c.createElement(k._,{className:"row"},c.createElement(s.Z,{className:(0,i.Z)("button","button--lg","margin-right--sm","button--primary"),href:"https://github.com/cogment/cogment-verse"},c.createElement(l.G,{icon:r.zhw})," Get started for free"),c.createElement(s.Z,{className:"button button--secondary button--lg",href:"https://discord.com/invite/QDxb9Fweqr"},c.createElement(l.G,{icon:r.omb})," Come chat and share!")))),c.createElement(M.$,{className:(0,i.Z)("margin-vert--lg","padding-vert--lg")},c.createElement("div",{className:"container"},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"Why Cogment"))),c.createElement(E,{className:"row padding-vert--md"},A.map(((e,t)=>c.createElement(Z,{key:t,className:"col"},c.createElement(e,null))))),c.createElement(k._,{className:"row"},c.createElement(s.Z,{href:"https://ai-r.com/solutions",className:"button button--secondary"},"Discover Cogment-enabled solutions from AI Redefined")))),c.createElement(M.$,{className:(0,i.Z)("shadow--md","padding-vert--lg")},c.createElement("div",{className:(0,i.Z)("margin-vert--lg","container")},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"Compatible with your existing tools"))),c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement(f,null,c.createElement(v,{title:"PyTorch",imgSrc:"/img/3rd_party_tools/pytorch.svg",href:"https://pytorch.org"}),c.createElement(v,{title:"Open AI Gym",imgSrc:"/img/3rd_party_tools/openai_gym.svg",href:"https://gym.openai.com"}),c.createElement(v,{title:"Petting Zoo",imgSrc:"/img/3rd_party_tools/petting_zoo.svg",href:"https://www.pettingzoo.ml"}),c.createElement(v,{title:"Tensorflow",imgSrc:"/img/3rd_party_tools/tensorflow.svg",href:"https://www.tensorflow.org"}))))),c.createElement("div",{className:(0,i.Z)("margin-vert--lg","container")},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"They're already using Cogment"))),c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement(f,null,c.createElement(v,{title:"Thales",imgSrc:"/img/users/thales.svg",href:"https://www.thalesgroup.com"}),c.createElement(v,{title:"The Chandar Research Lab at MILA",imgSrc:"/img/users/mila_chandar_research_lab.svg",href:"https://chandar-lab.github.io"}),c.createElement(v,{title:"The Intelligent Robot Learning Laboratory at University of Alberta",imgSrc:"/img/users/university_of_alberta_intelligent_robot_learning_laboratory.svg",href:"https://irll.ca"}),c.createElement(v,{title:"Alberta Machine Intelligence Institute",imgSrc:"/img/users/alberta_machine_intelligence_institute.svg",href:"https://www.amii.ca"}))))),c.createElement("div",{className:(0,i.Z)("margin-vert--xl","container")},c.createElement("div",{className:"row"},c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},c.createElement("div",{className:"padding--lg"},c.createElement(Y.Z,null))),c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},c.createElement(U.ZP,null))),c.createElement(b.W,{className:"row"},c.createElement(Q.Z,null)),c.createElement(k._,{className:"row"},c.createElement(s.Z,{className:"button button--primary button--lg margin-right--sm",to:"/cogment_verse"},"Learn more about Cogment Verse...")))),c.createElement(M.$,{className:(0,i.Z)("margin-vert--lg","padding-vert--lg")},c.createElement("div",{className:"container"},c.createElement("div",{className:"row"},c.createElement("div",{className:"col"},c.createElement("h3",null,"Key features"))),c.createElement("div",{className:"row"},c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},K.filter(((e,t,n)=>t<n.length/2)).map((e=>c.createElement("div",null,c.createElement(e,null))))),c.createElement("div",{className:(0,i.Z)("col",m.Z.verticallyJustifiedCol)},K.filter(((e,t,n)=>t>=n.length/2)).map((e=>c.createElement("div",null,c.createElement(e,null)))))))))}a.vc.autoAddCss=!1},6627:(e,t,n)=>{n.d(t,{Z:()=>a});const a={verticallyJustifiedCol:"verticallyJustifiedCol__fFm"}},9170:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/iterate-da54e365fa4b823db0e09680cc5ea3c7.svg"},6696:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/orchestrate-20ff18d9d060351df4e61ce4db9236ba.svg"},607:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/train-4f831c56a7e8eb20b9450c27de607f7d.svg"}}]); \ No newline at end of file diff --git a/assets/js/ea8ad98b.fca62872.js b/assets/js/ea8ad98b.fca62872.js deleted file mode 100644 index 92b3dc3..0000000 --- a/assets/js/ea8ad98b.fca62872.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[5219],{2776:e=>{e.exports=JSON.parse('{"name":"@easyops-cn/docusaurus-search-local","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/main.cd67fb39.js b/assets/js/main.cd67fb39.js new file mode 100644 index 0000000..bb02f0a --- /dev/null +++ b/assets/js/main.cd67fb39.js @@ -0,0 +1,2 @@ +/*! For license information please see main.cd67fb39.js.LICENSE.txt */ +(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[179],{830:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(7294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"08714d8c":[()=>n.e(3922).then(n.bind(n,1597)),"@site/docs/reference/parameters.md",1597],"14f1d27f":[()=>n.e(931).then(n.bind(n,8804)),"@site/docs/reference/cli/orchestrator.md",8804],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,8246)),"@theme/DocItem",8246],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,6675)),"@theme/SearchPage",6675],"1b039142":[()=>n.e(2147).then(n.bind(n,9615)),"@site/docs/guide/tutorial/advanced-tutorials/7-web-client.md",9615],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1d042041":[()=>n.e(5767).then(n.t.bind(n,7085,19)),"/builds/ai-r/cogment/cogment-doc/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],"25848ff4":[()=>n.e(8403).then(n.bind(n,3349)),"@site/docs/reference/python-enterprise/installation.md",3349],"2d986b69":[()=>n.e(8769).then(n.bind(n,5161)),"@site/docs/reference/python.md",5161],"354f5e12":[()=>Promise.all([n.e(532),n.e(9071)]).then(n.bind(n,3056)),"@site/docs/guide/development-guide.mdx",3056],"3f8274eb":[()=>n.e(9690).then(n.bind(n,555)),"@site/docs/reference/cli/status.md",555],"4f085710":[()=>n.e(9921).then(n.bind(n,9967)),"@site/docs/guide/tutorial/index.md",9967],"50751b0a":[()=>n.e(8687).then(n.bind(n,9772)),"@site/docs/reference/cli/directory/directory-server.md",9772],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"61fcde8c":[()=>n.e(5171).then(n.bind(n,1975)),"@site/docs/reference/python-enterprise/runner.md",1975],"696a412b":[()=>n.e(928).then(n.bind(n,7113)),"@site/docs/reference/cli/trial-datastore/trial-datastore-server.md",7113],"6c6cf206":[()=>n.e(966).then(n.bind(n,1291)),"@site/docs/guide/implementation-recipes/index.md",1291],"6f2832ad":[()=>n.e(5307).then(n.bind(n,6421)),"@site/docs/guide/tutorial/advanced-tutorials/index.md",6421],"710eddd2":[()=>n.e(7221).then(n.bind(n,1167)),"@site/docs/reference/cli/directory/directory-client.md",1167],"76d0d1d8":[()=>n.e(1257).then(n.bind(n,8113)),"@site/docs/guide/tutorial/advanced-tutorials/8-directory.md",8113],"7a87d372":[()=>n.e(3953).then(n.bind(n,3031)),"@site/docs/reference/cogment-yaml.md",3031],"80b5be58":[()=>n.e(1028).then(n.bind(n,2383)),"@site/docs/guide/tutorial/2-actors-in-cogment.md",2383],"85f318fb":[()=>n.e(4896).then(n.bind(n,2781)),"@site/docs/guide/tutorial/1-setup.md",2781],"8ba33b25":[()=>Promise.all([n.e(532),n.e(4698),n.e(9985)]).then(n.bind(n,2900)),"@site/src/pages/cogment_verse/index.js",2900],"8f51b104":[()=>n.e(7330).then(n.bind(n,8009)),"@site/docs/reference/javascript.md",8009],"8f68e2ce":[()=>n.e(5089).then(n.bind(n,5432)),"@site/docs/reference/cli/launch.md",5432],"92a77eef":[()=>n.e(5505).then(n.bind(n,9214)),"@site/docs/reference/cogment-v2-changes.md",9214],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9b35c4f5":[()=>n.e(9255).then(n.bind(n,562)),"@site/docs/community-channels.md",562],"9b824c8f":[()=>n.e(2880).then(n.bind(n,2406)),"@site/docs/guide/core-concepts.md",2406],a57d321a:[()=>n.e(916).then(n.bind(n,5676)),"@site/docs/reference/cli/model-registry.md",5676],ac5280f2:[()=>n.e(8529).then(n.bind(n,5687)),"@site/docs/license.md",5687],b2327a6c:[()=>n.e(1909).then(n.bind(n,251)),"@site/docs/reference/cli/trial-datastore/trial-datastore-client.md",251],be6d912d:[()=>n.e(7107).then(n.t.bind(n,3769,19)),"/builds/ai-r/cogment/cogment-doc/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],c0fe6564:[()=>n.e(5649).then(n.t.bind(n,5745,19)),"/builds/ai-r/cogment/cogment-doc/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],c24ec994:[()=>n.e(5519).then(n.bind(n,4985)),"@site/docs/guide/tutorial/4-decision-making.md",4985],c377a04b:[()=>n.e(6971).then(n.bind(n,1269)),"@site/docs/index.md",1269],c3c15305:[()=>n.e(1043).then(n.bind(n,3706)),"@site/docs/reference/cli/index.md",3706],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4698),n.e(4195)]).then(n.bind(n,4825)),"@site/src/pages/index.js",4825],d03751be:[()=>n.e(1455).then(n.bind(n,9262)),"@site/docs/reference/cli/web-proxy.md",9262],d04964af:[()=>n.e(5893).then(n.bind(n,6111)),"@site/docs/reference/grpc.md",6111],d9378b29:[()=>n.e(4007).then(n.bind(n,4489)),"@site/docs/guide/tutorial/advanced-tutorials/6-human-player.md",4489],e848be99:[()=>n.e(8172).then(n.bind(n,9208)),"@site/docs/guide/tutorial/3-environment-in-cogment.md",9208],f012f959:[()=>n.e(2229).then(n.bind(n,4352)),"@site/docs/guide/implementation-recipes/configure-trial-from-controller.md",4352],fd5e6f38:[()=>n.e(3106).then(n.bind(n,845)),"@site/docs/guide/implementation-recipes/v2-migration-guide.md",845]};function c(e){let{error:t,retry:n,pastDelay:a}=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"))):a?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 u=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:c,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 o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,u.Z)(o);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:c,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)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 a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));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,a.Z)({},i,n)))}})}const p=[{path:"/cogment_verse",component:f("/cogment_verse","238"),exact:!0},{path:"/search",component:f("/search","b08"),exact:!0},{path:"/docs",component:f("/docs","390"),routes:[{path:"/docs",component:f("/docs","f31"),exact:!0,sidebar:"docSidebar"},{path:"/docs/community-channels",component:f("/docs/community-channels","fe1"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/core-concepts",component:f("/docs/guide/core-concepts","4f9"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/development-guide",component:f("/docs/guide/development-guide","213"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/implementation-recipes",component:f("/docs/guide/implementation-recipes","3dc"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/implementation-recipes/configure-trial-from-controller",component:f("/docs/guide/implementation-recipes/configure-trial-from-controller","6e2"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/implementation-recipes/v2-migration-guide",component:f("/docs/guide/implementation-recipes/v2-migration-guide","024"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial",component:f("/docs/guide/tutorial","4db"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/actors-in-cogment",component:f("/docs/guide/tutorial/actors-in-cogment","ffe"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials",component:f("/docs/guide/tutorial/advanced-tutorials","c3b"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials/directory",component:f("/docs/guide/tutorial/advanced-tutorials/directory","162"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials/human-player",component:f("/docs/guide/tutorial/advanced-tutorials/human-player","34b"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials/web-client",component:f("/docs/guide/tutorial/advanced-tutorials/web-client","878"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/decision-making",component:f("/docs/guide/tutorial/decision-making","f36"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/environment-in-cogment",component:f("/docs/guide/tutorial/environment-in-cogment","bea"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/setup",component:f("/docs/guide/tutorial/setup","a29"),exact:!0,sidebar:"docSidebar"},{path:"/docs/license",component:f("/docs/license","f2d"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli",component:f("/docs/reference/cli","59e"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/directory/directory-client",component:f("/docs/reference/cli/directory/directory-client","4f4"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/directory/directory-server",component:f("/docs/reference/cli/directory/directory-server","705"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/launch",component:f("/docs/reference/cli/launch","548"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/model-registry",component:f("/docs/reference/cli/model-registry","16c"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/orchestrator",component:f("/docs/reference/cli/orchestrator","962"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/status",component:f("/docs/reference/cli/status","77f"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/trial-datastore/trial-datastore-client",component:f("/docs/reference/cli/trial-datastore/trial-datastore-client","255"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/trial-datastore/trial-datastore-server",component:f("/docs/reference/cli/trial-datastore/trial-datastore-server","436"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/web-proxy",component:f("/docs/reference/cli/web-proxy","f0b"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cogment-v2-changes",component:f("/docs/reference/cogment-v2-changes","452"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cogment-yaml",component:f("/docs/reference/cogment-yaml","d31"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/grpc",component:f("/docs/reference/grpc","407"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/javascript",component:f("/docs/reference/javascript","4e0"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/parameters",component:f("/docs/reference/parameters","f82"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/python",component:f("/docs/reference/python","d04"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/python-enterprise/installation",component:f("/docs/reference/python-enterprise/installation","3b7"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/python-enterprise/runner",component:f("/docs/reference/python-enterprise/runner","277"),exact:!0,sidebar:"docSidebar"}]},{path:"/",component:f("/","7f6"),exact:!0},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(4367),n(2497),n(3310),n(8320),n(2295)];var c=n(723),u=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),b=n(6668),v=n(833),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:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e}}=(0,h.Z)(),{pathname:t}=(0,u.TH)();return e+(0,g.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.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(v.d,{image:n}),r.createElement(x,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 T=new Map;function _(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var A=n(8934),L=n(8940);function R(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 a=s.map((t=>{var r;const a=(null==(r=t.default)?void 0:r[e])??t[e];return null==a?void 0:a(...n)}));return()=>a.forEach((e=>null==e?void 0:e()))}const N=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);null==t||t.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),R("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function P(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?R("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=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),P(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(N,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}const I=O,D="docusaurus-base-url-issue-banner-container",M="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\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="${M}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${M}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function j(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:D}))}function z(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement(j,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];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)(c.Z),t=(0,u.TH)();return r.createElement($.Z,null,r.createElement(L.M,null,r.createElement(A.t,null,r.createElement(f,null,r.createElement(U,null),r.createElement(C,null),r.createElement(z,null),r.createElement(I,{location:_(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 a=document.createElement("link");a.setAttribute("rel","prefetch"),a.setAttribute("href",e),a.onload=()=>t(),a.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??(null==(r=document.getElementsByName("script")[0])?void 0:r.parentNode);null==o||o.appendChild(a)}))}: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 Z=n(9670);const V=new Set,W=new Set,K=()=>{var e,t;return(null==(e=navigator.connection)?void 0:e.effectiveType.includes("2g"))||(null==(t=navigator.connection)?void 0:t.saveData)},Y={prefetch(e){if(!(e=>!K()&&!W.has(e)&&!V.has(e))(e))return!1;V.add(e);const t=(0,d.f)(c.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,Z.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=>!K()&&!W.has(e))(e)&&(W.add(e),P(e))},Q=Object.freeze(Y);if(l.Z.canUseDOM){window.docusaurus=Q;const e=a.hydrate;P(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(q,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"index","docs":[{"id":"community-channels","path":"/docs/community-channels","sidebar":"docSidebar"},{"id":"guide/core-concepts","path":"/docs/guide/core-concepts","sidebar":"docSidebar"},{"id":"guide/development-guide","path":"/docs/guide/development-guide","sidebar":"docSidebar"},{"id":"guide/implementation-recipes/configure-trial-from-controller","path":"/docs/guide/implementation-recipes/configure-trial-from-controller","sidebar":"docSidebar"},{"id":"guide/implementation-recipes/index","path":"/docs/guide/implementation-recipes/","sidebar":"docSidebar"},{"id":"guide/implementation-recipes/v2-migration-guide","path":"/docs/guide/implementation-recipes/v2-migration-guide","sidebar":"docSidebar"},{"id":"guide/tutorial/actors-in-cogment","path":"/docs/guide/tutorial/actors-in-cogment","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/directory","path":"/docs/guide/tutorial/advanced-tutorials/directory","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/human-player","path":"/docs/guide/tutorial/advanced-tutorials/human-player","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/index","path":"/docs/guide/tutorial/advanced-tutorials/","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/web-client","path":"/docs/guide/tutorial/advanced-tutorials/web-client","sidebar":"docSidebar"},{"id":"guide/tutorial/decision-making","path":"/docs/guide/tutorial/decision-making","sidebar":"docSidebar"},{"id":"guide/tutorial/environment-in-cogment","path":"/docs/guide/tutorial/environment-in-cogment","sidebar":"docSidebar"},{"id":"guide/tutorial/index","path":"/docs/guide/tutorial/","sidebar":"docSidebar"},{"id":"guide/tutorial/setup","path":"/docs/guide/tutorial/setup","sidebar":"docSidebar"},{"id":"index","path":"/docs/","sidebar":"docSidebar"},{"id":"license","path":"/docs/license","sidebar":"docSidebar"},{"id":"reference/cli/directory/directory-client","path":"/docs/reference/cli/directory/directory-client","sidebar":"docSidebar"},{"id":"reference/cli/directory/directory-server","path":"/docs/reference/cli/directory/directory-server","sidebar":"docSidebar"},{"id":"reference/cli/index","path":"/docs/reference/cli/","sidebar":"docSidebar"},{"id":"reference/cli/launch","path":"/docs/reference/cli/launch","sidebar":"docSidebar"},{"id":"reference/cli/model-registry","path":"/docs/reference/cli/model-registry","sidebar":"docSidebar"},{"id":"reference/cli/orchestrator","path":"/docs/reference/cli/orchestrator","sidebar":"docSidebar"},{"id":"reference/cli/status","path":"/docs/reference/cli/status","sidebar":"docSidebar"},{"id":"reference/cli/trial-datastore/trial-datastore-client","path":"/docs/reference/cli/trial-datastore/trial-datastore-client","sidebar":"docSidebar"},{"id":"reference/cli/trial-datastore/trial-datastore-server","path":"/docs/reference/cli/trial-datastore/trial-datastore-server","sidebar":"docSidebar"},{"id":"reference/cli/web-proxy","path":"/docs/reference/cli/web-proxy","sidebar":"docSidebar"},{"id":"reference/cogment-v2-changes","path":"/docs/reference/cogment-v2-changes","sidebar":"docSidebar"},{"id":"reference/cogment-yaml","path":"/docs/reference/cogment-yaml","sidebar":"docSidebar"},{"id":"reference/grpc","path":"/docs/reference/grpc","sidebar":"docSidebar"},{"id":"reference/javascript","path":"/docs/reference/javascript","sidebar":"docSidebar"},{"id":"reference/parameters","path":"/docs/reference/parameters","sidebar":"docSidebar"},{"id":"reference/python","path":"/docs/reference/python","sidebar":"docSidebar"},{"id":"reference/python-enterprise/installation","path":"/docs/reference/python-enterprise/installation","sidebar":"docSidebar"},{"id":"reference/python-enterprise/runner","path":"/docs/reference/python-enterprise/runner","sidebar":"docSidebar"}],"draftIds":[],"sidebars":{"docSidebar":{"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.4.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.0"},"docusaurus-plugin-google-analytics":{"type":"package","name":"@docusaurus/plugin-google-analytics","version":"2.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.0"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.0"}}}'),c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(7452);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(c,{error:t}))}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function u(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(u,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.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??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={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:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),c=n(412);const u=a.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":b,autoAddBaseUrl:v=!0,...y}=e;const{siteConfig:{trailingSlash:w,baseUrl:k}}=(0,l.Z)(),{withBaseUrl:E}=(0,d.C)(),S=(0,a.useContext)(u),x=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>x.current));const C=p||m;const T=(0,s.Z)(C),_=null==C?void 0:C.replace("pathname://","");let A=void 0!==_?(L=_,v&&(e=>e.startsWith("/"))(L)?E(L):L):void 0;var L;A&&T&&(A=(0,i.applyTrailingSlash)(A,{trailingSlash:w,baseUrl:k}));const R=(0,a.useRef)(!1),N=f?o.OL:o.rU,P=c.Z.canUseIntersectionObserver,O=(0,a.useRef)(),I=()=>{R.current||null==A||(window.docusaurus.preload(A),R.current=!0)};(0,a.useEffect)((()=>(!P&&T&&null!=A&&window.docusaurus.prefetch(A),()=>{P&&O.current&&O.current.disconnect()})),[O,A,P,T]);const D=(null==(n=A)?void 0:n.startsWith("#"))??!1,M=!A||!T||D;return M||b||S.collectLink(A),M?a.createElement("a",(0,r.Z)({ref:x,href:A},C&&!T&&{target:"_blank",rel:"noopener noreferrer"},y)):a.createElement(N,(0,r.Z)({},y,{onMouseEnter:I,onTouchStart:I,innerRef:e=>{x.current=e,P&&e&&T&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=A&&window.docusaurus.prefetch(A))}))})),O.current.observe(e))},to:A},f&&{isActive:g,activeClassName:h}))}const p=a.forwardRef(f)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(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 o=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 o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=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,a(l,o))}},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 a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((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)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},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[a,o]=n;const i=r?`${r}.${a}`:a;var l;"object"==typeof(l=o)&&l&&Object.keys(l).length>0?e(o,i):t[i]=o}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),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:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>p,WS:()=>m,_r:()=>d,Jo:()=>v,zh:()=>f,yW:()=>g,gB:()=>h});var r=n(6775),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=s(e,t),a=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,f=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=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})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&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 o}(t,n,e)}function m(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function h(e){return f(e).versions}function g(e){const t=f(e);return l(t)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return c(t,n)}function v(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4367:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||(window.ga("set","page",t.pathname+t.search+t.hash),window.ga("send","pageview"))}}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.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:()=>o});var r=n(7294);const a="iconExternalLink_nPIU";function o(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:a},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"}))}},7452:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ot});var r=n(7294),a=n(6010),o=n(4763),i=n(7462),l=n(6775),s=n(5999),c=n(5936);const u="docusaurus_skipToContent_fallback";function d(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(u);t&&d(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&d(e.current)})),{containerRef:e,onClick:n}}const p=(0,s.I)({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",message:"Skip to main content"});function m(e){const t=e.children??p,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":p},r.createElement("a",(0,i.Z)({},e,{href:`#${u}`,onClick:a}),t))}var h=n(833),g=n(5281),b=n(9727);const v="skipToContent_fXgn";function y(){return r.createElement(m,{className:v})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:l,...s}=e;return r.createElement("svg",(0,i.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S="closeButton_CVFx";function x(e){return r.createElement("button",(0,i.Z)({type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const C="content_knG7";function T(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,i.Z)({},e,{className:(0,a.Z)(C,e.className),dangerouslySetInnerHTML:{__html:n}}))}const _="announcementBar_mb4j",A="announcementBarPlaceholder_vyr4",L="announcementBarClose_gvF7",R="announcementBarContent_xLdY";function N(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:_,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:A}),r.createElement(T,{className:R}),i&&r.createElement(x,{onClick:n,className:L}))}var P=n(3163),O=n(2466);var I=n(902),D=n(3102);const M=r.createContext(null);function F(e){let{children:t}=e;const n=function(){const e=(0,P.e)(),t=(0,D.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,I.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(M.Provider,{value:n},t)}function B(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function j(){const e=(0,r.useContext)(M);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,D.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:B(o)})),[a,o,t])}function z(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=j();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.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"},o)))}var U=n(2949),$=n(2389);function q(e){return r.createElement("svg",(0,i.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 H(e){return r.createElement("svg",(0,i.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 G={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function Z(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,$.Z)(),c=(0,s.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"===o?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(G.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",G.toggleButton,!l&&G.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:c,"aria-label":c,"aria-live":"polite"},r.createElement(q,{className:(0,a.Z)(G.toggleIcon,G.lightToggleIcon)}),r.createElement(H,{className:(0,a.Z)(G.toggleIcon,G.darkToggleIcon)})))}const V=r.memo(Z),W="darkNavbarColorModeToggle_X3D1";function K(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,U.I)();return a?null:r.createElement(V,{className:t,buttonClassName:"dark"===n?W:void 0,value:o,onChange:i})}var Y=n(1327);function Q(){return r.createElement(Y.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){const e=(0,P.e)();return r.createElement("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function J(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Q,null),r.createElement(K,{className:"margin-right--md"}),r.createElement(X,null))}var ee=n(9960),te=n(4996),ne=n(3919),re=n(8022),ae=n(9471);function oe(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:l,html:s,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const f=(0,te.Z)(a),p=(0,te.Z)(t),m=(0,te.Z)(o,{forcePrependBaseUrl:!0}),h=l&&o&&!(0,ne.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,l,h&&r.createElement(ae.Z,c&&{width:12,height:12}))};return o?r.createElement(ee.Z,(0,i.Z)({href:u?m:o},d,g)):r.createElement(ee.Z,(0,i.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?(0,re.F)(n,t.pathname):t.pathname.startsWith(p)},d,g))}function ie(e){let{className:t,isDropdownItem:n=!1,...o}=e;const l=r.createElement(oe,(0,i.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,l):l}function le(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(oe,(0,i.Z)({className:(0,a.Z)("menu__link",t)},o)))}function se(e){let{mobile:t=!1,position:n,...a}=e;const o=t?le:ie;return r.createElement(o,(0,i.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ce=n(6043),ue=n(8596),de=n(2263);function fe(e,t){return e.some((e=>function(e,t){return!!(0,ue.Mg)(e.to,t)||!!(0,re.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function pe(e){let{items:t,position:n,className:o,onClick:l,...s}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(oe,(0,i.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Ze,(0,i.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function me(e){let{items:t,className:n,position:o,onClick:s,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,de.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=fe(t,u),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ce.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(oe,(0,i.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),p()}}),c.children??c.label),r.createElement(ce.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(Ze,(0,i.Z)({mobile:!0,isDropdownItem:!0,onClick:s,activeClassName:"menu__link--active"},e,{key:t}))))))}function he(e){let{mobile:t=!1,...n}=e;const a=t?me:pe;return r.createElement(a,n)}var ge=n(4711);function be(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),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 ve="iconLanguage_nlXk";function ye(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var we=n(830),ke=["translations"];function Ee(){return Ee=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},Ee.apply(this,arguments)}function Se(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,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(s){l=!0,a=s}finally{try{i||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return xe(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 xe(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 xe(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 Ce(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var Te="Ctrl";var _e=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=Ce(e,ke),i=a.buttonText,l=void 0===i?"Search":i,s=a.buttonAriaLabel,c=void 0===s?"Search":s,u=Se((0,r.useState)(null),2),d=u[0],f=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(Te))}),[]),r.createElement("button",Ee({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(we.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Te?r.createElement(ye,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Ae=n(5742),Le=n(6177),Re=n(239),Ne=n(3320);var Pe=n(3935);const Oe={button:{buttonText:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,s.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,s.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,s.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,s.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,s.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,s.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,s.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,s.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,s.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,s.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,s.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,s.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,s.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,s.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Ie=null;function De(e){let{hit:t,children:n}=e;return r.createElement(ee.Z,{to:t.url},n)}function Me(e){let{state:t,onClose:n}=e;const a=(0,Le.M)();return r.createElement(ee.Z,{to:a(t.query),onClick:n},r.createElement(s.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function Fe(e){var t;let{contextualSearch:a,externalUrlRegex:o,...s}=e;const{siteMetadata:c}=(0,de.Z)(),u=(0,Re.l)(),d=function(){const{locale:e,tags:t}=(0,Ne._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),f=(null==(t=s.searchParameters)?void 0:t.facetFilters)??[],p=a?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(d,f):f,m={...s.searchParameters,facetFilters:p},h=(0,l.k6)(),g=(0,r.useRef)(null),b=(0,r.useRef)(null),[v,y]=(0,r.useState)(!1),[w,k]=(0,r.useState)(void 0),E=(0,r.useCallback)((()=>Ie?Promise.resolve():Promise.all([n.e(6780).then(n.bind(n,6780)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,6945)),Promise.all([n.e(532),n.e(8894)]).then(n.bind(n,8894))]).then((e=>{let[{DocSearchModal:t}]=e;Ie=t}))),[]),S=(0,r.useCallback)((()=>{E().then((()=>{g.current=document.createElement("div"),document.body.insertBefore(g.current,document.body.firstChild),y(!0)}))}),[E,y]),x=(0,r.useCallback)((()=>{var e;y(!1),null==(e=g.current)||e.remove()}),[y]),C=(0,r.useCallback)((e=>{E().then((()=>{y(!0),k(e.key)}))}),[E,y,k]),T=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,re.F)(o,t)?window.location.href=t:h.push(t)}}).current,_=(0,r.useRef)((e=>s.transformItems?s.transformItems(e):e.map((e=>({...e,url:u(e.url)}))))).current,A=(0,r.useMemo)((()=>e=>r.createElement(Me,(0,i.Z)({},e,{onClose:x}))),[x]),L=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",c.docusaurusVersion),e)),[c.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key.toLowerCase()&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:v,onOpen:S,onClose:x,onInput:C,searchButtonRef:b}),r.createElement(r.Fragment,null,r.createElement(Ae.Z,null,r.createElement("link",{rel:"preconnect",href:`https://${s.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})),r.createElement(_e,{onTouchStart:E,onFocus:E,onMouseOver:E,onClick:S,ref:b,translations:Oe.button}),v&&Ie&&g.current&&(0,Pe.createPortal)(r.createElement(Ie,(0,i.Z)({onClose:x,initialScrollY:window.scrollY,initialQuery:w,navigator:T,transformItems:_,hitComponent:De,transformSearchClient:L},s.searchPagePath&&{resultsFooterComponent:A},s,{searchParameters:m,placeholder:Oe.placeholder,translations:Oe.modal})),g.current))}function Be(){const{siteConfig:e}=(0,de.Z)();return r.createElement(Fe,e.themeConfig.algolia)}const je="searchBox_ZlJk";function ze(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,je)},t)}var Ue=n(143),$e=n(3438);var qe=n(373);const He=e=>e.docs.find((t=>t.id===e.mainDocId));const Ge={default:se,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:c,locales:u,localeConfigs:d}}=(0,de.Z)(),f=(0,ge.l)(),{search:p,hash:m}=(0,l.TH)(),h=[...n,...u.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===c?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[c].label;return r.createElement(he,(0,i.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(be,{className:ve}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ze,{className:n},r.createElement(Be,null))},dropdown:he,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:l}=(0,Ue.Iw)(a),s=(0,$e.vY)(t,a);return null===s?null:r.createElement(se,(0,i.Z)({exact:!0},o,{isActive:()=>(null==l?void 0:l.path)===s.path||!(null==l||!l.sidebar)&&l.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:l}=(0,Ue.Iw)(a),s=(0,$e.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(se,(0,i.Z)({exact:!0},o,{isActive:()=>(null==l?void 0:l.sidebar)===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const l=(0,$e.lO)(a)[0],s=t??l.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(l).path;return r.createElement(se,(0,i.Z)({},o,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:c,...u}=e;const{search:d,hash:f}=(0,l.TH)(),p=(0,Ue.Iw)(n),m=(0,Ue.gB)(n),{savePreferredVersionName:h}=(0,qe.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??He(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...c],b=(0,$e.lO)(n)[0],v=t&&g.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:He(b).path;return g.length<=1?r.createElement(se,(0,i.Z)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(he,(0,i.Z)({},u,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function Ze(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ge[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ve(){const e=(0,P.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ze,(0,i.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function We(e){return r.createElement("button",(0,i.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(s.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 Ke(){const e=0===(0,w.L)().navbar.items.length,t=j();return r.createElement(r.Fragment,null,!e&&r.createElement(We,{onClick:()=>t.hide()}),t.content)}function Ye(){const e=(0,P.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(z,{header:r.createElement(J,null),primaryMenu:r.createElement(Ve,null),secondaryMenu:r.createElement(Ke,null)}):null}const Qe="navbarHideable_m1mJ",Xe="navbarHidden_jGov";function Je(e){return r.createElement("div",(0,i.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function et(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,P.e)(),{navbarRef:l,isNavbarVisible:u}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,O.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=null==r?void 0:r.scrollY,s=document.documentElement.scrollHeight-o.current,c=window.innerHeight;l&&i>=l?n(!1):i+c<s&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Qe,!u&&Xe],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Je,{onClick:i.toggle}),r.createElement(Ye,null))}var tt=n(8780);const nt="errorBoundaryError_a6uf";function rt(e){return r.createElement("button",(0,i.Z)({type:"button"},e),r.createElement(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function at(e){let{error:t}=e;const n=(0,tt.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:nt},n)}class ot extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}function it(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,i.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function lt(){const{toggle:e,shown:t}=(0,P.e)();return r.createElement("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(it,null))}const st="colorModeToggle_DEke";function ct(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(ot,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(Ze,e)))))}function ut(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 dt(){const e=(0,P.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(ut,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(lt,null),r.createElement(Q,null),r.createElement(ct,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(ct,{items:a}),r.createElement(K,{className:st}),!o&&r.createElement(ze,null,r.createElement(Be,null)))})}function ft(){return r.createElement(et,null,r.createElement(dt,null))}function pt(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:l,...s}=t,c=(0,te.Z)(n),u=(0,te.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(ee.Z,(0,i.Z)({className:"footer__link-item"},a?{href:l?u:a}:{to:c},s),o,a&&!(0,ne.Z)(a)&&r.createElement(ae.Z,null))}function mt(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(pt,{item:t}))}function ht(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(mt,{key:t,item:e})))))}function gt(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(ht,{key:t,column:e}))))}function bt(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function vt(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(pt,{item:t})}function yt(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(vt,{item:e}),t.length!==n+1&&r.createElement(bt,null))))))}function wt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(gt,{columns:t}):r.createElement(yt,{links:t})}var kt=n(941);const Et="footerLogoLink_BH7S";function St(e){let{logo:t}=e;const{withBaseUrl:n}=(0,te.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(kt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function xt(e){let{logo:t}=e;return t.href?r.createElement(ee.Z,{href:t.href,className:Et,target:t.target},r.createElement(St,{logo:t})):r.createElement(St,{logo:t})}function Ct(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Tt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function _t(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(Tt,{style:o,links:n&&n.length>0&&r.createElement(wt,{links:n}),logo:a&&r.createElement(xt,{logo:a}),copyright:t&&r.createElement(Ct,{copyright:t})})}const At=r.memo(_t),Lt=(0,I.Qc)([U.S,k.pl,O.OC,qe.L5,h.VC,function(e){let{children:t}=e;return r.createElement(D.n2,null,r.createElement(P.M,null,r.createElement(F,null,t)))}]);function Rt(e){let{children:t}=e;return r.createElement(Lt,null,t)}function Nt(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(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(rt,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(at,{error:t})))))}const Pt="mainWrapper_z2l0";function Ot(e){const{children:t,noFooter:n,wrapperClassName:i,title:l,description:s}=e;return(0,b.t)(),r.createElement(Rt,null,r.createElement(h.d,{title:l,description:s}),r.createElement(y,null),r.createElement(N,null),r.createElement(ft,null),r.createElement("div",{id:u,className:(0,a.Z)(g.k.wrapper.main,Pt,i)},r.createElement(o.Z,{fallback:e=>r.createElement(Nt,e)},t)),!n&&r.createElement(At,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),c=n(941);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:c}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)((null==c?void 0:c.href)||"/"),h=n?"":t,g=(null==c?void 0:c.alt)??h;return a.createElement(o.Z,(0,r.Z)({to:m},p,(null==c?void 0:c.target)&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:c,className:u,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],u)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,z:()=>h});var r=n(7462),a=n(7294),o=n(412);function i(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const l={display:"none",overflow:"hidden",height:"0px"},s={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?l:s;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function u(e){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function d(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=function(){const t=e.scrollHeight;return{transition:`height ${(null==r?void 0:r.duration)??u(t)}ms ${(null==r?void 0:r.easing)??"ease-in-out"}`,height:`${t}px`}}();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return c(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(a(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{a()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?l:s}function p(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return d({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(u.current,n),null==i||i(n))},className:l},r)}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(p,(0,r.Z)({},n,{collapsed:l})):null}function h(e){let{lazy:t,...n}=e;const r=t?m:p;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),u=()=>"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,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&d(!1),!r&&u()||o(!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),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),c="theme",u=(0,i.WA)(c),d="light",f="dark",p=e=>e===f?f:d;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,i]=(0,r.useState)((e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e))(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const s=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(i(t),a&&(e=>{u.set(p(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f:d:e),u.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=u.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:o,setColorMode:s,get isDarkTheme(){return o===f},setLightTheme(){s(d)},setDarkTheme(){s(f)}})),[o,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 o.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:()=>b,Oh:()=>w});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(3438),s=n(902),c=n(12);const u=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,c.WA)(u(e),{persistence:t}).set(n)},f=(e,t)=>(0,c.WA)(u(e),{persistence:t}).get(),p=(e,t)=>{(0,c.WA)(u(e),{persistence:t}).del()};const m=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,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 a(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,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(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 b(e){let{children:t}=e;return l.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{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,a._r)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??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),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(7294),a=n(3102),o=n(7524),i=n(1980),l=n(6668),s=n(902);const c=r.createContext(void 0);function u(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:s})),[e,n,u,s])}function d(e){let{children:t}=e;const n=u();return r.createElement(c.Provider,{value:n},t)}function f(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.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:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},6177:(e,t,n)=>{"use strict";n.d(t,{K:()=>i,M:()=>l});var r=n(7294),a=n(2263),o=n(1980);function i(){return(0,o.Nc)("q")}function l(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?q=${encodeURIComponent(t)}`),[e,n])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>c});var r=n(7294),a=n(412);const o="desktop",i="mobile",l="ssr";function s(){return a.Z.canUseDOM?window.innerWidth>996?o:i:l}function c(){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:{}}},3438:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>f,_F:()=>m,cE:()=>d,hI:()=>w,lO:()=>b,oz:()=>v,s1:()=>g,vY:()=>y});var r=n(7294),a=n(6775),o=n(8790),i=n(143),l=n(373),s=n(1116),c=n(7392),u=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,u.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 a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,u.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,u.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function g(){var e;const t=(0,s.V)(),{pathname:n}=(0,a.TH)();return!1!==(null==(e=(0,i.gA)())?void 0:e.pluginData.breadcrumbs)&&t?h({sidebarItems:t.items,pathname:n}):null}function b(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function v(e,t){const n=b(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(", ")}".\nAvailable sidebar ids are:\n- ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function y(e,t){const n=b(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(`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- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function w(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:c}}},2128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(2263);function a(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return null!=e&&e.trim().length?`${e.trim()} ${a} ${n}`:n}},1980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>c,Rb:()=>l,_X:()=>s});var r=n(7294),a=n(6775),o=n(1688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function c(e){const t=s(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(null!=r&&r.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},7392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>u,VC:()=>p});var r=n(7294),a=n(6010),o=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),c=n(2128);function u(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const u=(0,c.p)(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),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,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>c,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r,a;super(),this.name="ReactContextError",this.message=`Hook ${(null==(n=this.stack)||null==(r=n.split("\n")[1])||null==(a=r.match(/at (?:\w+\.)?(?<name>\w+)/))?void 0:a.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 c(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8022:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=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,o.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 a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f});var r=n(7294),a=n(412),o=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 c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=c(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>null==n.current?void 0:n.current()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.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 a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-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(143),a=n(2263),o=n(373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),s=(0,o.Oh)();const c=[i,...Object.keys(t).map((function(e){const r=(null==n?void 0:n.activePlugin.pluginId)===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:c}}},12:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>u});var r=n(7294),a=n(1688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"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,s||(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),s=!0),null}var t}let s=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(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,listen:t}}(e);const n=l(null==t?void 0:t.persistence);return null===n?c:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?c:u(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(2263),a=n(6775);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?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),a=n(6775),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.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:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},239:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(7294),a=n(8022),o=n(4996),i=n(6278);function l(){const{withBaseUrl:e}=(0,o.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.F)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},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[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,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(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},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.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>T,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;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&&a(e),s=t&&a(t),c=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(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 c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(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,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!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 b="popstate",v="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,a=(-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,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,c=i.forceRefresh,w=void 0!==c&&c,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,x=void 0===S?6:S,C=e.basename?d(s(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return C&&(o=u(o,C)),p(o,r,n)}function _(){return Math.random().toString(36).substr(2,x)}var A=m();function L(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(T(e.state))}function N(){O(T(y()))}var P=!1;function O(e){if(P)P=!1,L();else{A.confirmTransitionTo(e,"POP",E,(function(t){t?L({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 a=n-r;a&&(P=!0,F(a))}(e)}))}}var I=T(y()),D=[I.key];function M(e){return C+f(e)}function F(e){n.go(e)}var B=0;function j(e){1===(B+=e)&&1===e?(window.addEventListener(b,R),o&&window.addEventListener(v,N)):0===B&&(window.removeEventListener(b,R),o&&window.removeEventListener(v,N))}var z=!1;var U={length:n.length,action:"POP",location:I,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,_(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf(U.location.key),c=D.slice(0,s+1);c.push(o.key),D=c,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,_(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)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]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+c(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:c,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function C(e){window.location.replace(S(window.location.href)+"#"+e)}function T(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,c=void 0===i?"slash":i,b=e.basename?d(s(e.basename)):"",v=E[c],y=v.encodePath,w=v.decodePath;function T(){var e=w(x());return b&&(e=u(e,b)),p(e)}var _=m();function A(e){(0,r.Z)(z,e),z.length=t.length,_.notifyListeners(z.location,z.action)}var L=!1,R=null;function N(){var e,t,n=x(),r=y(n);if(n!==r)C(r);else{var a=T(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===f(a))return;R=null,function(e){if(L)L=!1,A();else{var t="POP";_.confirmTransitionTo(e,t,o,(function(n){n?A({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 a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var P=x(),O=y(P);P!==O&&C(O);var I=T(),D=[f(I)];function M(e){t.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?window.addEventListener(k,N):0===F&&window.removeEventListener(k,N)}var j=!1;var z={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(b+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(b+t);if(x()!==a){R=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(f(z.location)),i=D.slice(0,o+1);i.push(t),D=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(b+t);x()!==a&&(R=t,C(a));var o=D.indexOf(f(z.location));-1!==o&&(D[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=_.setPrompt(e);return j||(B(1),j=!0),function(){return j&&(j=!1,B(-1)),t()}},listen:function(e){var t=_.appendListener(e);return B(1),function(){B(-1),t()}}};return z}function _(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,c=void 0===s?6:s,u=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,c)}var g=_(l,0,o.length-1),b=o.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),v=f;function y(e){var t=_(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:b.length,action:"POP",location:b[g],index:g,entries:b,createHref:v,push:function(e,t){var r="PUSH",a=p(e,t,h(),w.location);u.confirmTransitionTo(a,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,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},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),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={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]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=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 a=p(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var b=i[g];if(!(o[b]||r&&r[b]||h&&h[b]||l&&l[b])){var v=f(n,b);try{c(t,b,v)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,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 c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},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,a;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 a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}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=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),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)*a(Math.random()*t,.1,.95)),t=a(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");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.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,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=f(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);c(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===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(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(a){return!1}}()?Object.assign:function(e,o){for(var i,l,s=a(e),c=1;c<arguments.length;c++){for(var u in i=Object(arguments[c]))n.call(i,u)&&(s[u]=i[u]);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}},4779:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",u=t&&t.delimiter||"/";null!=(n=a.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],b=n[4],v=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,x=n[2]||u,C=b||v;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:C?c(C):w?".*":"[^"+s(x)+"]+?"})}}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),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,f=l[u.name];if(null==f){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(f)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');o+=u.prefix+d}}else o+=u}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(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 a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var c=e[l];if("string"==typeof c)i+=s(c);else{var f=s(c.prefix),p="(?:"+c.pattern+")";t.push(c),c.repeat&&(p+="(?:"+f+p+")*"),i+=p=c.optional?c.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",u(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 u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(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 a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);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 a=e.classList;if(a.contains(t))return!0;if(a.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 a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var c=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],c=r.util.type(s);"Object"!==c||o[i(s)]?"Array"!==c||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},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 a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,u,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,b=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!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=u;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var C,T=1;if(v){if(!(C=o(k,S,e,b))||C.index>=e.length)break;var _=C.index,A=C.index+C[0].length,L=S;for(L+=E.value.length;_>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(L<A||"string"==typeof R.value);R=R.next)T++,L+=R.value.length;T--,x=e.slice(S,L),C.index-=S}else if(!(C=o(k,0,x,b)))continue;_=C.index;var N=C[0],P=x.slice(0,_),O=x.slice(_+N.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(P&&(D=s(t,D,P),S+=P.length),c(t,D,T),E=s(t,D,new a(f,g?r.tokenize(N,g):N,y,N)),O&&s(t,E,O),T>1){var M={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.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,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={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(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.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]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.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:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.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 a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.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:/[{}[\];(),.:]/},a.languages.c=a.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|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.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},a.languages.c.string],char:a.languages.c.char,comment:a.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:a.languages.c}}}}),a.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 a.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"])}(a),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"))}(a),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},a={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:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.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}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.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:a.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:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.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:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.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:a.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"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.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")),a.languages.js=a.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}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\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})),o=/"(?:[^"\\\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"(?:"+a+"|"+o+")"}))),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(o),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}(a),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,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \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("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),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 a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.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(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],c=/language-(.+)/.exec(o);if(c){n=c[1];break}}var u,d=e.languages[n];if(d)t.content=e.highlight((u=t.content,u.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}(a),a.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:a.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+/},a.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 a=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=u(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,p(u(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var c=t[s];"variable"===c.type&&a.indexOf(c.content)>=0&&p(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.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,a=r.inside["interpolation-punctuation"],o=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 a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),f=Object.keys(u);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 a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),p=o.substring(l+a.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,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),c=l.alias,d=Array.isArray(c)?c[0]:c,p=e.languages[d];if(!p)continue;i[1]=u(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),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}(a),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 a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\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:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<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 a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);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)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),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],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,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})}(a),a.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},a.languages.go=a.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/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.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,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],f="string"==typeof c?c:c.content,p=t(r,u),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(m+p.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),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}(a),a.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"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.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:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.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:/[:;(){}]/},a.languages.objectivec=a.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 a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.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/},a.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:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.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/}),a.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 a.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}})}(a),a.languages.scss=a.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]+\}/}}}),a.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}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.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}}),a.languages.scss.atrule.inside.rest=a.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:/[{}()\[\];:.]/}}(a),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}(a),a.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 o=a},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),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(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),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.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 a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var f,p=r(s),m=u;a(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 b in d)if(!(b in u))for(var v in p(b))if(v in u){f[b]=!0;break}for(var y in m=f)u[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,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var f=i(u.map((function(e){var t=c(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var u in n)c(u);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,u,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,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:o,resetWarningCache:a};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),a=n(7418),o=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 c(e,t){u(e,t),u(e+"Capture",t)}function u(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,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[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];b[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){b[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){b[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){b[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){b[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){b[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){b[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=b.hasOwnProperty(t)?b[t]:null;(null!==a?0===a.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,a,r)&&(n=null),r||null===a?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)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!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(v,y);b[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(v,y);b[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(v,y);b[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),b.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){b[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,x=60107,C=60108,T=60114,_=60109,A=60110,L=60112,R=60113,N=60120,P=60115,O=60116,I=60121,D=60128,M=60129,F=60130,B=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;E=j("react.element"),S=j("react.portal"),x=j("react.fragment"),C=j("react.strict_mode"),T=j("react.profiler"),_=j("react.provider"),A=j("react.context"),L=j("react.forward_ref"),R=j("react.suspense"),N=j("react.suspense_list"),P=j("react.memo"),O=j("react.lazy"),I=j("react.block"),j("react.scope"),D=j("react.opaque.id"),M=j("react.debug_trace_mode"),F=j("react.offscreen"),B=j("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 a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[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 Z(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 V(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 x:return"Fragment";case S:return"Portal";case T:return"Profiler";case C:return"StrictMode";case R:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case P:return V(e.type);case I:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function K(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Y(e){e._valueTracker||(e._valueTracker=function(e){var t=K(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 a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.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 Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=K(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 a({},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=W(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=W(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")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(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 ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({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 a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},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:W(n)}}function ce(e,t){var n=W(t.value),r=W(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 ue(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,be=(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 ve(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("--"),a=ke(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}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=a({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 xe(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 Ce(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 Te(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var _e=null,Ae=null,Le=null;function Re(e){if(e=ra(e)){if("function"!=typeof _e)throw Error(i(280));var t=e.stateNode;t&&(t=oa(t),_e(e.stateNode,e.type,t))}}function Ne(e){Ae?Le?Le.push(e):Le=[e]:Ae=e}function Pe(){if(Ae){var e=Ae,t=Le;if(Le=Ae=null,Re(e),t)for(e=0;e<t.length;e++)Re(t[e])}}function Oe(e,t){return e(t)}function Ie(e,t,n,r,a){return e(t,n,r,a)}function De(){}var Me=Oe,Fe=!1,Be=!1;function je(){null===Ae&&null===Le||(De(),Pe())}function ze(e,t){var n=e.stateNode;if(null===n)return null;var r=oa(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,a,o,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var He=!1,Ge=null,Ze=!1,Ve=null,We={onError:function(e){He=!0,Ge=e}};function Ke(e,t,n,r,a,o,i,l,s){He=!1,Ge=null,qe.apply(We,arguments)}function Ye(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 Qe(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(Ye(e)!==e)throw Error(i(188))}function Je(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,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){for(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)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,at,ot=!1,it=[],lt=null,st=null,ct=null,ut=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,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,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":ct=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":dt.delete(t.pointerId)}}function gt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=mt(t,n,r,a,o),null!==t&&(null!==(t=ra(t))&&nt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function bt(e){var t=na(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Qe(n)))return e.blockedOn=t,void at(e.lanePriority,(function(){o.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 vt(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=ra(n))&&nt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){vt(e)&&n.delete(t)}function wt(){for(ot=!1;0<it.length;){var e=it[0];if(null!==e.blockedOn){null!==(e=ra(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&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),null!==ct&&vt(ct)&&(ct=null),ut.forEach(yt),dt.forEach(yt)}function kt(e,t){e.blockedOn===t&&(e.blockedOn=null,ot||(ot=!0,o.unstable_scheduleCallback(o.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!==ct&&kt(ct,e),ut.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;)bt(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 xt={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},Ct={},Tt={};function _t(e){if(Ct[e])return Ct[e];if(!xt[e])return e;var t,n=xt[e];for(t in n)if(n.hasOwnProperty(t)&&t in Tt)return Ct[e]=n[t];return e}d&&(Tt=document.createElement("div").style,"AnimationEvent"in window||(delete xt.animationend.animation,delete xt.animationiteration.animation,delete xt.animationstart.animation),"TransitionEvent"in window||delete xt.transitionend.transition);var At=_t("animationend"),Lt=_t("animationiteration"),Rt=_t("animationstart"),Nt=_t("transitionend"),Pt=new Map,Ot=new Map,It=["abort","abort",At,"animationEnd",Lt,"animationIteration",Rt,"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",Nt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Ot.set(r,t),Pt.set(r,a),c(a,[r])}}(0,o.unstable_now)();var Mt=8;function Ft(e){if(0!=(1&e))return Mt=15,1;if(0!=(2&e))return Mt=14,2;if(0!=(4&e))return Mt=13,4;var t=24&e;return 0!==t?(Mt=12,t):0!=(32&e)?(Mt=11,32):0!==(t=192&e)?(Mt=10,t):0!=(256&e)?(Mt=9,256):0!==(t=3584&e)?(Mt=8,t):0!=(4096&e)?(Mt=7,4096):0!==(t=4186112&e)?(Mt=6,t):0!==(t=62914560&e)?(Mt=5,t):67108864&e?(Mt=4,67108864):0!=(134217728&e)?(Mt=3,134217728):0!==(t=805306368&e)?(Mt=2,t):0!=(1073741824&e)?(Mt=1,1073741824):(Mt=8,e)}function Bt(e,t){var n=e.pendingLanes;if(0===n)return Mt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Mt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Ft(s),a=Mt):0!==(l&=o)&&(r=Ft(l),a=Mt)}else 0!==(o=n&~i)?(r=Ft(o),a=Mt):0!==l&&(r=Ft(l),a=Mt);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(Ft(t),a<=Mt)return t;Mt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Ht(t)),r|=e[n],t&=~a;return r}function jt(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)/Zt|0)|0},Gt=Math.log,Zt=Math.LN2;var Vt=o.unstable_UserBlockingPriority,Wt=o.unstable_runWithPriority,Kt=!0;function Yt(e,t,n,r){Fe||De();var a=Xt,o=Fe;Fe=!0;try{Ie(a,e,t,n,r)}finally{(Fe=o)||je()}}function Qt(e,t,n,r){Wt(Vt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Kt)if((a=0==(4&t))&&0<it.length&&-1<pt.indexOf(e))e=mt(null,e,t,n,r),it.push(e);else{var o=Jt(e,t,n,r);if(null===o)a&&ht(e,r);else{if(a){if(-1<pt.indexOf(e))return e=mt(o,e,t,n,r),void it.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return lt=gt(lt,e,t,n,r,a),!0;case"dragenter":return st=gt(st,e,t,n,r,a),!0;case"mouseover":return ct=gt(ct,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,gt(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,dt.set(o,gt(dt.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;ht(e,r)}Dr(e,t,r,null,n)}}}function Jt(e,t,n,r){var a=Te(r);if(null!==(a=na(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Qe(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Dr(e,t,r,a,n),null}var en=null,tn=null,nn=null;function rn(){if(nn)return nn;var e,t,n=tn,r=n.length,a="value"in en?en.value:en.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return nn=a.slice(e,1<t?1-t:void 0)}function an(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 on(){return!0}function ln(){return!1}function sn(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?on:ln,this.isPropagationStopped=ln,this}return a(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=on)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=on)},persist:function(){},isPersistent:on}),t}var cn,un,dn,fn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(fn),mn=a({},fn,{view:0,detail:0}),hn=sn(mn),gn=a({},mn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:An,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?(cn=e.screenX-dn.screenX,un=e.screenY-dn.screenY):un=cn=0,dn=e),cn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),bn=sn(gn),vn=sn(a({},gn,{dataTransfer:0})),yn=sn(a({},mn,{relatedTarget:0})),wn=sn(a({},fn,{animationName:0,elapsedTime:0,pseudoElement:0})),kn=a({},fn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),En=sn(kn),Sn=sn(a({},fn,{data:0})),xn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Cn={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"},Tn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function _n(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Tn[e])&&!!t[e]}function An(){return _n}var Ln=a({},mn,{key:function(e){if(e.key){var t=xn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=an(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Cn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:An,charCode:function(e){return"keypress"===e.type?an(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?an(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Rn=sn(Ln),Nn=sn(a({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Pn=sn(a({},mn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:An})),On=sn(a({},fn,{propertyName:0,elapsedTime:0,pseudoElement:0})),In=a({},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(In),Mn=[9,13,27,32],Fn=d&&"CompositionEvent"in window,Bn=null;d&&"documentMode"in document&&(Bn=document.documentMode);var jn=d&&"TextEvent"in window&&!Bn,zn=d&&(!Fn||Bn&&8<Bn&&11>=Bn),Un=String.fromCharCode(32),$n=!1;function qn(e,t){switch(e){case"keyup":return-1!==Mn.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 Zn={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 Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Zn[e.type]:"textarea"===t}function Wn(e,t,n,r){Ne(r),0<(t=Fr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Kn=null,Yn=null;function Qn(e){Lr(e,0)}function Xn(e){if(Q(aa(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 ar(){Kn&&(Kn.detachEvent("onpropertychange",or),Yn=Kn=null)}function or(e){if("value"===e.propertyName&&Xn(Yn)){var t=[];if(Wn(t,Yn,e,Te(e)),e=Qn,Fe)e(t);else{Fe=!0;try{Oe(e,t)}finally{Fe=!1,je()}}}}function ir(e,t,n){"focusin"===e?(ar(),Yn=n,(Kn=t).attachEvent("onpropertychange",or)):"focusout"===e&&ar()}function lr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Yn)}function sr(e,t){if("click"===e)return Xn(t)}function cr(e,t){if("input"===e||"change"===e)return Xn(t)}var ur="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(ur(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])||!ur(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 br(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 vr=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)&&br(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=Fr(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(It,2);for(var xr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Cr=0;Cr<xr.length;Cr++)Ot.set(xr[Cr],0);u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Tr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),_r=new Set("cancel close invalid load scroll toggle".split(" ").concat(Tr));function Ar(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,c){if(Ke.apply(this,arguments),He){if(!He)throw Error(i(198));var u=Ge;He=!1,Ge=null,Ze||(Ze=!0,Ve=u)}}(r,t,void 0,e),e.currentTarget=null}function Lr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,c=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Ar(a,l,c),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Ar(a,l,c),o=s}}}if(Ze)throw e=Ve,Ze=!1,Ve=null,e}function Rr(e,t){var n=ia(t),r=e+"__bubble";n.has(r)||(Ir(t,e,2,!1),n.add(r))}var Nr="_reactListening"+Math.random().toString(36).slice(2);function Pr(e){e[Nr]||(e[Nr]=!0,l.forEach((function(t){_r.has(t)||Or(t,!1,e,null),Or(t,!0,e,null)})))}function Or(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&_r.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=ia(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Ir(o,e,a,t),i.add(l))}function Ir(e,t,n,r){var a=Ot.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Qt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!Ue||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,a){var o=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===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=na(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Be)return e(t,n);Be=!0;try{Me(e,t,n)}finally{Be=!1,je()}}((function(){var r=o,a=Te(n),i=[];e:{var l=Pt.get(e);if(void 0!==l){var s=pn,c=e;switch(e){case"keypress":if(0===an(n))break e;case"keydown":case"keyup":s=Rn;break;case"focusin":c="focus",s=yn;break;case"focusout":c="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=bn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Pn;break;case At:case Lt:case Rt:s=wn;break;case Nt:s=On;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=Nn}var u=0!=(4&t),d=!u&&"scroll"===e,f=u?null!==l?l+"Capture":null:l;u=[];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))&&u.push(Mr(m,h,p)))),d)break;m=m.return}0<u.length&&(l=new s(l,c,null,n,a),i.push({event:l,listeners:u}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(c=n.relatedTarget||n.fromElement)||!na(c)&&!c[ea])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?na(c):null)&&(c!==(d=Ye(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=bn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Nn,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:aa(s),p=null==c?l:aa(c),(l=new u(h,m+"leave",s,n,a)).target=d,l.relatedTarget=p,h=null,na(a)===r&&((u=new u(f,m+"enter",c,n,a)).target=p,u.relatedTarget=d,h=u),d=h,s&&c)e:{for(f=c,m=0,p=u=s;p;p=Br(p))m++;for(p=0,h=f;h;h=Br(h))p++;for(;0<m-p;)u=Br(u),m--;for(;0<p-m;)f=Br(f),p--;for(;m--;){if(u===f||null!==f&&u===f.alternate)break e;u=Br(u),f=Br(f)}u=null}else u=null;null!==s&&jr(i,l,s,u,!1),null!==c&&null!==d&&jr(i,d,c,u,!0)}if("select"===(s=(l=r?aa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Jn;else if(Vn(l))if(er)g=cr;else{g=lr;var b=ir}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=sr);switch(g&&(g=g(e,r))?Wn(i,g,n,a):(b&&b(e,l,r),"focusout"===e&&(b=l._wrapperState)&&b.controlled&&"number"===l.type&&ae(l,"number",l.value)),b=r?aa(r):window,e){case"focusin":(Vn(b)||"true"===b.contentEditable)&&(yr=b,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,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":Sr(i,n,a)}var v;if(Fn)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&&(v=rn()):(tn="value"in(en=a)?en.value:en.textContent,Gn=!0)),0<(b=Fr(r,y)).length&&(y=new Sn(y,e,null,n,a),i.push({event:y,listeners:b}),v?y.data=v:null!==(v=Hn(n))&&(y.data=v))),(v=jn?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||!Fn&&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=Fr(r,"onBeforeInput")).length&&(a=new Sn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=v))}Lr(i,t)}))}function Mr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Fr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=ze(e,n))&&r.unshift(Mr(e,o,a)),null!=(o=ze(e,t))&&r.push(Mr(e,o,a))),e=e.return}return r}function Br(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function jr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,a?null!=(s=ze(n,o))&&i.unshift(Mr(n,s,l)):a||null!=(s=ze(n,o))&&i.push(Mr(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,Zr="function"==typeof clearTimeout?clearTimeout:void 0;function Vr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Wr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Kr(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 Yr=0;var Qr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Qr,Jr="__reactProps$"+Qr,ea="__reactContainer$"+Qr,ta="__reactEvents$"+Qr;function na(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ea]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Kr(e);null!==e;){if(n=e[Xr])return n;e=Kr(e)}return t}n=(e=n).parentNode}return null}function ra(e){return!(e=e[Xr]||e[ea])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function aa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function oa(e){return e[Jr]||null}function ia(e){var t=e[ta];return void 0===t&&(t=e[ta]=new Set),t}var la=[],sa=-1;function ca(e){return{current:e}}function ua(e){0>sa||(e.current=la[sa],la[sa]=null,sa--)}function da(e,t){sa++,la[sa]=e.current,e.current=t}var fa={},pa=ca(fa),ma=ca(!1),ha=fa;function ga(e,t){var n=e.type.contextTypes;if(!n)return fa;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ba(e){return null!=(e=e.childContextTypes)}function va(){ua(ma),ua(pa)}function ya(e,t,n){if(pa.current!==fa)throw Error(i(168));da(pa,t),da(ma,n)}function wa(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function ka(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||fa,ha=pa.current,da(pa,e),da(ma,ma.current),!0}function Ea(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=wa(e,t,ha),r.__reactInternalMemoizedMergedChildContext=e,ua(ma),ua(pa),da(pa,e)):ua(ma),da(ma,n)}var Sa=null,xa=null,Ca=o.unstable_runWithPriority,Ta=o.unstable_scheduleCallback,_a=o.unstable_cancelCallback,Aa=o.unstable_shouldYield,La=o.unstable_requestPaint,Ra=o.unstable_now,Na=o.unstable_getCurrentPriorityLevel,Pa=o.unstable_ImmediatePriority,Oa=o.unstable_UserBlockingPriority,Ia=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Ma=o.unstable_IdlePriority,Fa={},Ba=void 0!==La?La:function(){},ja=null,za=null,Ua=!1,$a=Ra(),qa=1e4>$a?Ra:function(){return Ra()-$a};function Ha(){switch(Na()){case Pa:return 99;case Oa:return 98;case Ia:return 97;case Da:return 96;case Ma:return 95;default:throw Error(i(332))}}function Ga(e){switch(e){case 99:return Pa;case 98:return Oa;case 97:return Ia;case 96:return Da;case 95:return Ma;default:throw Error(i(332))}}function Za(e,t){return e=Ga(e),Ca(e,t)}function Va(e,t,n){return e=Ga(e),Ta(e,t,n)}function Wa(){if(null!==za){var e=za;za=null,_a(e)}Ka()}function Ka(){if(!Ua&&null!==ja){Ua=!0;var e=0;try{var t=ja;Za(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),ja=null}catch(n){throw null!==ja&&(ja=ja.slice(e+1)),Ta(Pa,Wa),n}finally{Ua=!1}}}var Ya=k.ReactCurrentBatchConfig;function Qa(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=ca(null),Ja=null,eo=null,to=null;function no(){to=eo=Ja=null}function ro(e){var t=Xa.current;ua(Xa),e.type._context._currentValue=t}function ao(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 oo(e,t){Ja=e,to=eo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Fi=!0),e.firstContext=null)}function io(e,t){if(to!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(to=e,t=1073741823),t={context:e,observedBits:t,next:null},null===eo){if(null===Ja)throw Error(i(308));eo=t,Ja.dependencies={lanes:0,firstContext:t,responders:null}}else eo=eo.next=t;return e._currentValue}var lo=!1;function so(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function co(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 uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function fo(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 po(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=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===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function mo(e,t,n,r){var o=e.updateQueue;lo=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var c=s,u=c.next;c.next=null,null===l?i=u:l.next=u,l=c;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=u:f.next=u,d.lastBaseUpdate=c)}}if(null!==i){for(f=o.baseState,l=0,d=u=c=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=a({},f,s);break e;case 2:lo=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(u=d=p,c=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(c=f),o.baseState=c,o.firstBaseUpdate=u,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var go=(new r.Component).refs;function bo(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),fo(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),fo(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),fo(e,a),ms(e,r,n)}};function yo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!fr(n,r)||!fr(a,o))}function wo(e,t,n){var r=!1,a=fa,o=t.contextType;return"object"==typeof o&&null!==o?o=io(o):(a=ba(t)?ha:pa.current,o=(r=null!=(r=t.contextTypes))?ga(e,a):fa),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function ko(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&&vo.enqueueReplaceState(t,t.state,null)}function Eo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=go,so(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=io(o):(o=ba(t)?ha:pa.current,a.context=ga(e,o)),mo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(bo(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),mo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var So=Array.isArray;function xo(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 a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===go&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Co(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 To(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 a(e,t){return(e=Zs(e,t)).index=0,e.sibling=null,e}function o(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=Ys(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=xo(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=xo(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ys(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=xo(e,null,t),n.return=e,n;case S:return(t=Qs(t,e.mode,n)).return=e,t}if(So(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;Co(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):c(e,t,n,r):null;case S:return n.key===a?u(e,t,n,r):null}if(So(n)||$(n))return null!==a?null:d(e,t,n,r,null);Co(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):c(t,e,r,a);case S:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(So(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);Co(t,r)}return null}function h(a,i,l,s){for(var c=null,u=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 b=p(a,d,l[h],s);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(a,d),i=o(b,i,h),null===u?c=b:u.sibling=b,u=b,d=g}if(h===l.length)return n(a,d),c;if(null===d){for(;h<l.length;h++)null!==(d=f(a,l[h],s))&&(i=o(d,i,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(a,e)})),c}function g(a,l,s,c){var u=$(s);if("function"!=typeof u)throw Error(i(150));if(null==(s=u.call(s)))throw Error(i(151));for(var d=u=null,h=l,g=l=0,b=null,v=s.next();null!==h&&!v.done;g++,v=s.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=p(a,h,v.value,c);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?u=y:d.sibling=y,d=y,h=b}if(v.done)return n(a,h),u;if(null===h){for(;!v.done;g++,v=s.next())null!==(v=f(a,v.value,c))&&(l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return u}for(h=r(a,h);!v.done;g++,v=s.next())null!==(v=m(h,a,g,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(a,e)})),u}return function(e,r,o,s){var c="object"==typeof o&&null!==o&&o.type===x&&null===o.key;c&&(o=o.props.children);var u="object"==typeof o&&null!==o;if(u)switch(o.$$typeof){case E:e:{for(u=o.key,c=r;null!==c;){if(c.key===u){if(7===c.tag){if(o.type===x){n(e,c.sibling),(r=a(c,o.props.children)).return=e,e=r;break e}}else if(c.elementType===o.type){n(e,c.sibling),(r=a(c,o.props)).ref=xo(e,c,o),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}o.type===x?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=xo(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Qs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ys(o,e.mode,s)).return=e,e=r),l(e);if(So(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(u&&Co(e,o),void 0===o&&!c)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var _o=To(!0),Ao=To(!1),Lo={},Ro=ca(Lo),No=ca(Lo),Po=ca(Lo);function Oo(e){if(e===Lo)throw Error(i(174));return e}function Io(e,t){switch(da(Po,t),da(No,e),da(Ro,Lo),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)}ua(Ro),da(Ro,t)}function Do(){ua(Ro),ua(No),ua(Po)}function Mo(e){Oo(Po.current);var t=Oo(Ro.current),n=me(t,e.type);t!==n&&(da(No,e),da(Ro,n))}function Fo(e){No.current===e&&(ua(Ro),ua(No))}var Bo=ca(0);function jo(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 zo=null,Uo=null,$o=!1;function qo(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 Ho(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 Go(e){if($o){var t=Uo;if(t){var n=t;if(!Ho(e,t)){if(!(t=Wr(n.nextSibling))||!Ho(e,t))return e.flags=-1025&e.flags|2,$o=!1,void(zo=e);qo(zo,n)}zo=e,Uo=Wr(t.firstChild)}else e.flags=-1025&e.flags|2,$o=!1,zo=e}}function Zo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;zo=e}function Vo(e){if(e!==zo)return!1;if(!$o)return Zo(e),$o=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=Uo;t;)qo(e,t),t=Wr(t.nextSibling);if(Zo(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){Uo=Wr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Uo=null}}else Uo=zo?Wr(e.stateNode.nextSibling):null;return!0}function Wo(){Uo=zo=null,$o=!1}var Ko=[];function Yo(){for(var e=0;e<Ko.length;e++)Ko[e]._workInProgressVersionPrimary=null;Ko.length=0}var Qo=k.ReactCurrentDispatcher,Xo=k.ReactCurrentBatchConfig,Jo=0,ei=null,ti=null,ni=null,ri=!1,ai=!1;function oi(){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(!ur(e[n],t[n]))return!1;return!0}function li(e,t,n,r,a,o){if(Jo=o,ei=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Qo.current=null===e||null===e.memoizedState?Oi:Ii,e=n(r,a),ai){o=0;do{if(ai=!1,!(25>o))throw Error(i(301));o+=1,ni=ti=null,t.updateQueue=null,Qo.current=Di,e=n(r,a)}while(ai)}if(Qo.current=Pi,t=null!==ti&&null!==ti.next,Jo=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 ci(){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 ui(e,t){return"function"==typeof t?t(e):t}function di(e){var t=ci(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ti,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,c=a;do{var u=c.lane;if((Jo&u)===u)null!==s&&(s=s.next={lane:0,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),r=c.eagerReducer===e?c.eagerState:e(r,c.action);else{var d={lane:u,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,ei.lanes|=u,Ul|=u}c=c.next}while(null!==c&&c!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(Fi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function fi(e){var t=ci(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(Fi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Jo&e)===e)&&(t._workInProgressVersionPrimary=r,Ko.push(t))),e)return n(t._source);throw Ko.push(t),Error(i(350))}function mi(e,t,n,r){var a=Ol;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Qo.current,c=s.useState((function(){return pi(a,t,n)})),u=c[1],d=c[0];c=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=u;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(u(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-Ht(i),c=1<<s;r[s]|=e,i&=~c}}}),[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);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(m,n)&&ur(h,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=u=Ni.bind(null,ei,e),c.queue=e,c.baseQueue=null,d=pi(a,t,n),c.memoizedState=c.baseState=d),d}function hi(e,t,n){return mi(ci(),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:ui,lastRenderedState:e}).dispatch=Ni.bind(null,ei,e),[t.memoizedState,e]}function bi(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 vi(e){return e={current:e},si().memoizedState=e}function yi(){return ci().memoizedState}function wi(e,t,n,r){var a=si();ei.flags|=e,a.memoizedState=bi(1|t,n,void 0,void 0===r?null:r)}function ki(e,t,n,r){var a=ci();r=void 0===r?null:r;var o=void 0;if(null!==ti){var i=ti.memoizedState;if(o=i.destroy,null!==r&&ii(r,i.deps))return void bi(t,n,o,r)}ei.flags|=e,a.memoizedState=bi(1|t,n,o,r)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return ki(516,4,e,t)}function xi(e,t){return ki(4,2,e,t)}function Ci(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 Ti(e,t,n){return n=null!=n?n.concat([e]):null,ki(4,2,Ci.bind(null,t,e),n)}function _i(){}function Ai(e,t){var n=ci();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 Li(e,t){var n=ci();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 Ri(e,t){var n=Ha();Za(98>n?98:n,(function(){e(!0)})),Za(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Ni(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===ei||null!==i&&i===ei)ai=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(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(c){}ms(e,a,r)}}var Pi={readContext:io,useCallback:oi,useContext:oi,useEffect:oi,useImperativeHandle:oi,useLayoutEffect:oi,useMemo:oi,useReducer:oi,useRef:oi,useState:oi,useDebugValue:oi,useDeferredValue:oi,useTransition:oi,useMutableSource:oi,useOpaqueIdentifier:oi,unstable_isNewReconciler:!1},Oi={readContext:io,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:io,useEffect:Ei,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ci.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=Ni.bind(null,ei,e),[r.memoizedState,e]},useRef:vi,useState:gi,useDebugValue:_i,useDeferredValue:function(e){var t=gi(e),n=t[0],r=t[1];return Ei((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=gi(!1),t=e[0];return vi(e=Ri.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($o){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=gi(t)[1];return 0==(2&ei.mode)&&(ei.flags|=516,bi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return gi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Ii={readContext:io,useCallback:Ai,useContext:io,useEffect:Si,useImperativeHandle:Ti,useLayoutEffect:xi,useMemo:Li,useReducer:di,useRef:yi,useState:function(){return di(ui)},useDebugValue:_i,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return Si((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Di={readContext:io,useCallback:Ai,useContext:io,useEffect:Si,useImperativeHandle:Ti,useLayoutEffect:xi,useMemo:Li,useReducer:fi,useRef:yi,useState:function(){return fi(ui)},useDebugValue:_i,useDeferredValue:function(e){var t=fi(ui),n=t[0],r=t[1];return Si((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=fi(ui)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return fi(ui)[0]},unstable_isNewReconciler:!1},Mi=k.ReactCurrentOwner,Fi=!1;function Bi(e,t,n,r){t.child=null===e?Ao(t,null,n,r):_o(t,e.child,n,r)}function ji(e,t,n,r,a){n=n.render;var o=t.ref;return oo(t,a),r=li(e,t,n,r,o,a),null===e||Fi?(t.flags|=1,Bi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function zi(e,t,n,r,a,o){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=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Ui(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:fr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function Ui(e,t,n,r,a,o){if(null!==e&&fr(e.memoizedProps,r)&&e.ref===t.ref){if(Fi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Fi=!0)}return Hi(e,t,n,r,o)}function $i(e,t,n){var r=t.pendingProps,a=r.children,o=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!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Bi(e,t,a,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,a){var o=ba(n)?ha:pa.current;return o=ga(t,o),oo(t,a),n=li(e,t,n,r,o,a),null===e||Fi?(t.flags|=1,Bi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Gi(e,t,n,r,a){if(ba(n)){var o=!0;ka(t)}else o=!1;if(oo(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),wo(t,n,r),Eo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=io(c):c=ga(t,c=ba(n)?ha:pa.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&ko(t,i,r,c),lo=!1;var f=t.memoizedState;i.state=f,mo(t,r,i,a),s=t.memoizedState,l!==r||f!==s||ma.current||lo?("function"==typeof u&&(bo(t,n,u,r),s=t.memoizedState),(l=lo||yo(t,n,l,r,f,s,c))?(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=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,co(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:Qa(t.type,l),i.props=c,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=io(s):s=ga(t,s=ba(n)?ha:pa.current);var p=n.getDerivedStateFromProps;(u="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&ko(t,i,r,s),lo=!1,f=t.memoizedState,i.state=f,mo(t,r,i,a);var m=t.memoizedState;l!==d||f!==m||ma.current||lo?("function"==typeof p&&(bo(t,n,p,r),m=t.memoizedState),(c=lo||yo(t,n,c,r,f,m,s))?(u||"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=c):("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 Zi(e,t,n,r,o,a)}function Zi(e,t,n,r,a,o){qi(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&Ea(t,n,!1),ol(e,t,o);r=t.stateNode,Mi.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=_o(t,e.child,null,o),t.child=_o(t,null,l,o)):Bi(e,t,l,o),t.memoizedState=r.state,a&&Ea(t,n,!0),t.child}function Vi(e){var t=e.stateNode;t.pendingContext?ya(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ya(0,t.context,!1),Io(e,t.containerInfo)}var Wi,Ki,Yi,Qi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=Bo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),da(Bo,1&o),null===e?(void 0!==a.fallback&&Go(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,t.lanes=33554432,e):((n=Ks({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Qi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ks(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{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,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&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=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,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),ao(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Bi(e,t,r.children,n),0!=(2&(r=Bo.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(da(Bo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===jo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===jo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(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=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$o)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 ba(t.type)&&va(),null;case 3:return Do(),ua(ma),ua(pa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Vo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),null;case 5:Fo(t);var o=Oo(Po.current);if(n=t.type,null!==e&&null!=t.stateNode)Ki(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=Oo(Ro.current),Vo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Jr]=l,n){case"dialog":Rr("cancel",r),Rr("close",r);break;case"iframe":case"object":case"embed":Rr("load",r);break;case"video":case"audio":for(e=0;e<Tr.length;e++)Rr(Tr[e],r);break;case"source":Rr("error",r);break;case"img":case"image":case"link":Rr("error",r),Rr("load",r);break;case"details":Rr("toggle",r);break;case"input":ee(r,l),Rr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Rr("invalid",r);break;case"textarea":se(r,l),Rr("invalid",r)}for(var c in xe(n,l),e=null,l)l.hasOwnProperty(c)&&(o=l[c],"children"===c?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(c)&&null!=o&&"onScroll"===c&&Rr("scroll",r));switch(n){case"input":Y(r),re(r,l,!0);break;case"textarea":Y(r),ue(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(c=9===o.nodeType?o:o.ownerDocument,e===de&&(e=pe(n)),e===de?"script"===n?((e=c.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=c.createElement(n,{is:r.is}):(e=c.createElement(n),"select"===n&&(c=e,r.multiple?c.multiple=!0:r.size&&(c.size=r.size))):e=c.createElementNS(e,n),e[Xr]=t,e[Jr]=r,Wi(e,t),t.stateNode=e,c=Ce(n,r),n){case"dialog":Rr("cancel",e),Rr("close",e),o=r;break;case"iframe":case"object":case"embed":Rr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Tr.length;o++)Rr(Tr[o],e);o=r;break;case"source":Rr("error",e),o=r;break;case"img":case"image":case"link":Rr("error",e),Rr("load",e),o=r;break;case"details":Rr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Rr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Rr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Rr("invalid",e);break;default:o=r}xe(n,o);var u=o;for(l in u)if(u.hasOwnProperty(l)){var d=u[l];"style"===l?Ee(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&be(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Rr("scroll",e):null!=d&&w(e,l,d,c))}switch(n){case"input":Y(e),re(e,r,!1);break;case"textarea":Y(e),ue(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(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 o.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)Yi(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Oo(Po.current),Oo(Ro.current),Vo(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 ua(Bo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Vo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Bo.current)?0===Bl&&(Bl=3):(0!==Bl&&3!==Bl||(Bl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&$l)||vs(Ol,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Do(),null===e&&Pr(t.stateNode.containerInfo),null;case 10:return ro(t),null;case 19:if(ua(Bo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(c=r.rendering))if(l)il(r,!1);else{if(0!==Bl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(c=jo(e))){for(t.flags|=64,il(r,!1),null!==(l=c.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===(c=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=c.childLanes,l.lanes=c.lanes,l.child=c.child,l.memoizedProps=c.memoizedProps,l.memoizedState=c.memoizedState,l.updateQueue=c.updateQueue,l.type=c.type,e=c.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return da(Bo,1&Bo.current|2),t.child}e=e.sibling}null!==r.tail&&qa()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=jo(c))){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&&!c.alternate&&!$o)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*qa()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(c.sibling=t.child,t.child=c):(null!==(n=r.last)?n.sibling=c:t.child=c,r.last=c)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=qa(),n.sibling=null,t=Bo.current,da(Bo,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:ba(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Do(),ua(ma),ua(pa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Fo(e),null;case 13:return ua(Bo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Bo),null;case 4:return Do(),null;case 10:return ro(e),null;case 23:case 24:return Ss(),null;default:return null}}function cl(e,t){try{var n="",r=t;do{n+=Z(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function ul(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Wi=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}},Ki=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Oo(Ro.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=zr)}for(d in xe(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var c=o[d];for(i in c)c.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 u=r[d];if(c=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&u!==c&&(null!=u||null!=c))if("style"===d)if(c){for(i in c)!c.hasOwnProperty(i)||u&&u.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in u)u.hasOwnProperty(i)&&c[i]!==u[i]&&(n||(n={}),n[i]=u[i])}else n||(l||(l=[]),l.push(d,n)),n=u;else"dangerouslySetInnerHTML"===d?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(l=l||[]).push(d,u)):"children"===d?"string"!=typeof u&&"number"!=typeof u||(l=l||[]).push(d,""+u):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=u&&"onScroll"===d&&Rr("scroll",e),l||c===u||(l=[])):"object"==typeof u&&null!==u&&u.$$typeof===D?u.toString():(l=l||[]).push(d,u))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Yi=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Yl||(Yl=!0,Ql=r),ul(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return ul(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),ul(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:Qa(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Vr(t.stateNode.containerInfo))}throw Error(i(163))}function bl(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 a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(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:Qa(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ho(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}ho(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 vl(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 a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=ke("display",a)}}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(xa&&"function"==typeof xa.onCommitFiberUnmount)try{xa.onCommitFiberUnmount(Sa,t)}catch(o){}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,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}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(o){zs(t,o)}break;case 5:hl(t);break;case 4:Cl(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&&(ve(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):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?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 xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function Cl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,c=s;;)if(yl(l,c),null!==c.child&&4!==c.tag)c.child.return=c,c=c.child;else{if(c===s)break e;for(;null===c.sibling;){if(null===c.return||c.return===s)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Tl(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 a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Jr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ce(e,a),t=Ce(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?Ee(n,s):"dangerouslySetInnerHTML"===l?be(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ce(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!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=qa(),vl(t.child,!0)),void _l(t);case 19:return void _l(t);case 23:case 24:return void vl(t,null!==t.memoizedState)}throw Error(i(163))}function _l(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 Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ll=Math.ceil,Rl=k.ReactCurrentDispatcher,Nl=k.ReactCurrentOwner,Pl=0,Ol=null,Il=null,Dl=0,Ml=0,Fl=ca(0),Bl=0,jl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Zl=1/0;function Vl(){Zl=qa()+500}var Wl,Kl=null,Yl=!1,Ql=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,cs=0,us=null,ds=!1;function fs(){return 0!=(48&Pl)?qa():-1!==ls?ls:ls=qa()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ha()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==cs&&(cs=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~cs;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Ha(),0!=(4&Pl)&&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<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;qt(e,t,n),e===Ol&&($l|=t,4===Bl&&vs(e,Dl));var r=Ha();1===t?0!=(8&Pl)&&0==(48&Pl)?ys(e):(gs(e,n),0===Pl&&(Vl(),Wa())):(0==(4&Pl)||98!==r&&99!==r||(null===as?as=new Set([e]):as.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,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),c=1<<s,u=o[s];if(-1===u){if(0==(c&r)||0!=(c&a)){u=t,Ft(c);var d=Mt;o[s]=10<=d?u+250:6<=d?u+5e3:-1}}else u<=t&&(e.expiredLanes|=c);l&=~c}if(r=Bt(e,e===Ol?Dl:0),t=Mt,0===r)null!==n&&(n!==Fa&&_a(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Fa&&_a(n)}15===t?(n=ys.bind(null,e),null===ja?(ja=[n],za=Ta(Pa,Ka)):ja.push(n),n=Fa):14===t?n=Va(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=Va(n,bs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function bs(e){if(ls=-1,cs=ss=0,0!=(48&Pl))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=Bt(e,e===Ol?Dl:0);if(0===n)return null;var r=n,a=Pl;Pl|=16;var o=Ts();for(Ol===e&&Dl===r||(Vl(),xs(e,r));;)try{Ls();break}catch(s){Cs(e,s)}if(no(),Rl.current=o,Pl=a,null!==Il?r=0:(Ol=null,Dl=0,r=Bl),0!=(zl&$l))xs(e,0);else if(0!==r){if(2===r&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Vr(e.containerInfo)),0!==(n=jt(e))&&(r=_s(e,n))),1===r)throw t=jl,xs(e,0),vs(e,n),gs(e,qa()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ps(e);break;case 3:if(vs(e,n),(62914560&n)===n&&10<(r=Gl+500-qa())){if(0!==Bt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Gr(Ps.bind(null,e),r);break}Ps(e);break;case 4:if(vs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Ht(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=qa()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ll(n/1960))-n)){e.timeoutHandle=Gr(Ps.bind(null,e),n);break}Ps(e);break;default:throw Error(i(329))}}return gs(e,qa()),e.callbackNode===t?bs.bind(null,e):null}function vs(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&Pl))throw Error(i(327));if(Ds(),e===Ol&&0!=(e.expiredLanes&Dl)){var t=Dl,n=_s(e,t);0!=(zl&$l)&&(n=_s(e,t=Bt(e,t)))}else n=_s(e,t=Bt(e,0));if(0!==e.tag&&2===n&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Vr(e.containerInfo)),0!==(t=jt(e))&&(n=_s(e,t))),1===n)throw n=jl,xs(e,0),vs(e,t),gs(e,qa()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ps(e),gs(e,qa()),null}function ws(e,t){var n=Pl;Pl|=1;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Wa())}}function ks(e,t){var n=Pl;Pl&=-2,Pl|=8;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Wa())}}function Es(e,t){da(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ua(Fl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Zr(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Do(),ua(ma),ua(pa),Yo();break;case 5:Fo(r);break;case 4:Do();break;case 13:case 19:ua(Bo);break;case 10:ro(r);break;case 23:case 24:Ss()}n=n.return}Ol=e,Il=Zs(e.current,null),Dl=Ml=zl=t,Bl=0,jl=null,ql=$l=Ul=0}function Cs(e,t){for(;;){var n=Il;try{if(no(),Qo.current=Pi,ri){for(var r=ei.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ri=!1}if(Jo=0,ni=ti=ei=null,ai=!1,Nl.current=null,null===n||null===n.return){Bl=1,jl=t,Il=null;break}e:{var o=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 c=s;if(0==(2&l.mode)){var u=l.alternate;u?(l.updateQueue=u.updateQueue,l.memoizedState=u.memoizedState,l.lanes=u.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Bo.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 b=new Set;b.add(c),f.updateQueue=b}else g.add(c);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 v=uo(-1,1);v.tag=2,fo(l,v)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(c,s)):void 0===(s=y.get(c))&&(s=new Set,y.set(c,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,c,l);c.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((V(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!==Bl&&(Bl=2),s=cl(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,po(f,fl(0,o,t));break e;case 1:o=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,po(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ns(n)}catch(S){t=S,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function Ts(){var e=Rl.current;return Rl.current=Pi,null===e?Pi:e}function _s(e,t){var n=Pl;Pl|=16;var r=Ts();for(Ol===e&&Dl===t||xs(e,t);;)try{As();break}catch(a){Cs(e,a)}if(no(),Pl=n,Rl.current=r,null!==Il)throw Error(i(261));return Ol=null,Dl=0,Bl}function As(){for(;null!==Il;)Rs(Il)}function Ls(){for(;null!==Il&&!Aa();)Rs(Il)}function Rs(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Ns(e):Il=t,Nl.current=null}function Ns(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Il=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.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(Il=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===Bl&&(Bl=5)}function Ps(e){var t=Ha();return Za(99,Os.bind(null,e,t)),null}function Os(e,t){do{Ds()}while(null!==es);if(0!=(48&Pl))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,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var c=31-Ht(o),u=1<<c;a[c]=0,l[c]=-1,s[c]=-1,o&=~u}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Ol&&(Il=Ol=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Pl,Pl|=32,Nl.current=null,Ur=Kt,br(l=gr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(u=s.getSelection&&s.getSelection())&&0!==u.rangeCount){s=u.anchorNode,o=u.anchorOffset,c=u.focusNode,u=u.focusOffset;try{s.nodeType,c.nodeType}catch(T){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,b=null;t:for(;;){for(var v;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==c||0!==u&&3!==g.nodeType||(p=d+u),3===g.nodeType&&(d+=g.nodeValue.length),null!==(v=g.firstChild);)b=g,g=v;for(;;){if(g===l)break t;if(b===s&&++m===o&&(f=d),b===c&&++h===u&&(p=d),null!==(v=g.nextSibling))break;b=(g=b).parentNode}g=v}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},Kt=!1,us=null,ds=!1,Kl=r;do{try{Is()}catch(T){if(null===Kl)throw Error(i(330));zs(Kl,T),Kl=Kl.nextEffect}}while(null!==Kl);us=null,Kl=r;do{try{for(l=e;null!==Kl;){var y=Kl.flags;if(16&y&&ve(Kl.stateNode,""),128&y){var w=Kl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Kl),Kl.flags&=-3;break;case 6:El(Kl),Kl.flags&=-3,Tl(Kl.alternate,Kl);break;case 1024:Kl.flags&=-1025;break;case 1028:Kl.flags&=-1025,Tl(Kl.alternate,Kl);break;case 4:Tl(Kl.alternate,Kl);break;case 8:Cl(l,s=Kl);var E=s.alternate;wl(s),null!==E&&wl(E)}Kl=Kl.nextEffect}}catch(T){if(null===Kl)throw Error(i(330));zs(Kl,T),Kl=Kl.nextEffect}}while(null!==Kl);if(k=$r,w=gr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&br(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),o=mr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.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}Kt=!!Ur,$r=Ur=null,e.current=n,Kl=r;do{try{for(y=e;null!==Kl;){var S=Kl.flags;if(36&S&&bl(y,Kl.alternate,Kl),128&S){w=void 0;var x=Kl.ref;if(null!==x){var C=Kl.stateNode;Kl.tag,w=C,"function"==typeof x?x(w):x.current=w}}Kl=Kl.nextEffect}}catch(T){if(null===Kl)throw Error(i(330));zs(Kl,T),Kl=Kl.nextEffect}}while(null!==Kl);Kl=null,Ba(),Pl=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Kl=r;null!==Kl;)t=Kl.nextEffect,Kl.nextEffect=null,8&Kl.flags&&((S=Kl).sibling=null,S.stateNode=null),Kl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,xa&&"function"==typeof xa.onCommitFiberRoot)try{xa.onCommitFiberRoot(Sa,n,void 0,64==(64&n.current.flags))}catch(T){}if(gs(e,qa()),Yl)throw Yl=!1,e=Ql,Ql=null,e;return 0!=(8&Pl)||Wa(),null}function Is(){for(;null!==Kl;){var e=Kl.alternate;ds||null===us||(0!=(8&Kl.flags)?et(Kl,us)&&(ds=!0):13===Kl.tag&&Al(e,Kl)&&et(Kl,us)&&(ds=!0));var t=Kl.flags;0!=(256&t)&&gl(e,Kl),0==(512&t)||Jl||(Jl=!0,Va(97,(function(){return Ds(),null}))),Kl=Kl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Za(e,Bs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Va(97,(function(){return Ds(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Va(97,(function(){return Ds(),null})))}function Bs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Pl))throw Error(i(331));var t=Pl;Pl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}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 Pl=t,Wa(),!0}function js(e,t,n){fo(e,t=fl(0,t=cl(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)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(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 a=pl(n,e=cl(t,e),1);if(fo(n,a),a=fs(),null!==(n=hs(n,1)))qt(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}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,Ol===e&&(Dl&n)===n&&(4===Bl||3===Bl&&(62914560&Dl)===Dl&&500>qa()-Gl?xs(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===Ha()?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 Zs(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 Vs(e,t,n,r,a,o){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 x:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case C:l=8,a|=1;break;case T:return(e=Hs(12,n,t,8|a)).elementType=T,e.type=T,e.lanes=o,e;case R:return(e=Hs(13,n,t,a)).type=R,e.elementType=R,e.lanes=o,e;case N:return(e=Hs(19,n,t,a)).elementType=N,e.lanes=o,e;case F:return Ks(n,a,o,t);case B:return(e=Hs(24,n,t,a)).elementType=B,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:l=10;break e;case A:l=9;break e;case L:l=11;break e;case P:l=14;break e;case O:l=16,r=null;break e;case I:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ks(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=F,e.lanes=n,e}function Ys(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Qs(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 ec(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Ye(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(ba(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var c=n.type;if(ba(c)){n=wa(n,c,s);break e}}n=s}else n=fa;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),fo(a,t),ms(a,l,o),l}function tc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function nc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function rc(e,t){nc(e,t),(e=e.alternate)&&nc(e,t)}function ac(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,so(t),e[ea]=n.current,Pr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function oc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ic(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=tc(i);l.call(e)}}ec(t,i,e,a)}else{if(o=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 ac(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=tc(i);s.call(e)}}ks((function(){ec(t,i,e,a)}))}return tc(i)}function lc(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!oc(t))throw Error(i(200));return Js(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||ma.current)Fi=!0;else{if(0==(n&r)){switch(Fi=!1,t.tag){case 3:Vi(t),Wo();break;case 5:Mo(t);break;case 1:ba(t.type)&&ka(t);break;case 4:Io(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;da(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(da(Bo,1&Bo.current),null!==(t=ol(e,t,n))?t.sibling:null);da(Bo,1&Bo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),da(Bo,Bo.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return ol(e,t,n)}Fi=0!=(16384&e.flags)}else Fi=!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,a=ga(t,pa.current),oo(t,n),a=li(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ba(r)){var o=!0;ka(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,so(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&bo(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,Eo(t,r,e,n),t=Zi(null,t,r,!0,o,n)}else t.tag=0,Bi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===P)return 14}return 2}(a),e=Qa(a,e),o){case 0:t=Hi(null,t,a,e,n);break e;case 1:t=Gi(null,t,a,e,n);break e;case 11:t=ji(null,t,a,e,n);break e;case 14:t=zi(null,t,a,Qa(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 1:return r=t.type,a=t.pendingProps,Gi(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 3:if(Vi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,co(e,t),mo(t,r,null,n),(r=t.memoizedState.element)===a)Wo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(Uo=Wr(t.stateNode.containerInfo.firstChild),zo=t,o=$o=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Ko.push(o);for(n=Ao(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Bi(e,t,r,n),Wo();t=t.child}return t;case 5:return Mo(t),null===e&&Go(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Hr(r,a)?l=null:null!==o&&Hr(r,o)&&(t.flags|=16),qi(e,t),Bi(e,t,l,n),t.child;case 6:return null===e&&Go(t),null;case 13:return Xi(e,t,n);case 4:return Io(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=_o(t,null,r,n):Bi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,ji(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 7:return Bi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Bi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(da(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!ma.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var c=s.dependencies;if(null!==c){l=s.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&o)){1===s.tag&&((u=uo(-1,n&-n)).tag=2,fo(s,u)),s.lanes|=n,null!==(u=s.alternate)&&(u.lanes|=n),ao(s.return,n),c.lanes|=n;break}u=u.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}Bi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,oo(t,n),r=r(a=io(a,o.unstable_observedBits)),t.flags|=1,Bi(e,t,r,n),t.child;case 14:return o=Qa(a=t.type,t.pendingProps),zi(e,t,a,o=Qa(a.type,o),r,n);case 15:return Ui(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Qa(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ba(r)?(e=!0,ka(t)):e=!1,oo(t,n),wo(t,r,a),Eo(t,r,a,n),Zi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ac.prototype.render=function(e){ec(e,this._internalRoot,null,null)},ac.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;ec(null,e,null,(function(){t[ea]=null}))},tt=function(e){13===e.tag&&(ms(e,4,fs()),rc(e,4))},nt=function(e){13===e.tag&&(ms(e,67108864,fs()),rc(e,67108864))},rt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),rc(e,n)}},at=function(e,t){return t()},_e=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 a=oa(r);if(!a)throw Error(i(90));Q(r),ne(r,a)}}}break;case"textarea":ce(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Oe=ws,Ie=function(e,t,n,r,a){var o=Pl;Pl|=4;try{return Za(98,e.bind(null,t,n,r,a))}finally{0===(Pl=o)&&(Vl(),Wa())}},De=function(){0==(49&Pl)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,qa())}))}Wa()}(),Ds())},Me=function(e,t){var n=Pl;Pl|=2;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Wa())}};var sc={Events:[ra,aa,oa,Ne,Pe,Ds,{current:!1}]},cc={findFiberByHostInstance:na,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uc={bundleType:cc.bundleType,version:cc.version,rendererPackageName:cc.rendererPackageName,rendererConfig:cc.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:cc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var dc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!dc.isDisabled&&dc.supportsFiber)try{Sa=dc.inject(uc),xa=dc}catch(ge){}}t.createPortal=lc,t.hydrate=function(e,t,n){if(!oc(t))throw Error(i(200));return ic(null,e,t,!0,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,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(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,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.next()).done;)if(!o(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(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&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=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!o(e[c[s]],i[c[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(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),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),c=n.n(s),u=n(6774),d=n.n(u);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,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}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)"},b={rel:["amphtml","canonical","alternate"]},v={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},x=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},C=function(e){return S(e,"onChangeClientState")||function(){}},T=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)}),{})},_=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),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=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 a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[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 c=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][c]&&(a[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},L=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},R=function(e){return Array.isArray(e)?e.join(""):e},N=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}},P=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=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}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+I(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},j=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,c=e.titleAttributes,u=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,a=N(e.metaTags,y),o=N(t,b),i=N(n,v);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return B(g.META,a.priority,r)+" "+B(g.LINK,o.priority,r)+" "+B(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,u=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:B(g.BASE,t,r),bodyAttributes:B("bodyAttributes",n,r),htmlAttributes:B("htmlAttributes",a,r),link:B(g.LINK,u,r),meta:B(g.META,d,r),noscript:B(g.NOSCRIPT,o,r),script:B(g.SCRIPT,f,r),style:B(g.STYLE,i,r),title:B(g.TITLE,{title:s,titleAttributes:c},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=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().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:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],c=t[s]||"";n.getAttribute(s)!==c&&n.setAttribute(s,c),-1===a.indexOf(s)&&a.push(s);var u=o.indexOf(s);-1!==u&&o.splice(u,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),V(g.TITLE,t)}(u,d);var f={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,c)},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)},K=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];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,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:_(["href"],e),bodyAttributes:T("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:T("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:T("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame((function(){W(t,(function(){K=null}))})):(W(t),K=null)):j&&(a=j(o)),r(a)},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);Y.propTypes={context:q.isRequired},Y.displayName="HelmetDispatcher";var Q=["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()(P(this.props,"helmetData"),P(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,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),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 c()(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."),c()(!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,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,Q),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,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(Y,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(Y,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().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,a=n?Symbol.for("react.portal"):60106,o=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,c=n?Symbol.for("react.context"):60110,u=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,b=n?Symbol.for("react.block"):60121,v=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 u:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case c:case f:case g:case h:case s:return e;default:return t}}case a:return t}}}function E(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===u},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===c},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)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},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===o||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===c||e.$$typeof===f||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},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 a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(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),c=[],u=[];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 a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.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 c.push(g),"function"==typeof m.webpack&&u.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 o(a(a(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),o(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 b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6775),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.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,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>u,rU:()=>g});var r=n(6775),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),c=n(2177),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.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=o.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=p!==m&&t||n,o.createElement("a",u)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,u=e.replace,g=e.to,b=e.innerRef,v=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,c.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},v,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(u||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||b:h.innerRef=b,o.createElement(a,h)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,u=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,x=e.to,C=e.innerRef,T=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,c.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,_=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=_?(0,r.LX)(n.pathname,{path:_,exact:h,sensitive:k,strict:E}):null,L=!!(y?y(A,n):A),R="function"==typeof m?m(L):m,N="function"==typeof S?S(L):S;L&&(R=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(" ")}(R,u),N=(0,l.Z)({},N,p));var P=(0,l.Z)({"aria-current":L&&a||null,className:R,style:N,to:i},T);return b!==v?P.ref=t||C:P.innerRef=C,o.createElement(g,P)}))}))},6775:(e,t,n)=>{"use strict";n.d(t,{AW:()=>C,F0:()=>k,rs:()=>N,s6:()=>w,LX:()=>x,k6:()=>O,TH:()=>I});var r=n(5068),a=n(7294),o=n(9318),i=n(5697),l=n.n(i),s=1073741823,c="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};function u(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=a.createContext||function(e,t){var n,o,i="__create-react-context-"+function(){var e="__global_unique_id__";return c[e]=(c[e]||0)+1}()+"__",d=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=u(t.props.value),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):s,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.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 a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?s:t},a.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?s:e},a.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},a.getValue=function(){return this.context[i]?this.context[i].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return f.contextTypes=((o={})[i]=l().object,o),{Provider:d,Consumer:f}};const f=d;var p=n(2177),m=n(7462),h=n(4779),g=n.n(h),b=(n(9864),n(3366)),v=(n(8679),function(e){var t=f();return t.displayName=e,t}),y=v("Router-History"),w=v("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 a.createElement(w.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var E={},S=0;function x(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,c=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 a=[],o={regexp:g()(e,a,t),keys:a};return S<1e4&&(r[e]=o,S++),o}(n,{end:o,strict:l,sensitive:c}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var u=s[0],d=s.slice(1),f=e===u;return o&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var C=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.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?x(n.pathname,e.props):t.match,o=(0,m.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,s=i.component,c=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(w.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:s?a.createElement(s,o):c?c(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function T(e){return"/"===e.charAt(0)?e:"/"+e}function _(e,t){if(!e)return t;var n=T(e);return 0!==t.pathname.indexOf(n)?t:(0,m.Z)({},t,{pathname:t.pathname.substr(n.length)})}function A(e){return"string"==typeof e?e:(0,o.Ep)(e)}function L(e){return function(){(0,p.Z)(!1)}}function R(){}a.Component;var N=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(w.Consumer,null,(function(t){t||(0,p.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?x(o.pathname,(0,m.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var P=a.useContext;function O(){return P(y)}function I(){return P(w).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var c=60115,u=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=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"),c=d("react.memo"),u=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 b(){}function v(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")},b.prototype=g.prototype;var y=v.prototype=new b;y.constructor=v,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,o={},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)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var c=Array(s),u=0;u<s;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var C=/\/+/g;function T(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 _(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 a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+T(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(C,"$&/")+"/"),_(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,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(C,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var c=0;c<e.length;c++){var u=r+T(l=e[c],c);s+=_(l,t,n,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(l=e.next()).done;)s+=_(l=l.value,t,n,u=r+T(l,c++),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 A(e,t,n){if(null==e)return e;var r=[],a=0;return _(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(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 R={current:null};function N(){var e=R.current;if(null===e)throw Error(p(321));return e}var P={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=P,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=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 c=e.type.defaultProps;for(u in t)k.call(t,u)&&!E.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];o.children=c}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_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=x,t.lazy=function(e){return{$$typeof:u,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:c,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().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,a,o;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 c=null,u=null,d=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==c?setTimeout(n,0,e):(c=e,setTimeout(d,0))},r=function(e,t){u=setTimeout(e,t)},a=function(){clearTimeout(u)},t.unstable_shouldYield=function(){return!1},o=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,b=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=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"):v=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+v;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){b=f((function(){e(t.unstable_now())}),n)},a=function(){p(b),b=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<C(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>C(i,n))void 0!==s&&0>C(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>C(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function C(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var T=[],_=[],A=1,L=null,R=3,N=!1,P=!1,O=!1;function I(e){for(var t=S(_);null!==t;){if(null===t.callback)x(_);else{if(!(t.startTime<=e))break;x(_),t.sortIndex=t.expirationTime,E(T,t)}t=S(_)}}function D(e){if(O=!1,I(e),!P)if(null!==S(T))P=!0,n(M);else{var t=S(_);null!==t&&r(D,t.startTime-e)}}function M(e,n){P=!1,O&&(O=!1,a()),N=!0;var o=R;try{for(I(n),L=S(T);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,R=L.priorityLevel;var l=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===S(T)&&x(T),I(n)}else x(T);L=S(T)}if(null!==L)var s=!0;else{var c=S(_);null!==c&&r(D,c.startTime-n),s=!1}return s}finally{L=null,R=o,N=!1}}var F=o;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(){P||N||(P=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return R},t.unstable_getFirstCallbackNode=function(){return S(T)},t.unstable_next=function(e){switch(R){case 1:case 2:case 3:var t=3;break;default:t=R}var n=R;R=t;try{return e()}finally{R=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=R;R=e;try{return t()}finally{R=n}},t.unstable_scheduleCallback=function(e,o,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:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(_,e),null===S(T)&&e===S(_)&&(O?a():O=!0,r(D,i-l))):(e.sortIndex=s,E(T,e),P||N||(P=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=R;return function(){var n=R;R=t;try{return e.apply(this,arguments)}finally{R=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var c=o[s];if(!l(c))return!1;var u=e[c],d=t[c];if(!1===(a=n?n.call(r,u,d,c):void 0)||void 0===a&&u!==d)return!1}return!0}},2177:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r="Invariant failed";function a(e,t){if(!e)throw new Error(r)}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,u=r[1];return l((function(){a.value=n,a.getSnapshot=t,c(a)&&u({inst:a})}),[e,n,t]),i((function(){return c(a)&&u({inst:a}),e((function(){c(a)&&u({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},1688:(e,t,n)=>{"use strict";e.exports=n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Cogment",tagline:"Innovative open source AI platform developed by AI Redefined, designed to leverage the advent of AI to benefit humankind through human-AI collaboration.",url:"https://cogment.ai",baseUrl:"/",trailingSlash:!1,onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.png",organizationName:"cogment",projectName:"cogment-doc",deploymentBranch:"gh-pages",presets:[["classic",{docs:{sidebarPath:"/builds/ai-r/cogment/cogment-doc/sidebars.js",showLastUpdateTime:!0},blog:!1,theme:{customCss:["/builds/ai-r/cogment/cogment-doc/src/css/custom.css"]},pages:{path:"src/pages"},sitemap:{},googleAnalytics:{trackingID:"UA-146998765-2",anonymizeIP:!0}}]],themes:[],themeConfig:{image:"img/cogment_logo_meta.png",colorMode:{defaultMode:"light",disableSwitch:!0,respectPrefersColorScheme:!1},navbar:{logo:{alt:"Cogment",src:"img/cogment_logo.svg"},items:[{type:"doc",docId:"index",position:"right",label:"Documentation"},{position:"right",label:"Cogment Verse",to:"cogment_verse"},{href:"https://github.com/cogment",label:"GitHub",position:"right"},{type:"doc",docId:"community-channels",label:"Community",position:"right"}],hideOnScroll:!1},footer:{links:[{title:"Documentation",items:[{label:"Overview",to:"/docs"},{label:"Core concepts",to:"/docs/guide/core-concepts"},{label:"Development guide",to:"/docs/guide/development-guide"},{label:"CLI reference",to:"/docs/reference/cli"},{label:"Python SDK reference",to:"/docs/reference/python"},{label:"Javascript SDK reference",to:"/docs/reference/javascript"}]},{title:"Community",items:[{label:"Github",href:"https://github.com/cogment"},{label:"Discord",href:"https://discord.com/invite/QDxb9Fweqr"},{label:"Twitter",href:"https://twitter.com/AI_Redefined"},{label:"LinkedIn",href:"https://www.linkedin.com/company/ai-r"},{label:"Facebook",href:"https://www.facebook.com/AIRedefined/"}]},{title:"AI Redefined",items:[{label:"Homepage",href:"https://ai-r.com/"},{label:"Solutions",href:"https://ai-r.com/solutions/"},{label:"About AIR",href:"https://ai-r.com/about-air/"},{label:"News",href:"https://ai-r.com/news/"},{label:"Contact",href:"https://ai-r.com/contact/"}]}],copyright:"Copyright \xa9 2023 AI Redefined Inc.",style:"light"},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"}}]},algolia:{appId:"L5URPTBK9E",apiKey:"a47b82547b2b987f6e4c501900ddcf6e",indexName:"cogment",contextualSearch:!0,searchParameters:{},searchPagePath:"search"},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",path:"i18n",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!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 a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/cogment_verse-238":{"__comp":"8ba33b25","__context":{"plugin":"c0fe6564"},"config":"5e9f5e1a"},"/search-b08":{"__comp":"1a4e3797","__context":{"plugin":"1d042041"}},"/docs-390":{"__comp":"1be78505","__context":{"plugin":"be6d912d"},"versionMetadata":"935f2afb"},"/docs-f31":{"__comp":"17896441","content":"c377a04b"},"/docs/community-channels-fe1":{"__comp":"17896441","content":"9b35c4f5"},"/docs/guide/core-concepts-4f9":{"__comp":"17896441","content":"9b824c8f"},"/docs/guide/development-guide-213":{"__comp":"17896441","content":"354f5e12"},"/docs/guide/implementation-recipes-3dc":{"__comp":"17896441","content":"6c6cf206"},"/docs/guide/implementation-recipes/configure-trial-from-controller-6e2":{"__comp":"17896441","content":"f012f959"},"/docs/guide/implementation-recipes/v2-migration-guide-024":{"__comp":"17896441","content":"fd5e6f38"},"/docs/guide/tutorial-4db":{"__comp":"17896441","content":"4f085710"},"/docs/guide/tutorial/actors-in-cogment-ffe":{"__comp":"17896441","content":"80b5be58"},"/docs/guide/tutorial/advanced-tutorials-c3b":{"__comp":"17896441","content":"6f2832ad"},"/docs/guide/tutorial/advanced-tutorials/directory-162":{"__comp":"17896441","content":"76d0d1d8"},"/docs/guide/tutorial/advanced-tutorials/human-player-34b":{"__comp":"17896441","content":"d9378b29"},"/docs/guide/tutorial/advanced-tutorials/web-client-878":{"__comp":"17896441","content":"1b039142"},"/docs/guide/tutorial/decision-making-f36":{"__comp":"17896441","content":"c24ec994"},"/docs/guide/tutorial/environment-in-cogment-bea":{"__comp":"17896441","content":"e848be99"},"/docs/guide/tutorial/setup-a29":{"__comp":"17896441","content":"85f318fb"},"/docs/license-f2d":{"__comp":"17896441","content":"ac5280f2"},"/docs/reference/cli-59e":{"__comp":"17896441","content":"c3c15305"},"/docs/reference/cli/directory/directory-client-4f4":{"__comp":"17896441","content":"710eddd2"},"/docs/reference/cli/directory/directory-server-705":{"__comp":"17896441","content":"50751b0a"},"/docs/reference/cli/launch-548":{"__comp":"17896441","content":"8f68e2ce"},"/docs/reference/cli/model-registry-16c":{"__comp":"17896441","content":"a57d321a"},"/docs/reference/cli/orchestrator-962":{"__comp":"17896441","content":"14f1d27f"},"/docs/reference/cli/status-77f":{"__comp":"17896441","content":"3f8274eb"},"/docs/reference/cli/trial-datastore/trial-datastore-client-255":{"__comp":"17896441","content":"b2327a6c"},"/docs/reference/cli/trial-datastore/trial-datastore-server-436":{"__comp":"17896441","content":"696a412b"},"/docs/reference/cli/web-proxy-f0b":{"__comp":"17896441","content":"d03751be"},"/docs/reference/cogment-v2-changes-452":{"__comp":"17896441","content":"92a77eef"},"/docs/reference/cogment-yaml-d31":{"__comp":"17896441","content":"7a87d372"},"/docs/reference/grpc-407":{"__comp":"17896441","content":"d04964af"},"/docs/reference/javascript-4e0":{"__comp":"17896441","content":"8f51b104"},"/docs/reference/parameters-f82":{"__comp":"17896441","content":"08714d8c"},"/docs/reference/python-d04":{"__comp":"17896441","content":"2d986b69"},"/docs/reference/python-enterprise/installation-3b7":{"__comp":"17896441","content":"25848ff4"},"/docs/reference/python-enterprise/runner-277":{"__comp":"17896441","content":"61fcde8c"},"/-7f6":{"__comp":"c4f5d8e4","__context":{"plugin":"c0fe6564"},"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.eb9a3de3.js.LICENSE.txt b/assets/js/main.cd67fb39.js.LICENSE.txt similarity index 62% rename from assets/js/main.eb9a3de3.js.LICENSE.txt rename to assets/js/main.cd67fb39.js.LICENSE.txt index 2c82639..eb75d69 100644 --- a/assets/js/main.eb9a3de3.js.LICENSE.txt +++ b/assets/js/main.cd67fb39.js.LICENSE.txt @@ -7,62 +7,6 @@ object-assign /* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress * @license MIT */ -/*! - * lunr.Builder - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.Set - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.TokenSet - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.Vector - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.stemmer - * Copyright (C) 2020 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ - -/*! - * lunr.stopWordFilter - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.tokenizer - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.trimmer - * Copyright (C) 2020 Oliver Nightingale - */ - -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */ - /** * @license React * use-sync-external-store-shim.production.min.js @@ -82,12 +26,6 @@ object-assign * @public */ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ - /** @license React v0.20.2 * scheduler.production.min.js * diff --git a/assets/js/main.eb9a3de3.js b/assets/js/main.eb9a3de3.js deleted file mode 100644 index f163e1e..0000000 --- a/assets/js/main.eb9a3de3.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.eb9a3de3.js.LICENSE.txt */ -(self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"08714d8c":[()=>n.e(3922).then(n.bind(n,1597)),"@site/docs/reference/parameters.md",1597],"14f1d27f":[()=>n.e(931).then(n.bind(n,8804)),"@site/docs/reference/cli/orchestrator.md",8804],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,8246)),"@theme/DocItem",8246],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,2027)),"@theme/SearchPage",2027],"1b039142":[()=>n.e(2147).then(n.bind(n,9615)),"@site/docs/guide/tutorial/advanced-tutorials/7-web-client.md",9615],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"25848ff4":[()=>n.e(8403).then(n.bind(n,3349)),"@site/docs/reference/python-enterprise/installation.md",3349],"2d986b69":[()=>n.e(8769).then(n.bind(n,5161)),"@site/docs/reference/python.md",5161],"354f5e12":[()=>Promise.all([n.e(532),n.e(9071)]).then(n.bind(n,3056)),"@site/docs/guide/development-guide.mdx",3056],"3f8274eb":[()=>n.e(9690).then(n.bind(n,555)),"@site/docs/reference/cli/status.md",555],"4f085710":[()=>n.e(9921).then(n.bind(n,9967)),"@site/docs/guide/tutorial/index.md",9967],"50751b0a":[()=>n.e(8687).then(n.bind(n,9772)),"@site/docs/reference/cli/directory/directory-server.md",9772],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"61fcde8c":[()=>n.e(5171).then(n.bind(n,1975)),"@site/docs/reference/python-enterprise/runner.md",1975],"696a412b":[()=>n.e(928).then(n.bind(n,7113)),"@site/docs/reference/cli/trial-datastore/trial-datastore-server.md",7113],"6c6cf206":[()=>n.e(966).then(n.bind(n,1291)),"@site/docs/guide/implementation-recipes/index.md",1291],"6f2832ad":[()=>n.e(5307).then(n.bind(n,6421)),"@site/docs/guide/tutorial/advanced-tutorials/index.md",6421],"710eddd2":[()=>n.e(7221).then(n.bind(n,1167)),"@site/docs/reference/cli/directory/directory-client.md",1167],"76d0d1d8":[()=>n.e(1257).then(n.bind(n,8113)),"@site/docs/guide/tutorial/advanced-tutorials/8-directory.md",8113],"7a87d372":[()=>n.e(3953).then(n.bind(n,3031)),"@site/docs/reference/cogment-yaml.md",3031],"80b5be58":[()=>n.e(1028).then(n.bind(n,2383)),"@site/docs/guide/tutorial/2-actors-in-cogment.md",2383],"85f318fb":[()=>n.e(4896).then(n.bind(n,2781)),"@site/docs/guide/tutorial/1-setup.md",2781],"8ba33b25":[()=>Promise.all([n.e(532),n.e(4698),n.e(9985)]).then(n.bind(n,2900)),"@site/src/pages/cogment_verse/index.js",2900],"8f51b104":[()=>n.e(7330).then(n.bind(n,8009)),"@site/docs/reference/javascript.md",8009],"8f68e2ce":[()=>n.e(5089).then(n.bind(n,5432)),"@site/docs/reference/cli/launch.md",5432],"92a77eef":[()=>n.e(5505).then(n.bind(n,9214)),"@site/docs/reference/cogment-v2-changes.md",9214],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9b35c4f5":[()=>n.e(9255).then(n.bind(n,562)),"@site/docs/community-channels.md",562],"9b824c8f":[()=>n.e(2880).then(n.bind(n,2406)),"@site/docs/guide/core-concepts.md",2406],a57d321a:[()=>n.e(916).then(n.bind(n,5676)),"@site/docs/reference/cli/model-registry.md",5676],ac5280f2:[()=>n.e(8529).then(n.bind(n,5687)),"@site/docs/license.md",5687],b2327a6c:[()=>n.e(1909).then(n.bind(n,251)),"@site/docs/reference/cli/trial-datastore/trial-datastore-client.md",251],be6d912d:[()=>n.e(7107).then(n.t.bind(n,3769,19)),"/builds/ai-r/cogment/cogment-doc/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],c0fe6564:[()=>n.e(5649).then(n.t.bind(n,5745,19)),"/builds/ai-r/cogment/cogment-doc/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],c24ec994:[()=>n.e(5519).then(n.bind(n,4985)),"@site/docs/guide/tutorial/4-decision-making.md",4985],c377a04b:[()=>n.e(6971).then(n.bind(n,1269)),"@site/docs/index.md",1269],c3c15305:[()=>n.e(1043).then(n.bind(n,3706)),"@site/docs/reference/cli/index.md",3706],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4698),n.e(4195)]).then(n.bind(n,4825)),"@site/src/pages/index.js",4825],d03751be:[()=>n.e(1455).then(n.bind(n,9262)),"@site/docs/reference/cli/web-proxy.md",9262],d04964af:[()=>n.e(5893).then(n.bind(n,6111)),"@site/docs/reference/grpc.md",6111],d9378b29:[()=>n.e(4007).then(n.bind(n,4489)),"@site/docs/guide/tutorial/advanced-tutorials/6-human-player.md",4489],e848be99:[()=>n.e(8172).then(n.bind(n,9208)),"@site/docs/guide/tutorial/3-environment-in-cogment.md",9208],ea8ad98b:[()=>n.e(5219).then(n.t.bind(n,2776,19)),"/builds/ai-r/cogment/cogment-doc/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],f012f959:[()=>n.e(2229).then(n.bind(n,4352)),"@site/docs/guide/implementation-recipes/configure-trial-from-controller.md",4352],fd5e6f38:[()=>n.e(3106).then(n.bind(n,845)),"@site/docs/guide/implementation-recipes/v2-migration-guide.md",845]};function u(e){let{error:t,retry:n,pastDelay:a}=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"))):a?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 o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(o);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(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)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 a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));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,a.Z)({},i,n)))}})}const p=[{path:"/cogment_verse",component:f("/cogment_verse","238"),exact:!0},{path:"/search",component:f("/search","6f9"),exact:!0},{path:"/docs",component:f("/docs","390"),routes:[{path:"/docs",component:f("/docs","f31"),exact:!0,sidebar:"docSidebar"},{path:"/docs/community-channels",component:f("/docs/community-channels","fe1"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/core-concepts",component:f("/docs/guide/core-concepts","4f9"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/development-guide",component:f("/docs/guide/development-guide","213"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/implementation-recipes",component:f("/docs/guide/implementation-recipes","3dc"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/implementation-recipes/configure-trial-from-controller",component:f("/docs/guide/implementation-recipes/configure-trial-from-controller","6e2"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/implementation-recipes/v2-migration-guide",component:f("/docs/guide/implementation-recipes/v2-migration-guide","024"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial",component:f("/docs/guide/tutorial","4db"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/actors-in-cogment",component:f("/docs/guide/tutorial/actors-in-cogment","ffe"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials",component:f("/docs/guide/tutorial/advanced-tutorials","c3b"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials/directory",component:f("/docs/guide/tutorial/advanced-tutorials/directory","162"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials/human-player",component:f("/docs/guide/tutorial/advanced-tutorials/human-player","34b"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/advanced-tutorials/web-client",component:f("/docs/guide/tutorial/advanced-tutorials/web-client","878"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/decision-making",component:f("/docs/guide/tutorial/decision-making","f36"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/environment-in-cogment",component:f("/docs/guide/tutorial/environment-in-cogment","bea"),exact:!0,sidebar:"docSidebar"},{path:"/docs/guide/tutorial/setup",component:f("/docs/guide/tutorial/setup","a29"),exact:!0,sidebar:"docSidebar"},{path:"/docs/license",component:f("/docs/license","f2d"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli",component:f("/docs/reference/cli","59e"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/directory/directory-client",component:f("/docs/reference/cli/directory/directory-client","4f4"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/directory/directory-server",component:f("/docs/reference/cli/directory/directory-server","705"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/launch",component:f("/docs/reference/cli/launch","548"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/model-registry",component:f("/docs/reference/cli/model-registry","16c"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/orchestrator",component:f("/docs/reference/cli/orchestrator","962"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/status",component:f("/docs/reference/cli/status","77f"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/trial-datastore/trial-datastore-client",component:f("/docs/reference/cli/trial-datastore/trial-datastore-client","255"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/trial-datastore/trial-datastore-server",component:f("/docs/reference/cli/trial-datastore/trial-datastore-server","436"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cli/web-proxy",component:f("/docs/reference/cli/web-proxy","f0b"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cogment-v2-changes",component:f("/docs/reference/cogment-v2-changes","452"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/cogment-yaml",component:f("/docs/reference/cogment-yaml","d31"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/grpc",component:f("/docs/reference/grpc","407"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/javascript",component:f("/docs/reference/javascript","4e0"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/parameters",component:f("/docs/reference/parameters","f82"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/python",component:f("/docs/reference/python","d04"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/python-enterprise/installation",component:f("/docs/reference/python-enterprise/installation","3b7"),exact:!0,sidebar:"docSidebar"},{path:"/docs/reference/python-enterprise/runner",component:f("/docs/reference/python-enterprise/runner","277"),exact:!0,sidebar:"docSidebar"}]},{path:"/",component:f("/","7f6"),exact:!0},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(4367),n(2497),n(3310),n(8320),n(2295)];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:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e}}=(0,h.Z)(),{pathname:t}=(0,c.TH)();return e+(0,g.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function _(){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(x,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 C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),R=n(8940);function A(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 a=s.map((t=>{var r;const a=(null==(r=t.default)?void 0:r[e])??t[e];return null==a?void 0:a(...n)}));return()=>a.forEach((e=>null==e?void 0:e()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);null==t||t.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),A("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(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{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?A("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=A("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(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(P,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const I=N,D="docusaurus-base-url-issue-banner-container",M="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function j(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\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="${M}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${M}');\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[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,j(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 $(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];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 U=n(4763);function q(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(U.Z,null,r.createElement(R.M,null,r.createElement(L.t,null,r.createElement(f,null,r.createElement($,null),r.createElement(_,null),r.createElement(z,null),r.createElement(I,{location:T(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 a=document.createElement("link");a.setAttribute("rel","prefetch"),a.setAttribute("href",e),a.onload=()=>t(),a.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??(null==(r=document.getElementsByName("script")[0])?void 0:r.parentNode);null==o||o.appendChild(a)}))}: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),O(e))},Y=Object.freeze(K);if(l.Z.canUseDOM){window.docusaurus=Y;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.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),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"index","docs":[{"id":"community-channels","path":"/docs/community-channels","sidebar":"docSidebar"},{"id":"guide/core-concepts","path":"/docs/guide/core-concepts","sidebar":"docSidebar"},{"id":"guide/development-guide","path":"/docs/guide/development-guide","sidebar":"docSidebar"},{"id":"guide/implementation-recipes/configure-trial-from-controller","path":"/docs/guide/implementation-recipes/configure-trial-from-controller","sidebar":"docSidebar"},{"id":"guide/implementation-recipes/index","path":"/docs/guide/implementation-recipes/","sidebar":"docSidebar"},{"id":"guide/implementation-recipes/v2-migration-guide","path":"/docs/guide/implementation-recipes/v2-migration-guide","sidebar":"docSidebar"},{"id":"guide/tutorial/actors-in-cogment","path":"/docs/guide/tutorial/actors-in-cogment","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/directory","path":"/docs/guide/tutorial/advanced-tutorials/directory","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/human-player","path":"/docs/guide/tutorial/advanced-tutorials/human-player","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/index","path":"/docs/guide/tutorial/advanced-tutorials/","sidebar":"docSidebar"},{"id":"guide/tutorial/advanced-tutorials/web-client","path":"/docs/guide/tutorial/advanced-tutorials/web-client","sidebar":"docSidebar"},{"id":"guide/tutorial/decision-making","path":"/docs/guide/tutorial/decision-making","sidebar":"docSidebar"},{"id":"guide/tutorial/environment-in-cogment","path":"/docs/guide/tutorial/environment-in-cogment","sidebar":"docSidebar"},{"id":"guide/tutorial/index","path":"/docs/guide/tutorial/","sidebar":"docSidebar"},{"id":"guide/tutorial/setup","path":"/docs/guide/tutorial/setup","sidebar":"docSidebar"},{"id":"index","path":"/docs/","sidebar":"docSidebar"},{"id":"license","path":"/docs/license","sidebar":"docSidebar"},{"id":"reference/cli/directory/directory-client","path":"/docs/reference/cli/directory/directory-client","sidebar":"docSidebar"},{"id":"reference/cli/directory/directory-server","path":"/docs/reference/cli/directory/directory-server","sidebar":"docSidebar"},{"id":"reference/cli/index","path":"/docs/reference/cli/","sidebar":"docSidebar"},{"id":"reference/cli/launch","path":"/docs/reference/cli/launch","sidebar":"docSidebar"},{"id":"reference/cli/model-registry","path":"/docs/reference/cli/model-registry","sidebar":"docSidebar"},{"id":"reference/cli/orchestrator","path":"/docs/reference/cli/orchestrator","sidebar":"docSidebar"},{"id":"reference/cli/status","path":"/docs/reference/cli/status","sidebar":"docSidebar"},{"id":"reference/cli/trial-datastore/trial-datastore-client","path":"/docs/reference/cli/trial-datastore/trial-datastore-client","sidebar":"docSidebar"},{"id":"reference/cli/trial-datastore/trial-datastore-server","path":"/docs/reference/cli/trial-datastore/trial-datastore-server","sidebar":"docSidebar"},{"id":"reference/cli/web-proxy","path":"/docs/reference/cli/web-proxy","sidebar":"docSidebar"},{"id":"reference/cogment-v2-changes","path":"/docs/reference/cogment-v2-changes","sidebar":"docSidebar"},{"id":"reference/cogment-yaml","path":"/docs/reference/cogment-yaml","sidebar":"docSidebar"},{"id":"reference/grpc","path":"/docs/reference/grpc","sidebar":"docSidebar"},{"id":"reference/javascript","path":"/docs/reference/javascript","sidebar":"docSidebar"},{"id":"reference/parameters","path":"/docs/reference/parameters","sidebar":"docSidebar"},{"id":"reference/python","path":"/docs/reference/python","sidebar":"docSidebar"},{"id":"reference/python-enterprise/installation","path":"/docs/reference/python-enterprise/installation","sidebar":"docSidebar"},{"id":"reference/python-enterprise/runner","path":"/docs/reference/python-enterprise/runner","sidebar":"docSidebar"}],"draftIds":[],"sidebars":{"docSidebar":{"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.4.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.0"},"docusaurus-plugin-google-analytics":{"type":"package","name":"@docusaurus/plugin-google-analytics","version":"2.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.0"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.28.0"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,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:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(179);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.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??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={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:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.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,a.useContext)(c),x=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>x.current));const _=p||m;const C=(0,s.Z)(_),T=null==_?void 0:_.replace("pathname://","");let L=void 0!==T?(R=T,b&&(e=>e.startsWith("/"))(R)?E(R):R):void 0;var R;L&&C&&(L=(0,i.applyTrailingSlash)(L,{trailingSlash:w,baseUrl:k}));const A=(0,a.useRef)(!1),P=f?o.OL:o.rU,O=u.Z.canUseIntersectionObserver,N=(0,a.useRef)(),I=()=>{A.current||null==L||(window.docusaurus.preload(L),A.current=!0)};(0,a.useEffect)((()=>(!O&&C&&null!=L&&window.docusaurus.prefetch(L),()=>{O&&N.current&&N.current.disconnect()})),[N,L,O,C]);const D=(null==(n=L)?void 0:n.startsWith("#"))??!1,M=!L||!C||D;return M||v||S.collectLink(L),M?a.createElement("a",(0,r.Z)({ref:x,href:L},_&&!C&&{target:"_blank",rel:"noopener noreferrer"},y)):a.createElement(P,(0,r.Z)({},y,{onMouseEnter:I,onTouchStart:I,innerRef:e=>{x.current=e,O&&e&&C&&(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!=L&&window.docusaurus.prefetch(L))}))})),N.current.observe(e))},to:L},f&&{isActive:g,activeClassName:h}))}const p=a.forwardRef(f)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(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 o=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 o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=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,a(l,o))}},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 a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((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)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},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[a,o]=n;const i=r?`${r}.${a}`:a;var l;"object"==typeof(l=o)&&l&&Object.keys(l).length>0?e(o,i):t[i]=o}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),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:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>f,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>p});var r=n(6775),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=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})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&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 o}(t,n,e)}function p(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4367:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||(window.ga("set","page",t.pathname+t.search+t.hash),window.ga("send","pageview"))}}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.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:()=>o});var r=n(7294);const a="iconExternalLink_nPIU";function o(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:a},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"}))}},179:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Yt});var r=n(7294),a=n(6010),o=n(4763),i=n(7462),l=n(6775),s=n(5999),u=n(5936);const c="docusaurus_skipToContent_fallback";function d(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(c);t&&d(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&d(e.current)})),{containerRef:e,onClick:n}}const p=(0,s.I)({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",message:"Skip to main content"});function m(e){const t=e.children??p,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":p},r.createElement("a",(0,i.Z)({},e,{href:`#${c}`,onClick:a}),t))}var h=n(1944),g=n(5281),v=n(9727);const b="skipToContent_fXgn";function y(){return r.createElement(m,{className:b})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:l,...s}=e;return r.createElement("svg",(0,i.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S="closeButton_CVFx";function x(e){return r.createElement("button",(0,i.Z)({type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const _="content_knG7";function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,i.Z)({},e,{className:(0,a.Z)(_,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T="announcementBar_mb4j",L="announcementBarPlaceholder_vyr4",R="announcementBarClose_gvF7",A="announcementBarContent_xLdY";function P(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:L}),r.createElement(C,{className:A}),i&&r.createElement(x,{onClick:n,className:R}))}var O=n(3163),N=n(2466);var I=n(902),D=n(3102);const M=r.createContext(null);function F(e){let{children:t}=e;const n=function(){const e=(0,O.e)(),t=(0,D.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,I.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(M.Provider,{value:n},t)}function j(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function B(){const e=(0,r.useContext)(M);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,D.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:j(o)})),[a,o,t])}function z(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=B();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.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"},o)))}var $=n(2949),U=n(2389);function q(e){return r.createElement("svg",(0,i.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 H(e){return r.createElement("svg",(0,i.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 G={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function Q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,U.Z)(),u=(0,s.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"===o?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(G.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",G.toggleButton,!l&&G.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:u,"aria-label":u,"aria-live":"polite"},r.createElement(q,{className:(0,a.Z)(G.toggleIcon,G.lightToggleIcon)}),r.createElement(H,{className:(0,a.Z)(G.toggleIcon,G.darkToggleIcon)})))}const Z=r.memo(Q),V="darkNavbarColorModeToggle_X3D1";function W(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,$.I)();return a?null:r.createElement(Z,{className:t,buttonClassName:"dark"===n?V:void 0,value:o,onChange:i})}var K=n(1327);function Y(){return r.createElement(K.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){const e=(0,O.e)();return r.createElement("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function J(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Y,null),r.createElement(W,{className:"margin-right--md"}),r.createElement(X,null))}var ee=n(9960),te=n(4996),ne=n(3919);function re(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ae=n(9471);function oe(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:l,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,te.Z)(a),p=(0,te.Z)(t),m=(0,te.Z)(o,{forcePrependBaseUrl:!0}),h=l&&o&&!(0,ne.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,l,h&&r.createElement(ae.Z,u&&{width:12,height:12}))};return o?r.createElement(ee.Z,(0,i.Z)({href:c?m:o},d,g)):r.createElement(ee.Z,(0,i.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?re(n,t.pathname):t.pathname.startsWith(p)},d,g))}function ie(e){let{className:t,isDropdownItem:n=!1,...o}=e;const l=r.createElement(oe,(0,i.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,l):l}function le(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(oe,(0,i.Z)({className:(0,a.Z)("menu__link",t)},o)))}function se(e){let{mobile:t=!1,position:n,...a}=e;const o=t?le:ie;return r.createElement(o,(0,i.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ue=n(6043),ce=n(8596),de=n(2263);function fe(e,t){return e.some((e=>function(e,t){return!!(0,ce.Mg)(e.to,t)||!!re(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function pe(e){let{items:t,position:n,className:o,onClick:l,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(oe,(0,i.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(ct,(0,i.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function me(e){let{items:t,className:n,position:o,onClick:s,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,de.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=fe(t,c),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ue.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(oe,(0,i.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ue.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(ct,(0,i.Z)({mobile:!0,isDropdownItem:!0,onClick:s,activeClassName:"menu__link--active"},e,{key:t}))))))}function he(e){let{mobile:t=!1,...n}=e;const a=t?me:pe;return r.createElement(a,n)}var ge=n(4711);function ve(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),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 be="iconLanguage_nlXk";var ye=n(1029),we=n(412),ke=n(373),Ee=n(143),Se=n(22),xe=n(8202),_e=n(3926),Ce=n(1073),Te=n(2539),Le=n(726);const Re="searchBar_RVTs",Ae="dropdownMenu_qbY6",Pe="suggestion_fB_2",Oe="cursor_eG29",Ne="hitTree_kk6K",Ie="hitIcon_a7Zy",De="hitPath_ieM4",Me="noResultsIcon_EBY5",Fe="hitFooter_E9YW",je="hitWrapper_sAK8",Be="hitTitle_vyVt",ze="hitAction_NqkB",$e="noResults_l6Q3",Ue="searchBarContainer_NW3z",qe="searchBarLoadingRing_YnHq",He="searchClearButton_qk4g",Ge="searchIndexLoading_EJ1f",Qe="searchHintContainer_Pkmr",Ze="searchHint_iIMx",Ve="input_FOTf",We="hint_URu1",Ke="suggestions_X8XU",Ye="dataset_QiCy",Xe="empty_eITn";function Je(e){let{document:t,type:n,page:r,metadata:a,tokens:o,isInterOfTree:i,isLastOfTree:l}=e;const s=0===n,u=1===n,c=[];i?c.push('<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v42M20 27H8.3"></path></g></svg>'):l&&c.push('<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v21M20 27H8.3"></path></g></svg>');const d=c.map((e=>`<span class="${Ne}">${e}</span>`)),f=`<span class="${Ie}">${s?'<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>':u?'<svg width="20" height="20" viewBox="0 0 20 20"><path d="M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>':'<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 5H3h14zm0 5H3h14zm0 5H3h14z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>'}</span>`,p=[`<span class="${Be}">${(0,Le.o)(t.t,(0,Ce.m)(a,"t"),o)}</span>`];if(!i&&!l&&ye.H6){const e=r?(r.b??[]).concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;p.push(`<span class="${De}">${(0,_e.e)(e??[])}</span>`)}else s||p.push(`<span class="${De}">${(0,Te.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),o)}</span>`);const m=`<span class="${ze}"><svg width="20" height="20" viewBox="0 0 20 20"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3v4c0 2-2 4-4 4H2"></path><path d="M8 17l-6-6 6-6"></path></g></svg></span>`;return[...d,f,`<span class="${je}">`,...p,"</span>",m].join("")}function et(){return`<span class="${$e}"><span class="${Me}"><svg width="40" height="40" viewBox="0 0 20 20" fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"></path></svg></span><span>${(0,s.I)({id:"theme.SearchBar.noResultsText",message:"No results"})}</span></span>`}var tt=n(311);async function nt(){const e=await Promise.all([n.e(8443),n.e(5525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const rt="_highlight";const at=function(e){var t;let{handleSearchBarToggle:n}=e;const{siteConfig:{baseUrl:o}}=(0,de.Z)(),i=(0,Ee.gA)();let u=o;const{preferredVersion:c}=(0,ke.J)(null==i?void 0:i.pluginId);c&&!c.isLast&&(u=c.path+"/");const d=(0,l.k6)(),f=(0,l.TH)(),p=(0,r.useRef)(null),m=(0,r.useRef)("empty"),h=(0,r.useRef)(!1),[g,v]=(0,r.useState)(!1),[b,y]=(0,r.useState)(!1),[w,k]=(0,r.useState)(""),E=(0,r.useRef)(null),S=(0,r.useCallback)((async()=>{if("empty"!==m.current)return;m.current="loading",v(!0);const[{wrappedIndexes:e,zhDictionary:t},n]=await Promise.all([(0,Se.w)(u),nt()]);if(E.current=n(p.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:Re,noPrefix:!0,dropdownMenu:Ae,input:Ve,hint:We,suggestions:Ke,suggestion:Pe,cursor:Oe,dataset:Ye,empty:Xe}},[{source:(0,xe.v)(e,t,ye.qo),templates:{suggestion:Je,empty:et,footer:e=>{let{query:t,isEmpty:n}=e;if(n)return;const r=document.createElement("a"),a=`${o}search?q=${encodeURIComponent(t)}`;r.href=a,r.textContent=(0,s.I)({id:"theme.SearchBar.seeAll",message:"See all results"}),r.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),E.current.autocomplete.close(),d.push(a))}));const i=document.createElement("div");return i.className=Fe,i.appendChild(r),i}}}]).on("autocomplete:selected",(function(e,t){var n;let{document:{u:r,h:a},tokens:o}=t;null==(n=p.current)||n.blur();let i=r;if(ye.vc&&o.length>0){const e=new URLSearchParams;for(const t of o)e.append(rt,t);i+=`?${e.toString()}`}a&&(i+=a),d.push(i)})).on("autocomplete:closed",(()=>{var e;null==(e=p.current)||e.blur()})),m.current="done",v(!1),h.current){const e=p.current;e.value&&E.current.autocomplete.open(),e.focus()}}),[o,u,d]);(0,r.useEffect)((()=>{if(!ye.vc)return;const e=we.Z.canUseDOM?new URLSearchParams(f.search).getAll(rt):[];setTimeout((()=>{var t;const n=document.querySelector("article");if(!n)return;const r=new ye.vc(n);r.unmark(),0!==e.length&&r.mark(e),k(e.join(" ")),null==(t=E.current)||t.autocomplete.setVal(e.join(" "))}))}),[f.search,f.pathname]);const x=(0,r.useCallback)((()=>{h.current=!0,S(),null==n||n(!0)}),[n,S]),_=(0,r.useCallback)((()=>{null==n||n(!1)}),[n]),C=(0,r.useCallback)((()=>{S()}),[S]),T=(0,r.useCallback)((e=>{k(e.target.value),e.target.value&&y(!0)}),[]),L=!!we.Z.canUseDOM&&/mac/i.test((null==(t=navigator.userAgentData)?void 0:t.platform)??navigator.platform);(0,r.useEffect)((()=>{function e(e){var t;(L?e.metaKey:e.ctrlKey)&&"KeyK"===e.code&&(e.preventDefault(),null==(t=p.current)||t.focus(),x())}return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[L,x]);const R=(0,r.useCallback)((()=>{var e;const t=new URLSearchParams(f.search);t.delete(rt);const n=t.toString(),r=f.pathname+(""!=n?`?${n}`:"")+f.hash;r!=f.pathname+f.search+f.hash&&d.push(r),k(""),null==(e=E.current)||e.autocomplete.setVal("")}),[f.pathname,f.search,f.hash,d]);return r.createElement("div",{className:(0,a.Z)("navbar__search",Ue,{[Ge]:g&&b})},r.createElement("input",{placeholder:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:C,onFocus:x,onBlur:_,onChange:T,ref:p,value:w}),r.createElement(tt.Z,{className:qe}),""!==w?r.createElement("button",{className:He,onClick:R},"\u2715"):r.createElement("div",{className:Qe},r.createElement("kbd",{className:Ze},L?"\u2318":"ctrl"),r.createElement("kbd",{className:Ze},"K")))},ot="searchBox_ZlJk";function it(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,ot)},t)}var lt=n(3438);const st=e=>e.docs.find((t=>t.id===e.mainDocId));const ut={default:se,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:u,locales:c,localeConfigs:d}}=(0,de.Z)(),f=(0,ge.l)(),{search:p,hash:m}=(0,l.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===u?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[u].label;return r.createElement(he,(0,i.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(ve,{className:be}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(it,{className:n},r.createElement(at,null))},dropdown:he,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:l}=(0,Ee.Iw)(a),s=(0,lt.vY)(t,a);return null===s?null:r.createElement(se,(0,i.Z)({exact:!0},o,{isActive:()=>(null==l?void 0:l.path)===s.path||!(null==l||!l.sidebar)&&l.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:l}=(0,Ee.Iw)(a),s=(0,lt.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(se,(0,i.Z)({exact:!0},o,{isActive:()=>(null==l?void 0:l.sidebar)===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const l=(0,lt.lO)(a)[0],s=t??l.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(l).path;return r.createElement(se,(0,i.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:u,...c}=e;const{search:d,hash:f}=(0,l.TH)(),p=(0,Ee.Iw)(n),m=(0,Ee.gB)(n),{savePreferredVersionName:h}=(0,ke.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??st(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...u],v=(0,lt.lO)(n)[0],b=t&&g.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):v.label,y=t&&g.length>1?void 0:st(v).path;return g.length<=1?r.createElement(se,(0,i.Z)({},c,{mobile:t,label:b,to:y,isActive:a?()=>!1:void 0})):r.createElement(he,(0,i.Z)({},c,{mobile:t,label:b,to:y,items:g,isActive:a?()=>!1:void 0}))}};function ct(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=ut[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function dt(){const e=(0,O.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(ct,(0,i.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function ft(e){return r.createElement("button",(0,i.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(s.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 pt(){const e=0===(0,w.L)().navbar.items.length,t=B();return r.createElement(r.Fragment,null,!e&&r.createElement(ft,{onClick:()=>t.hide()}),t.content)}function mt(){const e=(0,O.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(z,{header:r.createElement(J,null),primaryMenu:r.createElement(dt,null),secondaryMenu:r.createElement(pt,null)}):null}const ht="navbarHideable_m1mJ",gt="navbarHidden_jGov";function vt(e){return r.createElement("div",(0,i.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function bt(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,O.e)(),{navbarRef:l,isNavbarVisible:c}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=null==r?void 0:r.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,u.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[ht,!c&>],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(vt,{onClick:i.toggle}),r.createElement(mt,null))}var yt=n(8780);const wt="errorBoundaryError_a6uf";function kt(e){return r.createElement("button",(0,i.Z)({type:"button"},e),r.createElement(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Et(e){let{error:t}=e;const n=(0,yt.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:wt},n)}class St extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}function xt(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,i.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function _t(){const{toggle:e,shown:t}=(0,O.e)();return r.createElement("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(xt,null))}const Ct="colorModeToggle_DEke";function Tt(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(St,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(ct,e)))))}function Lt(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 Rt(){const e=(0,O.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Lt,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(_t,null),r.createElement(Y,null),r.createElement(Tt,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Tt,{items:a}),r.createElement(W,{className:Ct}),!o&&r.createElement(it,null,r.createElement(at,null)))})}function At(){return r.createElement(bt,null,r.createElement(Rt,null))}function Pt(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:l,...s}=t,u=(0,te.Z)(n),c=(0,te.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(ee.Z,(0,i.Z)({className:"footer__link-item"},a?{href:l?c:a}:{to:u},s),o,a&&!(0,ne.Z)(a)&&r.createElement(ae.Z,null))}function Ot(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(Pt,{item:t}))}function Nt(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(Ot,{key:t,item:e})))))}function It(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Nt,{key:t,column:e}))))}function Dt(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Mt(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Pt,{item:t})}function Ft(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(Mt,{item:e}),t.length!==n+1&&r.createElement(Dt,null))))))}function jt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(It,{columns:t}):r.createElement(Ft,{links:t})}var Bt=n(941);const zt="footerLogoLink_BH7S";function $t(e){let{logo:t}=e;const{withBaseUrl:n}=(0,te.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Bt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function Ut(e){let{logo:t}=e;return t.href?r.createElement(ee.Z,{href:t.href,className:zt,target:t.target},r.createElement($t,{logo:t})):r.createElement($t,{logo:t})}function qt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Ht(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function Gt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(Ht,{style:o,links:n&&n.length>0&&r.createElement(jt,{links:n}),logo:a&&r.createElement(Ut,{logo:a}),copyright:t&&r.createElement(qt,{copyright:t})})}const Qt=r.memo(Gt),Zt=(0,I.Qc)([$.S,k.pl,N.OC,ke.L5,h.VC,function(e){let{children:t}=e;return r.createElement(D.n2,null,r.createElement(O.M,null,r.createElement(F,null,t)))}]);function Vt(e){let{children:t}=e;return r.createElement(Zt,null,t)}function Wt(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(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(kt,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Et,{error:t})))))}const Kt="mainWrapper_z2l0";function Yt(e){const{children:t,noFooter:n,wrapperClassName:i,title:l,description:s}=e;return(0,v.t)(),r.createElement(Vt,null,r.createElement(h.d,{title:l,description:s}),r.createElement(y,null),r.createElement(P,null),r.createElement(At,null),r.createElement("div",{id:c,className:(0,a.Z)(g.k.wrapper.main,Kt,i)},r.createElement(o.Z,{fallback:e=>r.createElement(Wt,e)},t)),!n&&r.createElement(Qt,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=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 o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.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 a.createElement(o.Z,(0,r.Z)({to:m},p,(null==u?void 0:u.target)&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=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 a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,z:()=>h});var r=n(7462),a=n(7294),o=n(412);function i(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}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){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function d(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=function(){const t=e.scrollHeight;return{transition:`height ${(null==r?void 0:r.duration)??c(t)}ms ${(null==r?void 0:r.easing)??"ease-in-out"}`,height:`${t}px`}}();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return u(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(a(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{a()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?l:s}function p(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const c=(0,a.useRef)(null);return d({collapsibleRef:c,collapsed:n,animation:o}),a.createElement(t,{ref:c,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(u(c.current,n),null==i||i(n))},className:l},r)}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(p,(0,r.Z)({},n,{collapsed:l})):null}function h(e){let{lazy:t,...n}=e;const r=t?m:p;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("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,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!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()||o(!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),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d="light",f="dark",p=e=>e===f?f:d;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,i]=(0,r.useState)((e=>a.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:a=!0}=r;t?(i(t),a&&(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(o))}),[o]),(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:o,setColorMode:s,get isDarkTheme(){return o===f},setLightTheme(){s(d)},setDarkTheme(){s(f)}})),[o,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 o.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});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(3438),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},f=(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),p=(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()};const m=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,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 a(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,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(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=o.m);const t=(0,a.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])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(7294),a=n(3102),o=n(7524),i=n(1980),l=n(6668),s=n(902);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.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:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o="desktop",i="mobile",l="ssr";function s(){return a.Z.canUseDOM?window.innerWidth>996?o: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:{}}},3438:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>f,_F:()=>m,cE:()=>d,hI:()=>w,lO:()=>v,oz:()=>b,s1:()=>g,vY:()=>y});var r=n(7294),a=n(6775),o=n(8790),i=n(143),l=n(373),s=n(1116),u=n(7392),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 a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function g(){var e;const t=(0,s.V)(),{pathname:n}=(0,a.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),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,u.j)([t,n,a].filter(Boolean))),[t,n,a])}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(", ")}".\nAvailable 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(`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- ${(0,u.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function w(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},1980:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>l,_X:()=>s});var r=n(7294),a=n(6775),o=n(1688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},7392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(6010),o=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:a,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(o.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}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),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,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r,a;super(),this.name="ReactContextError",this.message=`Hook ${(null==(n=this.stack)||null==(r=n.split("\n")[1])||null==(a=r.match(/at (?:\w+\.)?(?<name>\w+)/))?void 0:a.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),a=n(723),o=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,o.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 a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f});var r=n(7294),a=n(412),o=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=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>null==n.current?void 0:n.current()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.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 a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>null==e.current?void 0:e.current()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c});var r=n(7294),a=n(1688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"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,s||(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),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(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,listen:t}}(e);const n=l(null==t?void 0:t.persistence);return null===n?u:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(2263),a=n(6775);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?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),a=n(6775),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.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:()=>a});var r=n(2263);function a(){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[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,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(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},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.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294),a=n(6010);const o="loadingRing_RJI3";function i(e){let{className:t}=e;return r.createElement("div",{className:(0,a.Z)(o,t)},r.createElement("div",null),r.createElement("div",null),r.createElement("div",null),r.createElement("div",null))}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>i});var r=n(1336),a=n.n(r),o=n(1029);async function i(e){{const t=await(await fetch(`${e}search-index.json?_=${o.rx}`)).json(),n=t.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),r=t.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:n,zhDictionary:Array.from(r)}}}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var r=n(1336),a=n.n(r);var o=n(1029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.dK);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.dK)if("en"===i)o._k||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(c),l(c)}}},3926:(e,t,n)=>{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>a});var r=n(1690);function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`<mark>${(0,r.X)(e.substr(n,i.length))}</mark>`);const l=n+i.length;l<e.length&&o.push(a(e.substr(l),t));break}}return 0===o.length?n?`<mark>${(0,r.X)(e)}</mark>`:(0,r.X)(e):o.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>s});var r=n(1690),a=n(2539);const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substr(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substr(n)}return t}var l=n(1029);function s(e,t,n,r){void 0===r&&(r=l.Hk);const a={chunkIndex:-1},o=u(e,t,n,0,0,a),i=o.slice(0,a.chunkIndex),s=o[a.chunkIndex],c=[s.html],d=o.slice(a.chunkIndex+1);let f=s.textLength,p=0,m=0,h=!1,g=!1;for(;f<r;)if((p<=m||0===d.length)&&i.length>0){const e=i.pop();f+e.textLength<=r?(c.unshift(e.html),p+=e.textLength,f+=e.textLength):(h=!0,i.length=0)}else{if(!(d.length>0))break;{const e=d.shift();f+e.textLength<=r?(c.push(e.html),m+=e.textLength,f+=e.textLength):(g=!0,d.length=0)}}return(h||i.length>0)&&c.unshift("\u2026"),(g||d.length>0)&&c.push("\u2026"),c.join("")}function u(e,t,n,o,l,s){const c=[],[d,f]=t[o];if(d<l)(o+=1)<t.length&&c.push(...u(e,t,n,o,l));else{d>l&&c.push(...i(e.substring(l,d)).map((e=>({html:(0,r.X)(e),textLength:e.length})))),s&&(s.chunkIndex=c.length),c.push({html:(0,a.C)(e.substr(d,f),n,!0),textLength:f});const p=d+f;(o+=1)<t.length?c.push(...u(e,t,n,o,p)):p<e.length&&c.push(...i(e.substr(p)).map((e=>({html:(0,r.X)(e),textLength:e.length}))))}return c}},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>o,H6:()=>u,rx:()=>i,dK:()=>r,_k:()=>a,Hk:()=>s,qo:()=>l});n(1336);const r=["en"],a=!1,o=null,i="0762b8a5",l=8,s=50,u=!1},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>L,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;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&&a(e),s=t&&a(t),u=l||s;if(e&&a(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?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(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,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!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,a=(-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,o=!(-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,x=void 0===S?6:S,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),p(o,r,n)}function T(){return Math.random().toString(36).substr(2,x)}var L=m();function R(e){(0,r.Z)($,e),$.length=n.length,L.notifyListeners($.location,$.action)}function A(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||N(C(e.state))}function P(){N(C(y()))}var O=!1;function N(e){if(O)O=!1,R();else{L.confirmTransitionTo(e,"POP",E,(function(t){t?R({action:"POP",location:e}):function(e){var t=$.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(O=!0,F(a))}(e)}))}}var I=C(y()),D=[I.key];function M(e){return _+f(e)}function F(e){n.go(e)}var j=0;function B(e){1===(j+=e)&&1===e?(window.addEventListener(v,A),o&&window.addEventListener(b,P)):0===j&&(window.removeEventListener(v,A),o&&window.removeEventListener(b,P))}var z=!1;var $={length:n.length,action:"POP",location:I,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,T(),$.location);L.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf($.location.key),u=D.slice(0,s+1);u.push(o.key),D=u,R({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,T(),$.location);L.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf($.location.key);-1!==s&&(D[s]=o.key),R({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=L.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=L.appendListener(e);return B(1),function(){B(-1),t()}}};return $}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 x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(S(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,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 C(){var e=w(x());return v&&(e=c(e,v)),p(e)}var T=m();function L(e){(0,r.Z)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var R=!1,A=null;function P(){var e,t,n=x(),r=y(n);if(n!==r)_(r);else{var a=C(),i=z.location;if(!R&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(A===f(a))return;A=null,function(e){if(R)R=!1,L();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?L({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 a=n-r;a&&(R=!0,M(a))}(e)}))}}(a)}}var O=x(),N=y(O);O!==N&&_(N);var I=C(),D=[f(I)];function M(e){t.go(e)}var F=0;function j(e){1===(F+=e)&&1===e?window.addEventListener(k,P):0===F&&window.removeEventListener(k,P)}var B=!1;var z={length:t.length,action:"POP",location:I,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);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);if(x()!==a){A=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(f(z.location)),i=D.slice(0,o+1);i.push(t),D=i,L({action:n,location:r})}else L()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);x()!==a&&(A=t,_(a));var o=D.indexOf(f(z.location));-1!==o&&(D[o]=t),L({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(j(1),B=!0),function(){return B&&(B=!1,j(-1)),t()}},listen:function(e){var t=T.appendListener(e);return j(1),function(){j(-1),t()}}};return z}function T(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,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=T(l,0,o.length-1),v=o.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),b=f;function y(e){var t=T(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",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,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,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},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),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={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]||a}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 a=p(n);a&&a!==m&&e(t,a,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(!(o[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,a,o,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,a,o,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)}},1336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,f,p,m,h,g,v,b,y,w,k,E,S,x,_,C,T,L,R,A,P=function(e){var t=new P.Builder;return t.pipeline.add(P.trimmer,P.stopWordFilter,P.stemmer),t.searchPipeline.add(P.stemmer),e.call(t,t),t.build()};P.version="2.3.9",P.utils={},P.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),P.utils.asString=function(e){return null==e?"":e.toString()},P.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 a=n[r],o=e[a];if(Array.isArray(o))t[a]=o.slice();else{if("string"!=typeof o&&"number"!=typeof o&&"boolean"!=typeof o)throw new TypeError("clone is not deep and does not support nested objects");t[a]=o}}return t},P.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},P.FieldRef.joiner="/",P.FieldRef.fromString=function(e){var t=e.indexOf(P.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new P.FieldRef(r,n,e)},P.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+P.FieldRef.joiner+this.docRef),this._stringValue},P.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},P.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},P.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},P.Set.prototype.contains=function(e){return!!this.elements[e]},P.Set.prototype.intersect=function(e){var t,n,r,a=[];if(e===P.Set.complete)return this;if(e===P.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var o=0;o<r.length;o++){var i=r[o];i in n.elements&&a.push(i)}return new P.Set(a)},P.Set.prototype.union=function(e){return e===P.Set.complete?P.Set.complete:e===P.Set.empty?this:new P.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},P.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var a=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(a))},P.Token=function(e,t){this.str=e||"",this.metadata=t||{}},P.Token.prototype.toString=function(){return this.str},P.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},P.Token.prototype.clone=function(e){return e=e||function(e){return e},new P.Token(e(this.str,this.metadata),this.metadata)},P.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new P.Token(P.utils.asString(e).toLowerCase(),P.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,a=[],o=0,i=0;o<=r;o++){var l=o-i;if(n.charAt(o).match(P.tokenizer.separator)||o==r){if(l>0){var s=P.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new P.Token(n.slice(i,o),s))}i=o+1}}return a},P.tokenizer.separator=/[\s\-]+/,P.Pipeline=function(){this._stack=[]},P.Pipeline.registeredFunctions=Object.create(null),P.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&P.utils.warn("Overwriting existing registered function: "+t),e.label=t,P.Pipeline.registeredFunctions[e.label]=e},P.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||P.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},P.Pipeline.load=function(e){var t=new P.Pipeline;return e.forEach((function(e){var n=P.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},P.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){P.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},P.Pipeline.prototype.after=function(e,t){P.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)},P.Pipeline.prototype.before=function(e,t){P.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},P.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},P.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],a=[],o=0;o<e.length;o++){var i=r(e[o],o,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)a.push(i[l]);else a.push(i)}e=a}return e},P.Pipeline.prototype.runString=function(e,t){var n=new P.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},P.Pipeline.prototype.reset=function(){this._stack=[]},P.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return P.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},P.Vector=function(e){this._magnitude=0,this.elements=e||[]},P.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,a=Math.floor(r/2),o=this.elements[2*a];r>1&&(o<e&&(t=a),o>e&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:o<e?2*(a+1):void 0},P.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},P.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)},P.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)},P.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,a=n.length,o=r.length,i=0,l=0,s=0,u=0;s<a&&u<o;)(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},P.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},P.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},P.Vector.prototype.toJSON=function(){return this.elements},P.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)$/,x=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,C=/^(.+?)(s|t)(ion)$/,T=/^(.+?)e$/,L=/ll$/,R=new RegExp("^"+u+s+"[^aeiouwxy]$"),A=function(e){var t,n,r,a,o,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),o=h,(a=m).test(e)?e=e.replace(a,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=v,(a=g).test(e)){var A=a.exec(e);(a=c).test(A[1])&&(a=b,e=e.replace(a,""))}else o.test(e)&&(t=(A=o.exec(e))[1],(o=p).test(t)&&(s=w,u=k,(o=y).test(e=t)?e+="e":s.test(e)?(a=b,e=e.replace(a,"")):u.test(e)&&(e+="e")));return(a=E).test(e)&&(e=(t=(A=a.exec(e))[1])+"i"),(a=S).test(e)&&(t=(A=a.exec(e))[1],n=A[2],(a=c).test(t)&&(e=t+i[n])),(a=x).test(e)&&(t=(A=a.exec(e))[1],n=A[2],(a=c).test(t)&&(e=t+l[n])),o=C,(a=_).test(e)?(t=(A=a.exec(e))[1],(a=d).test(t)&&(e=t)):o.test(e)&&(t=(A=o.exec(e))[1]+A[2],(o=d).test(t)&&(e=t)),(a=T).test(e)&&(t=(A=a.exec(e))[1],o=f,s=R,((a=d).test(t)||o.test(t)&&!s.test(t))&&(e=t)),o=d,(a=L).test(e)&&o.test(e)&&(a=b,e=e.replace(a,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(A)}),P.Pipeline.registerFunction(P.stemmer,"stemmer"),P.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}},P.stopWordFilter=P.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"]),P.Pipeline.registerFunction(P.stopWordFilter,"stopWordFilter"),P.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},P.Pipeline.registerFunction(P.trimmer,"trimmer"),P.TokenSet=function(){this.final=!1,this.edges={},this.id=P.TokenSet._nextId,P.TokenSet._nextId+=1},P.TokenSet._nextId=1,P.TokenSet.fromArray=function(e){for(var t=new P.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},P.TokenSet.fromClause=function(e){return"editDistance"in e?P.TokenSet.fromFuzzyString(e.term,e.editDistance):P.TokenSet.fromString(e.term)},P.TokenSet.fromFuzzyString=function(e,t){for(var n=new P.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var a=r.pop();if(a.str.length>0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new P.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new P.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new P.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new P.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},P.TokenSet.fromString=function(e){for(var t=new P.TokenSet,n=t,r=0,a=e.length;r<a;r++){var o=e[r],i=r==a-1;if("*"==o)t.edges[o]=t,t.final=i;else{var l=new P.TokenSet;l.final=i,t.edges[o]=l,t=l}}return n},P.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),a=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<a;o++){var i=r[o];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},P.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 a=t[r];e=e+a+this.edges[a].id}return e},P.TokenSet.prototype.intersect=function(e){for(var t=new P.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var a=Object.keys(n.qNode.edges),o=a.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<o;s++)for(var u=a[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 P.TokenSet).final=m,n.output.edges[d]=h),r.push({qNode:p,output:h,node:f})}}}return t},P.TokenSet.Builder=function(){this.previousWord="",this.root=new P.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},P.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 a=new P.TokenSet,o=e[r];t.edges[o]=a,this.uncheckedNodes.push({parent:t,char:o,child:a}),t=a}t.final=!0,this.previousWord=e},P.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},P.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()}},P.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},P.Index.prototype.search=function(e){return this.query((function(t){new P.QueryParser(e,t).parse()}))},P.Index.prototype.query=function(e){for(var t=new P.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new P.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=P.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=P.TokenSet.fromClause(s),m=this.tokenSet.intersect(p).toArray();if(0===m.length&&s.presence===P.Query.presence.REQUIRED){for(var h=0;h<s.fields.length;h++){o[O=s.fields[h]]=P.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[O=s.fields[h]],k=Object.keys(w),E=v+"/"+O,S=new P.Set(k);if(s.presence==P.Query.presence.REQUIRED&&(c=c.union(S),void 0===o[O]&&(o[O]=P.Set.complete)),s.presence!=P.Query.presence.PROHIBITED){if(r[O].upsert(y,s.boost,(function(e,t){return e+t})),!a[E]){for(var x=0;x<k.length;x++){var _,C=k[x],T=new P.FieldRef(C,O),L=w[C];void 0===(_=n[T])?n[T]=new P.MatchData(v,O,L):_.add(v,O,L)}a[E]=!0}}else void 0===i[O]&&(i[O]=P.Set.empty),i[O]=i[O].union(S)}}}if(s.presence===P.Query.presence.REQUIRED)for(h=0;h<s.fields.length;h++){o[O=s.fields[h]]=o[O].intersect(c)}}var R=P.Set.complete,A=P.Set.empty;for(l=0;l<this.fields.length;l++){var O;o[O=this.fields[l]]&&(R=R.intersect(o[O])),i[O]&&(A=A.union(i[O]))}var N=Object.keys(n),I=[],D=Object.create(null);if(t.isNegated()){N=Object.keys(this.fieldVectors);for(l=0;l<N.length;l++){T=N[l];var M=P.FieldRef.fromString(T);n[T]=new P.MatchData}}for(l=0;l<N.length;l++){var F=(M=P.FieldRef.fromString(N[l])).docRef;if(R.contains(F)&&!A.contains(F)){var j,B=this.fieldVectors[M],z=r[M.fieldName].similarity(B);if(void 0!==(j=D[F]))j.score+=z,j.matchData.combine(n[M]);else{var $={ref:F,score:z,matchData:n[M]};D[F]=$,I.push($)}}}return I.sort((function(e,t){return t.score-e.score}))},P.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:P.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},P.Index.load=function(e){var t={},n={},r=e.fieldVectors,a=Object.create(null),o=e.invertedIndex,i=new P.TokenSet.Builder,l=P.Pipeline.load(e.pipeline);e.version!=P.version&&P.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+P.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 P.Vector(c)}for(s=0;s<o.length;s++){var d,f=(d=o[s])[0],p=d[1];i.insert(f),a[f]=p}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=a,t.tokenSet=i.root,t.pipeline=l,new P.Index(t)},P.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=P.tokenizer,this.pipeline=new P.Pipeline,this.searchPipeline=new P.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},P.Builder.prototype.ref=function(e){this._ref=e},P.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},P.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},P.Builder.prototype.k1=function(e){this._k1=e},P.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 a=0;a<r.length;a++){var o=r[a],i=this._fields[o].extractor,l=i?i(e):e[o],s=this.tokenizer(l,{fields:[o]}),u=this.pipeline.run(s),c=new P.FieldRef(n,o),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=u.length;for(var f=0;f<u.length;f++){var p=u[f];if(null==d[p]&&(d[p]=0),d[p]+=1,null==this.invertedIndex[p]){var m=Object.create(null);m._index=this.termIndex,this.termIndex+=1;for(var h=0;h<r.length;h++)m[r[h]]=Object.create(null);this.invertedIndex[p]=m}null==this.invertedIndex[p][o][n]&&(this.invertedIndex[p][o][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var v=this.metadataWhitelist[g],b=p.metadata[v];null==this.invertedIndex[p][o][n][v]&&(this.invertedIndex[p][o][n][v]=[]),this.invertedIndex[p][o][n][v].push(b)}}}},P.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},a=0;a<t;a++){var o=P.FieldRef.fromString(e[a]),i=o.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[o]}var l=Object.keys(this._fields);for(a=0;a<l.length;a++){var s=l[a];n[s]=n[s]/r[s]}this.averageFieldLength=n},P.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),a=0;a<n;a++){for(var o=P.FieldRef.fromString(t[a]),i=o.fieldName,l=this.fieldLengths[o],s=new P.Vector,u=this.fieldTermFrequencies[o],c=Object.keys(u),d=c.length,f=this._fields[i].boost||1,p=this._documents[o.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=P.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[o]=s}this.fieldVectors=e},P.Builder.prototype.createTokenSet=function(){this.tokenSet=P.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},P.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new P.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},P.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},P.MatchData=function(e,t,n){for(var r=Object.create(null),a=Object.keys(n||{}),o=0;o<a.length;o++){var i=a[o];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},P.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],a=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var o=0;o<a.length;o++){var i=a[o],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])}}}},P.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),a=0;a<r.length;a++){var o=r[a];o in this.metadata[e][t]?this.metadata[e][t][o]=this.metadata[e][t][o].concat(n[o]):this.metadata[e][t][o]=n[o]}else this.metadata[e][t]=n},P.Query=function(e){this.clauses=[],this.allFields=e},P.Query.wildcard=new String("*"),P.Query.wildcard.NONE=0,P.Query.wildcard.LEADING=1,P.Query.wildcard.TRAILING=2,P.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},P.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=P.Query.wildcard.NONE),e.wildcard&P.Query.wildcard.LEADING&&e.term.charAt(0)!=P.Query.wildcard&&(e.term="*"+e.term),e.wildcard&P.Query.wildcard.TRAILING&&e.term.slice(-1)!=P.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=P.Query.presence.OPTIONAL),this.clauses.push(e),this},P.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=P.Query.presence.PROHIBITED)return!1;return!0},P.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,P.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},P.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},P.QueryParseError.prototype=new Error,P.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},P.QueryLexer.prototype.run=function(){for(var e=P.QueryLexer.lexText;e;)e=e(this)},P.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("")},P.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},P.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},P.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return P.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},P.QueryLexer.prototype.width=function(){return this.pos-this.start},P.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},P.QueryLexer.prototype.backup=function(){this.pos-=1},P.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=P.QueryLexer.EOS&&this.backup()},P.QueryLexer.prototype.more=function(){return this.pos<this.length},P.QueryLexer.EOS="EOS",P.QueryLexer.FIELD="FIELD",P.QueryLexer.TERM="TERM",P.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",P.QueryLexer.BOOST="BOOST",P.QueryLexer.PRESENCE="PRESENCE",P.QueryLexer.lexField=function(e){return e.backup(),e.emit(P.QueryLexer.FIELD),e.ignore(),P.QueryLexer.lexText},P.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(P.QueryLexer.TERM)),e.ignore(),e.more())return P.QueryLexer.lexText},P.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(P.QueryLexer.EDIT_DISTANCE),P.QueryLexer.lexText},P.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(P.QueryLexer.BOOST),P.QueryLexer.lexText},P.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(P.QueryLexer.TERM)},P.QueryLexer.termSeparator=P.tokenizer.separator,P.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==P.QueryLexer.EOS)return P.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return P.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(P.QueryLexer.TERM),P.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(P.QueryLexer.TERM),P.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(P.QueryLexer.PRESENCE),P.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(P.QueryLexer.PRESENCE),P.QueryLexer.lexText;if(t.match(P.QueryLexer.termSeparator))return P.QueryLexer.lexTerm}else e.escapeCharacter()}},P.QueryParser=function(e,t){this.lexer=new P.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},P.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=P.QueryParser.parseClause;e;)e=e(this);return this.query},P.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},P.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},P.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},P.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case P.QueryLexer.PRESENCE:return P.QueryParser.parsePresence;case P.QueryLexer.FIELD:return P.QueryParser.parseField;case P.QueryLexer.TERM:return P.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 P.QueryParseError(n,t.start,t.end)}},P.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=P.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=P.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new P.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new P.QueryParseError(n,t.start,t.end)}switch(r.type){case P.QueryLexer.FIELD:return P.QueryParser.parseField;case P.QueryLexer.TERM:return P.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new P.QueryParseError(n,r.start,r.end)}}},P.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 P.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new P.QueryParseError(r,t.start,t.end)}if(a.type===P.QueryLexer.TERM)return P.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new P.QueryParseError(r,a.start,a.end)}},P.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 P.QueryLexer.TERM:return e.nextClause(),P.QueryParser.parseTerm;case P.QueryLexer.FIELD:return e.nextClause(),P.QueryParser.parseField;case P.QueryLexer.EDIT_DISTANCE:return P.QueryParser.parseEditDistance;case P.QueryLexer.BOOST:return P.QueryParser.parseBoost;case P.QueryLexer.PRESENCE:return e.nextClause(),P.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new P.QueryParseError(r,n.start,n.end)}else e.nextClause()}},P.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 P.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case P.QueryLexer.TERM:return e.nextClause(),P.QueryParser.parseTerm;case P.QueryLexer.FIELD:return e.nextClause(),P.QueryParser.parseField;case P.QueryLexer.EDIT_DISTANCE:return P.QueryParser.parseEditDistance;case P.QueryLexer.BOOST:return P.QueryParser.parseBoost;case P.QueryLexer.PRESENCE:return e.nextClause(),P.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new P.QueryParseError(r,a.start,a.end)}else e.nextClause()}},P.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 P.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case P.QueryLexer.TERM:return e.nextClause(),P.QueryParser.parseTerm;case P.QueryLexer.FIELD:return e.nextClause(),P.QueryParser.parseField;case P.QueryLexer.EDIT_DISTANCE:return P.QueryParser.parseEditDistance;case P.QueryLexer.BOOST:return P.QueryParser.parseBoost;case P.QueryLexer.PRESENCE:return e.nextClause(),P.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new P.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return P})?r.call(t,n,t,e):r)||(e.exports=a)}()},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,a;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 a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}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=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{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)*a(Math.random()*t,.1,.95)),t=a(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 a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),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,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[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===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(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(a){return!1}}()?Object.assign:function(e,o){for(var i,l,s=a(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}},4779:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.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,x=n[2]||c,_=v||b;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(x)+"]+?"})}}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),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).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&&(o+=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)+"`");o+=(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+'"');o+=c.prefix+d}}else o+=c}return o}}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 a=(n=n||{}).strict,o=!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 a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&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=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(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 a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);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 a=e.classList;if(a.contains(t))return!0;if(a.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 a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},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 a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}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 x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(b){if(!(_=o(k,S,e,v))||_.index>=e.length)break;var T=_.index,L=_.index+_[0].length,R=S;for(R+=E.value.length;T>=R;)R+=(E=E.next).value.length;if(S=R-=E.value.length,E.value instanceof a)continue;for(var A=E;A!==t.tail&&(R<L||"string"==typeof A.value);A=A.next)C++,R+=A.value.length;C--,x=e.slice(S,R),_.index-=S}else if(!(_=o(k,0,x,v)))continue;T=_.index;var P=_[0],O=x.slice(0,T),N=x.slice(T+P.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(O&&(D=s(t,D,O),S+=O.length),u(t,D,C),E=s(t,D,new a(f,g?r.tokenize(P,g):P,y,P)),N&&s(t,E,N),C>1){var M={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.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,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={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(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.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]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.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:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.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 a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.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:/[{}[\];(),.:]/},a.languages.c=a.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|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.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},a.languages.c.string],char:a.languages.c.char,comment:a.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:a.languages.c}}}}),a.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 a.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"])}(a),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"))}(a),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},a={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:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.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}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.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:a.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:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.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:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.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:a.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"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.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")),a.languages.js=a.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}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\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})),o=/"(?:[^"\\\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"(?:"+a+"|"+o+")"}))),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(o),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}(a),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,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \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("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),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 a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.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(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);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}(a),a.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:a.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+/},a.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 a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.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 a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.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,a=r.inside["interpolation-punctuation"],o=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 a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,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 a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.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,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.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)}))}(a),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}(a),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 a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\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:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<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 a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);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)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),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],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,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})}(a),a.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},a.languages.go=a.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/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.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,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;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)}}}})}(a),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}(a),a.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"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.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:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.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:/[:;(){}]/},a.languages.objectivec=a.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 a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.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/},a.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:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.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/}),a.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 a.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}})}(a),a.languages.scss=a.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]+\}/}}}),a.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}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.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}}),a.languages.scss.atrule.inside.rest=a.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:/[{}()\[\];:.]/}}(a),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}(a),a.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 o=a},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),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(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),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.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 a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.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 a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}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;a(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,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}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 a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,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:o,resetWarningCache:a};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),a=n(7418),o=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,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,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 a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.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,a,r)&&(n=null),r||null===a?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)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!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,x=60107,_=60108,C=60114,T=60109,L=60110,R=60112,A=60113,P=60120,O=60115,N=60116,I=60121,D=60128,M=60129,F=60130,j=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;E=B("react.element"),S=B("react.portal"),x=B("react.fragment"),_=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),L=B("react.context"),R=B("react.forward_ref"),A=B("react.suspense"),P=B("react.suspense_list"),O=B("react.memo"),N=B("react.lazy"),I=B("react.block"),B("react.scope"),D=B("react.opaque.id"),M=B("react.debug_trace_mode"),F=B("react.offscreen"),j=B("react.legacy_hidden")}var z,$="function"==typeof Symbol&&Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=$&&e[$]||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 a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[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 x:return"Fragment";case S:return"Portal";case C:return"Profiler";case _:return"StrictMode";case A:return"Suspense";case P:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case L:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case R:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case O:return Z(e.type);case I: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 a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.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 a({},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")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(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 ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({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 a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+V(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},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("--"),a=ke(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}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=a({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 xe(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 _e(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 Ce(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Te=null,Le=null,Re=null;function Ae(e){if(e=ra(e)){if("function"!=typeof Te)throw Error(i(280));var t=e.stateNode;t&&(t=oa(t),Te(e.stateNode,e.type,t))}}function Pe(e){Le?Re?Re.push(e):Re=[e]:Le=e}function Oe(){if(Le){var e=Le,t=Re;if(Re=Le=null,Ae(e),t)for(e=0;e<t.length;e++)Ae(t[e])}}function Ne(e,t){return e(t)}function Ie(e,t,n,r,a){return e(t,n,r,a)}function De(){}var Me=Ne,Fe=!1,je=!1;function Be(){null===Le&&null===Re||(De(),Oe())}function ze(e,t){var n=e.stateNode;if(null===n)return null;var r=oa(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 $e=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){$e=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(ge){$e=!1}function qe(e,t,n,r,a,o,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,a,o,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 a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,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){for(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)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,at,ot=!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,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,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,a,o){return null===e||e.nativeEvent!==o?(e=mt(t,n,r,a,o),null!==t&&(null!==(t=ra(t))&&nt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function vt(e){var t=na(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 at(e.lanePriority,(function(){o.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=ra(n))&&nt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){bt(e)&&n.delete(t)}function wt(){for(ot=!1;0<it.length;){var e=it[0];if(null!==e.blockedOn){null!==(e=ra(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,ot||(ot=!0,o.unstable_scheduleCallback(o.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 xt={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},_t={},Ct={};function Tt(e){if(_t[e])return _t[e];if(!xt[e])return e;var t,n=xt[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ct)return _t[e]=n[t];return e}d&&(Ct=document.createElement("div").style,"AnimationEvent"in window||(delete xt.animationend.animation,delete xt.animationiteration.animation,delete xt.animationstart.animation),"TransitionEvent"in window||delete xt.transitionend.transition);var Lt=Tt("animationend"),Rt=Tt("animationiteration"),At=Tt("animationstart"),Pt=Tt("transitionend"),Ot=new Map,Nt=new Map,It=["abort","abort",Lt,"animationEnd",Rt,"animationIteration",At,"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",Pt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Nt.set(r,t),Ot.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Mt=8;function Ft(e){if(0!=(1&e))return Mt=15,1;if(0!=(2&e))return Mt=14,2;if(0!=(4&e))return Mt=13,4;var t=24&e;return 0!==t?(Mt=12,t):0!=(32&e)?(Mt=11,32):0!==(t=192&e)?(Mt=10,t):0!=(256&e)?(Mt=9,256):0!==(t=3584&e)?(Mt=8,t):0!=(4096&e)?(Mt=7,4096):0!==(t=4186112&e)?(Mt=6,t):0!==(t=62914560&e)?(Mt=5,t):67108864&e?(Mt=4,67108864):0!=(134217728&e)?(Mt=3,134217728):0!==(t=805306368&e)?(Mt=2,t):0!=(1073741824&e)?(Mt=1,1073741824):(Mt=8,e)}function jt(e,t){var n=e.pendingLanes;if(0===n)return Mt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Mt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Ft(s),a=Mt):0!==(l&=o)&&(r=Ft(l),a=Mt)}else 0!==(o=n&~i)?(r=Ft(o),a=Mt):0!==l&&(r=Ft(l),a=Mt);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(Ft(t),a<=Mt)return t;Mt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Ht(t)),r|=e[n],t&=~a;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=$t(24&~t))?zt(10,t):e;case 10:return 0===(e=$t(192&~t))?zt(8,t):e;case 8:return 0===(e=$t(3584&~t))&&(0===(e=$t(4186112&~t))&&(e=512)),e;case 2:return 0===(t=$t(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function $t(e){return e&-e}function Ut(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=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Kt(e,t,n,r){Fe||De();var a=Xt,o=Fe;Fe=!0;try{Ie(a,e,t,n,r)}finally{(Fe=o)||Be()}}function Yt(e,t,n,r){Vt(Zt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<it.length&&-1<pt.indexOf(e))e=mt(null,e,t,n,r),it.push(e);else{var o=Jt(e,t,n,r);if(null===o)a&&ht(e,r);else{if(a){if(-1<pt.indexOf(e))return e=mt(o,e,t,n,r),void it.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return lt=gt(lt,e,t,n,r,a),!0;case"dragenter":return st=gt(st,e,t,n,r,a),!0;case"mouseover":return ut=gt(ut,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ct.set(o,gt(ct.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,dt.set(o,gt(dt.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;ht(e,r)}Dr(e,t,r,null,n)}}}function Jt(e,t,n,r){var a=Ce(r);if(null!==(a=na(a))){var o=Ke(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ye(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Dr(e,t,r,a,n),null}var en=null,tn=null,nn=null;function rn(){if(nn)return nn;var e,t,n=tn,r=n.length,a="value"in en?en.value:en.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return nn=a.slice(e,1<t?1-t:void 0)}function an(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 on(){return!0}function ln(){return!1}function sn(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?on:ln,this.isPropagationStopped=ln,this}return a(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=on)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=on)},persist:function(){},isPersistent:on}),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=a({},fn,{view:0,detail:0}),hn=sn(mn),gn=a({},mn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Ln,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(a({},gn,{dataTransfer:0})),yn=sn(a({},mn,{relatedTarget:0})),wn=sn(a({},fn,{animationName:0,elapsedTime:0,pseudoElement:0})),kn=a({},fn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),En=sn(kn),Sn=sn(a({},fn,{data:0})),xn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},_n={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"},Cn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Tn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Cn[e])&&!!t[e]}function Ln(){return Tn}var Rn=a({},mn,{key:function(e){if(e.key){var t=xn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=an(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?_n[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Ln,charCode:function(e){return"keypress"===e.type?an(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?an(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),An=sn(Rn),Pn=sn(a({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),On=sn(a({},mn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Ln})),Nn=sn(a({},fn,{propertyName:0,elapsedTime:0,pseudoElement:0})),In=a({},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(In),Mn=[9,13,27,32],Fn=d&&"CompositionEvent"in window,jn=null;d&&"documentMode"in document&&(jn=document.documentMode);var Bn=d&&"TextEvent"in window&&!jn,zn=d&&(!Fn||jn&&8<jn&&11>=jn),$n=String.fromCharCode(32),Un=!1;function qn(e,t){switch(e){case"keyup":return-1!==Mn.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){Pe(r),0<(t=Fr(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){Rr(e,0)}function Xn(e){if(Y(aa(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 ar(){Wn&&(Wn.detachEvent("onpropertychange",or),Kn=Wn=null)}function or(e){if("value"===e.propertyName&&Xn(Kn)){var t=[];if(Vn(t,Kn,e,Ce(e)),e=Yn,Fe)e(t);else{Fe=!0;try{Ne(e,t)}finally{Fe=!1,Be()}}}}function ir(e,t,n){"focusin"===e?(ar(),Kn=n,(Wn=t).attachEvent("onpropertychange",or)):"focusout"===e&&ar()}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=Fr(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(It,2);for(var xr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),_r=0;_r<xr.length;_r++)Nt.set(xr[_r],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 Cr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Tr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Cr));function Lr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,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 Rr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=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!==o&&a.isPropagationStopped())break e;Lr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Lr(a,l,u),o=s}}}if(Qe)throw e=Ze,Qe=!1,Ze=null,e}function Ar(e,t){var n=ia(t),r=e+"__bubble";n.has(r)||(Ir(t,e,2,!1),n.add(r))}var Pr="_reactListening"+Math.random().toString(36).slice(2);function Or(e){e[Pr]||(e[Pr]=!0,l.forEach((function(t){Tr.has(t)||Nr(t,!1,e,null),Nr(t,!0,e,null)})))}function Nr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Tr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=ia(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Ir(o,e,a,t),i.add(l))}function Ir(e,t,n,r){var a=Nt.get(t);switch(void 0===a?2:a){case 0:a=Kt;break;case 1:a=Yt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!$e||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,a){var o=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===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=na(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(je)return e(t,n);je=!0;try{Me(e,t,n)}finally{je=!1,Be()}}((function(){var r=o,a=Ce(n),i=[];e:{var l=Ot.get(e);if(void 0!==l){var s=pn,u=e;switch(e){case"keypress":if(0===an(n))break e;case"keydown":case"keyup":s=An;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=On;break;case Lt:case Rt:case At:s=wn;break;case Pt: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=Pn}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(Mr(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),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)||!na(u)&&!u[ea])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?na(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=Pn,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:aa(s),p=null==u?l:aa(u),(l=new c(h,m+"leave",s,n,a)).target=d,l.relatedTarget=p,h=null,na(a)===r&&((c=new c(f,m+"enter",u,n,a)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=jr(p))m++;for(p=0,h=f;h;h=jr(h))p++;for(;0<m-p;)c=jr(c),m--;for(;0<p-m;)f=jr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=jr(c),f=jr(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?aa(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,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?aa(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,a);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Sr(i,n,a)}var b;if(Fn)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=a)?en.value:en.textContent,Gn=!0)),0<(v=Fr(r,y)).length&&(y=new Sn(y,e,null,n,a),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:(Un=!0,$n);case"textInput":return(e=t.data)===$n&&Un?null:e;default:return null}}(e,n):function(e,t){if(Gn)return"compositionend"===e||!Fn&&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=Fr(r,"onBeforeInput")).length&&(a=new Sn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Rr(i,t)}))}function Mr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Fr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=ze(e,n))&&r.unshift(Mr(e,o,a)),null!=(o=ze(e,t))&&r.push(Mr(e,o,a))),e=e.return}return r}function jr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,a){for(var o=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,a?null!=(s=ze(n,o))&&i.unshift(Mr(n,s,l)):a||null!=(s=ze(n,o))&&i.push(Mr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function zr(){}var $r=null,Ur=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,ea="__reactContainer$"+Yr,ta="__reactEvents$"+Yr;function na(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ea]||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 ra(e){return!(e=e[Xr]||e[ea])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function aa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function oa(e){return e[Jr]||null}function ia(e){var t=e[ta];return void 0===t&&(t=e[ta]=new Set),t}var la=[],sa=-1;function ua(e){return{current:e}}function ca(e){0>sa||(e.current=la[sa],la[sa]=null,sa--)}function da(e,t){sa++,la[sa]=e.current,e.current=t}var fa={},pa=ua(fa),ma=ua(!1),ha=fa;function ga(e,t){var n=e.type.contextTypes;if(!n)return fa;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function va(e){return null!=(e=e.childContextTypes)}function ba(){ca(ma),ca(pa)}function ya(e,t,n){if(pa.current!==fa)throw Error(i(168));da(pa,t),da(ma,n)}function wa(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,Z(t)||"Unknown",o));return a({},n,r)}function ka(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||fa,ha=pa.current,da(pa,e),da(ma,ma.current),!0}function Ea(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=wa(e,t,ha),r.__reactInternalMemoizedMergedChildContext=e,ca(ma),ca(pa),da(pa,e)):ca(ma),da(ma,n)}var Sa=null,xa=null,_a=o.unstable_runWithPriority,Ca=o.unstable_scheduleCallback,Ta=o.unstable_cancelCallback,La=o.unstable_shouldYield,Ra=o.unstable_requestPaint,Aa=o.unstable_now,Pa=o.unstable_getCurrentPriorityLevel,Oa=o.unstable_ImmediatePriority,Na=o.unstable_UserBlockingPriority,Ia=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Ma=o.unstable_IdlePriority,Fa={},ja=void 0!==Ra?Ra:function(){},Ba=null,za=null,$a=!1,Ua=Aa(),qa=1e4>Ua?Aa:function(){return Aa()-Ua};function Ha(){switch(Pa()){case Oa:return 99;case Na:return 98;case Ia:return 97;case Da:return 96;case Ma:return 95;default:throw Error(i(332))}}function Ga(e){switch(e){case 99:return Oa;case 98:return Na;case 97:return Ia;case 96:return Da;case 95:return Ma;default:throw Error(i(332))}}function Qa(e,t){return e=Ga(e),_a(e,t)}function Za(e,t,n){return e=Ga(e),Ca(e,t,n)}function Va(){if(null!==za){var e=za;za=null,Ta(e)}Wa()}function Wa(){if(!$a&&null!==Ba){$a=!0;var e=0;try{var t=Ba;Qa(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ba=null}catch(n){throw null!==Ba&&(Ba=Ba.slice(e+1)),Ca(Oa,Va),n}finally{$a=!1}}}var Ka=k.ReactCurrentBatchConfig;function Ya(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=ua(null),Ja=null,eo=null,to=null;function no(){to=eo=Ja=null}function ro(e){var t=Xa.current;ca(Xa),e.type._context._currentValue=t}function ao(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 oo(e,t){Ja=e,to=eo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Fi=!0),e.firstContext=null)}function io(e,t){if(to!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(to=e,t=1073741823),t={context:e,observedBits:t,next:null},null===eo){if(null===Ja)throw Error(i(308));eo=t,Ja.dependencies={lanes:0,firstContext:t,responders:null}}else eo=eo.next=t;return e._currentValue}var lo=!1;function so(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function uo(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 co(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function fo(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 po(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=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===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function mo(e,t,n,r){var o=e.updateQueue;lo=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.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=o.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=a({},f,s);break e;case 2:lo=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.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=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,$l|=l,e.lanes=l,e.memoizedState=f}}function ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var go=(new r.Component).refs;function vo(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternals)&&Ke(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=co(r,a);o.payload=t,null!=n&&(o.callback=n),fo(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=co(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),fo(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=co(n,r);a.tag=2,null!=t&&(a.callback=t),fo(e,a),ms(e,r,n)}};function yo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!fr(n,r)||!fr(a,o))}function wo(e,t,n){var r=!1,a=fa,o=t.contextType;return"object"==typeof o&&null!==o?o=io(o):(a=va(t)?ha:pa.current,o=(r=null!=(r=t.contextTypes))?ga(e,a):fa),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function ko(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&&bo.enqueueReplaceState(t,t.state,null)}function Eo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=go,so(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=io(o):(o=va(t)?ha:pa.current,a.context=ga(e,o)),mo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(vo(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&bo.enqueueReplaceState(a,a.state,null),mo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var So=Array.isArray;function xo(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 a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===go&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function _o(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 Co(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 a(e,t){return(e=Qs(e,t)).index=0,e.sibling=null,e}function o(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=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=xo(e,t,n),r.return=e,r):((r=Zs(n.type,n.key,n.props,null,e.mode,r)).ref=xo(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=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Vs(n,e.mode,r,o)).return=e,t):((t=a(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=xo(e,null,t),n.return=e,n;case S:return(t=Ys(t,e.mode,n)).return=e,t}if(So(t)||U(t))return(t=Vs(t,e.mode,n,null)).return=e,t;_o(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null}if(So(n)||U(n))return null!==a?null:d(e,t,n,r,null);_o(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(So(r)||U(r))return d(t,e=e.get(n)||null,r,a,null);_o(t,r)}return null}function h(a,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(a,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(a,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(a,l[h],s))&&(i=o(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=U(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(a,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(a,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===x&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case E:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===x){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=xo(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===x?((r=Vs(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Zs(o.type,o.key,o.props,null,e.mode,s)).ref=xo(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ys(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(So(o))return h(e,r,o,s);if(U(o))return g(e,r,o,s);if(c&&_o(e,o),void 0===o&&!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 To=Co(!0),Lo=Co(!1),Ro={},Ao=ua(Ro),Po=ua(Ro),Oo=ua(Ro);function No(e){if(e===Ro)throw Error(i(174));return e}function Io(e,t){switch(da(Oo,t),da(Po,e),da(Ao,Ro),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)}ca(Ao),da(Ao,t)}function Do(){ca(Ao),ca(Po),ca(Oo)}function Mo(e){No(Oo.current);var t=No(Ao.current),n=me(t,e.type);t!==n&&(da(Po,e),da(Ao,n))}function Fo(e){Po.current===e&&(ca(Ao),ca(Po))}var jo=ua(0);function Bo(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 zo=null,$o=null,Uo=!1;function qo(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 Ho(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 Go(e){if(Uo){var t=$o;if(t){var n=t;if(!Ho(e,t)){if(!(t=Vr(n.nextSibling))||!Ho(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(zo=e);qo(zo,n)}zo=e,$o=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,zo=e}}function Qo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;zo=e}function Zo(e){if(e!==zo)return!1;if(!Uo)return Qo(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=$o;t;)qo(e,t),t=Vr(t.nextSibling);if(Qo(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){$o=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}$o=null}}else $o=zo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){$o=zo=null,Uo=!1}var Wo=[];function Ko(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Yo=k.ReactCurrentDispatcher,Xo=k.ReactCurrentBatchConfig,Jo=0,ei=null,ti=null,ni=null,ri=!1,ai=!1;function oi(){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,a,o){if(Jo=o,ei=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Yo.current=null===e||null===e.memoizedState?Ni:Ii,e=n(r,a),ai){o=0;do{if(ai=!1,!(25>o))throw Error(i(301));o+=1,ni=ti=null,t.updateQueue=null,Yo.current=Di,e=n(r,a)}while(ai)}if(Yo.current=Oi,t=null!==ti&&null!==ti.next,Jo=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,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Jo&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,o=r):s=s.next=d,ei.lanes|=c,$l|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,cr(r,t.memoizedState)||(Fi=!0),t.memoizedState=r,t.baseState=o,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,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);cr(o,t.memoizedState)||(Fi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Jo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function mi(e,t,n,r){var a=Nl;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Yo.current,u=s.useState((function(){return pi(a,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=o(t._source);if(!cr(l,e)){e=n(t._source),cr(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.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);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),cr(m,n)&&cr(h,t)&&cr(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=c=Pi.bind(null,ei,e),u.queue=e,u.baseQueue=null,d=pi(a,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=Pi.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 a=si();ei.flags|=e,a.memoizedState=vi(1|t,n,void 0,void 0===r?null:r)}function ki(e,t,n,r){var a=ui();r=void 0===r?null:r;var o=void 0;if(null!==ti){var i=ti.memoizedState;if(o=i.destroy,null!==r&&ii(r,i.deps))return void vi(t,n,o,r)}ei.flags|=e,a.memoizedState=vi(1|t,n,o,r)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return ki(516,4,e,t)}function xi(e,t){return ki(4,2,e,t)}function _i(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 Ci(e,t,n){return n=null!=n?n.concat([e]):null,ki(4,2,_i.bind(null,t,e),n)}function Ti(){}function Li(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 Ri(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 Ai(e,t){var n=Ha();Qa(98>n?98:n,(function(){e(!0)})),Qa(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Pi(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===ei||null!==i&&i===ei)ai=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(o.eagerReducer=i,o.eagerState=s,cr(s,l))return}catch(u){}ms(e,a,r)}}var Oi={readContext:io,useCallback:oi,useContext:oi,useEffect:oi,useImperativeHandle:oi,useLayoutEffect:oi,useMemo:oi,useReducer:oi,useRef:oi,useState:oi,useDebugValue:oi,useDeferredValue:oi,useTransition:oi,useMutableSource:oi,useOpaqueIdentifier:oi,unstable_isNewReconciler:!1},Ni={readContext:io,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:io,useEffect:Ei,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,_i.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=Pi.bind(null,ei,e),[r.memoizedState,e]},useRef:bi,useState:gi,useDebugValue:Ti,useDeferredValue:function(e){var t=gi(e),n=t[0],r=t[1];return Ei((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=gi(!1),t=e[0];return bi(e=Ai.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(Uo){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},Ii={readContext:io,useCallback:Li,useContext:io,useEffect:Si,useImperativeHandle:Ci,useLayoutEffect:xi,useMemo:Ri,useReducer:di,useRef:yi,useState:function(){return di(ci)},useDebugValue:Ti,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return Si((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.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:io,useCallback:Li,useContext:io,useEffect:Si,useImperativeHandle:Ci,useLayoutEffect:xi,useMemo:Ri,useReducer:fi,useRef:yi,useState:function(){return fi(ci)},useDebugValue:Ti,useDeferredValue:function(e){var t=fi(ci),n=t[0],r=t[1];return Si((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.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},Mi=k.ReactCurrentOwner,Fi=!1;function ji(e,t,n,r){t.child=null===e?Lo(t,null,n,r):To(t,e.child,n,r)}function Bi(e,t,n,r,a){n=n.render;var o=t.ref;return oo(t,a),r=li(e,t,n,r,o,a),null===e||Fi?(t.flags|=1,ji(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function zi(e,t,n,r,a,o){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,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,$i(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:fr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Qs(i,r)).ref=t.ref,e.return=t,t.child=e)}function $i(e,t,n,r,a,o){if(null!==e&&fr(e.memoizedProps,r)&&e.ref===t.ref){if(Fi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Fi=!0)}return Hi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=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!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return ji(e,t,a,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,a){var o=va(n)?ha:pa.current;return o=ga(t,o),oo(t,a),n=li(e,t,n,r,o,a),null===e||Fi?(t.flags|=1,ji(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Gi(e,t,n,r,a){if(va(n)){var o=!0;ka(t)}else o=!1;if(oo(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),wo(t,n,r),Eo(t,n,r,a),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=io(u):u=ga(t,u=va(n)?ha:pa.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)&&ko(t,i,r,u),lo=!1;var f=t.memoizedState;i.state=f,mo(t,r,i,a),s=t.memoizedState,l!==r||f!==s||ma.current||lo?("function"==typeof c&&(vo(t,n,c,r),s=t.memoizedState),(l=lo||yo(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,uo(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ya(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=io(s):s=ga(t,s=va(n)?ha:pa.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)&&ko(t,i,r,s),lo=!1,f=t.memoizedState,i.state=f,mo(t,r,i,a);var m=t.memoizedState;l!==d||f!==m||ma.current||lo?("function"==typeof p&&(vo(t,n,p,r),m=t.memoizedState),(u=lo||yo(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,o,a)}function Qi(e,t,n,r,a,o){qi(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&Ea(t,n,!1),ol(e,t,o);r=t.stateNode,Mi.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=To(t,e.child,null,o),t.child=To(t,null,l,o)):ji(e,t,l,o),t.memoizedState=r.state,a&&Ea(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?ya(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ya(0,t.context,!1),Io(e,t.containerInfo)}var Vi,Wi,Ki,Yi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=jo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),da(jo,1&o),null===e?(void 0!==a.fallback&&Go(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,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?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Yi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ws(t,a,0,null),n=Vs(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Qs(a,{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,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&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,o,a,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),ao(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(ji(e,t,r.children,n),0!=(2&(r=jo.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(da(jo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Bo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Bo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),$l|=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(!Uo)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 va(t.type)&&ba(),null;case 3:return Do(),ca(ma),ca(pa),Ko(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),null;case 5:Fo(t);var o=No(Oo.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=No(Ao.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Jr]=l,n){case"dialog":Ar("cancel",r),Ar("close",r);break;case"iframe":case"object":case"embed":Ar("load",r);break;case"video":case"audio":for(e=0;e<Cr.length;e++)Ar(Cr[e],r);break;case"source":Ar("error",r);break;case"img":case"image":case"link":Ar("error",r),Ar("load",r);break;case"details":Ar("toggle",r);break;case"input":ee(r,l),Ar("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Ar("invalid",r);break;case"textarea":se(r,l),Ar("invalid",r)}for(var u in xe(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Ar("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===o.nodeType?o:o.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=_e(n,r),n){case"dialog":Ar("cancel",e),Ar("close",e),o=r;break;case"iframe":case"object":case"embed":Ar("load",e),o=r;break;case"video":case"audio":for(o=0;o<Cr.length;o++)Ar(Cr[o],e);o=r;break;case"source":Ar("error",e),o=r;break;case"img":case"image":case"link":Ar("error",e),Ar("load",e),o=r;break;case"details":Ar("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Ar("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Ar("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Ar("invalid",e);break;default:o=r}xe(n,o);var c=o;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&&Ar("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 o.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=No(Oo.current),No(Ao.current),Zo(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 ca(jo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&jo.current)?0===jl&&(jl=3):(0!==jl&&3!==jl||(jl=4),null===Nl||0==(134217727&$l)&&0==(134217727&Ul)||bs(Nl,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Do(),null===e&&Or(t.stateNode.containerInfo),null;case 10:return ro(t),null;case 19:if(ca(jo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==jl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Bo(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 da(jo,1&jo.current|2),t.child}e=e.sibling}null!==r.tail&&qa()>Ql&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Bo(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&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*qa()-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=qa(),n.sibling=null,t=jo.current,da(jo,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:va(e.type)&&ba();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Do(),ca(ma),ca(pa),Ko(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Fo(e),null;case 13:return ca(jo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ca(jo),null;case 4:return Do(),null;case 10:return ro(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 a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}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 o=e.memoizedProps;if(o!==r){e=t.stateNode,No(Ao.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=zr)}for(d in xe(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[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!=o?o[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&&Ar("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=co(-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=co(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.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:Ya(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 a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(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:Ya(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ho(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}ho(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 a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=ke("display",a)}}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(xa&&"function"==typeof xa.onCommitFiberUnmount)try{xa.onCommitFiberUnmount(Sa,t)}catch(o){}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,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}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(o){zs(t,o)}break;case 5:hl(t);break;case 4:_l(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):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?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 xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function _l(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,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=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(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 a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Jr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),_e(e,a),t=_e(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+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!=(o=r.value)?ie(n,!!r.multiple,o,!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=qa(),bl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(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=Us.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Ll(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Rl=Math.ceil,Al=k.ReactCurrentDispatcher,Pl=k.ReactCurrentOwner,Ol=0,Nl=null,Il=null,Dl=0,Ml=0,Fl=ua(0),jl=0,Bl=null,zl=0,$l=0,Ul=0,ql=0,Hl=null,Gl=0,Ql=1/0;function Zl(){Ql=qa()+500}var Vl,Wl=null,Kl=!1,Yl=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Ol)?qa():-1!==ls?ls:ls=qa()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ha()?1:2;if(0===ss&&(ss=zl),0!==Ka.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=Ha(),0!=(4&Ol)&&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<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;qt(e,t,n),e===Nl&&(Ul|=t,4===jl&&bs(e,Dl));var r=Ha();1===t?0!=(8&Ol)&&0==(48&Ol)?ys(e):(gs(e,n),0===Ol&&(Zl(),Va())):(0==(4&Ol)||98!==r&&99!==r||(null===as?as=new Set([e]):as.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,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,Ft(u);var d=Mt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=jt(e,e===Nl?Dl:0),t=Mt,0===r)null!==n&&(n!==Fa&&Ta(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Fa&&Ta(n)}15===t?(n=ys.bind(null,e),null===Ba?(Ba=[n],za=Ca(Oa,Wa)):Ba.push(n),n=Fa):14===t?n=Za(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=Za(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Ol))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=jt(e,e===Nl?Dl:0);if(0===n)return null;var r=n,a=Ol;Ol|=16;var o=Cs();for(Nl===e&&Dl===r||(Zl(),xs(e,r));;)try{Rs();break}catch(s){_s(e,s)}if(no(),Al.current=o,Ol=a,null!==Il?r=0:(Nl=null,Dl=0,r=jl),0!=(zl&Ul))xs(e,0);else if(0!==r){if(2===r&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=Ts(e,n))),1===r)throw t=Bl,xs(e,0),bs(e,n),gs(e,qa()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Os(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=Gl+500-qa())){if(0!==jt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Gr(Os.bind(null,e),r);break}Os(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Ht(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=qa()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Rl(n/1960))-n)){e.timeoutHandle=Gr(Os.bind(null,e),n);break}Os(e);break;default:throw Error(i(329))}}return gs(e,qa()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~Ul,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&Ol))throw Error(i(327));if(Ds(),e===Nl&&0!=(e.expiredLanes&Dl)){var t=Dl,n=Ts(e,t);0!=(zl&Ul)&&(n=Ts(e,t=jt(e,t)))}else n=Ts(e,t=jt(e,0));if(0!==e.tag&&2===n&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=Ts(e,t))),1===n)throw n=Bl,xs(e,0),bs(e,t),gs(e,qa()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Os(e),gs(e,qa()),null}function ws(e,t){var n=Ol;Ol|=1;try{return e(t)}finally{0===(Ol=n)&&(Zl(),Va())}}function ks(e,t){var n=Ol;Ol&=-2,Ol|=8;try{return e(t)}finally{0===(Ol=n)&&(Zl(),Va())}}function Es(e,t){da(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ca(Fl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Qr(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ba();break;case 3:Do(),ca(ma),ca(pa),Ko();break;case 5:Fo(r);break;case 4:Do();break;case 13:case 19:ca(jo);break;case 10:ro(r);break;case 23:case 24:Ss()}n=n.return}Nl=e,Il=Qs(e.current,null),Dl=Ml=zl=t,jl=0,Bl=null,ql=Ul=$l=0}function _s(e,t){for(;;){var n=Il;try{if(no(),Yo.current=Oi,ri){for(var r=ei.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ri=!1}if(Jo=0,ni=ti=ei=null,ai=!1,Pl.current=null,null===n||null===n.return){jl=1,Bl=t,Il=null;break}e:{var o=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&jo.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=co(-1,1);b.tag=2,fo(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.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=$s.bind(null,o,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!==jl&&(jl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,po(f,fl(0,o,t));break e;case 1:o=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,po(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ps(n)}catch(S){t=S,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function Cs(){var e=Al.current;return Al.current=Oi,null===e?Oi:e}function Ts(e,t){var n=Ol;Ol|=16;var r=Cs();for(Nl===e&&Dl===t||xs(e,t);;)try{Ls();break}catch(a){_s(e,a)}if(no(),Ol=n,Al.current=r,null!==Il)throw Error(i(261));return Nl=null,Dl=0,jl}function Ls(){for(;null!==Il;)As(Il)}function Rs(){for(;null!==Il&&!La();)As(Il)}function As(e){var t=Vl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Ps(e):Il=t,Pl.current=null}function Ps(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Il=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.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(Il=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===jl&&(jl=5)}function Os(e){var t=Ha();return Qa(99,Ns.bind(null,e,t)),null}function Ns(e,t){do{Ds()}while(null!==es);if(0!=(48&Ol))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,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-Ht(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Nl&&(Il=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(a=Ol,Ol|=32,Pl.current=null,$r=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,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){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!==o&&3!==g.nodeType||(f=d+o),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===o&&(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;Ur={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Wl=r;do{try{Is()}catch(C){if(null===Wl)throw Error(i(330));zs(Wl,C),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,Cl(Wl.alternate,Wl);break;case 1024:Wl.flags&=-1025;break;case 1028:Wl.flags&=-1025,Cl(Wl.alternate,Wl);break;case 4:Cl(Wl.alternate,Wl);break;case 8:_l(l,s=Wl);var E=s.alternate;wl(s),null!==E&&wl(E)}Wl=Wl.nextEffect}}catch(C){if(null===Wl)throw Error(i(330));zs(Wl,C),Wl=Wl.nextEffect}}while(null!==Wl);if(k=Ur,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),o=mr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.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=!!$r,Ur=$r=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 x=Wl.ref;if(null!==x){var _=Wl.stateNode;Wl.tag,w=_,"function"==typeof x?x(w):x.current=w}}Wl=Wl.nextEffect}}catch(C){if(null===Wl)throw Error(i(330));zs(Wl,C),Wl=Wl.nextEffect}}while(null!==Wl);Wl=null,ja(),Ol=a}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?os++:(os=0,is=e):os=0,n=n.stateNode,xa&&"function"==typeof xa.onCommitFiberRoot)try{xa.onCommitFiberRoot(Sa,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,qa()),Kl)throw Kl=!1,e=Yl,Yl=null,e;return 0!=(8&Ol)||Va(),null}function Is(){for(;null!==Wl;){var e=Wl.alternate;ds||null===cs||(0!=(8&Wl.flags)?et(Wl,cs)&&(ds=!0):13===Wl.tag&&Ll(e,Wl)&&et(Wl,cs)&&(ds=!0));var t=Wl.flags;0!=(256&t)&&gl(e,Wl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Ds(),null}))),Wl=Wl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Qa(e,js)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function js(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Ol))throw Error(i(331));var t=Ol;Ol|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,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 Ol=t,Va(),!0}function Bs(e,t,n){fo(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 a=pl(n,e=ul(t,e),1);if(fo(n,a),a=fs(),null!==(n=hs(n,1)))qt(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function $s(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===jl||3===jl&&(62914560&Dl)===Dl&&500>qa()-Gl?xs(e,0):ql|=n),gs(e,t)}function Us(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===Ha()?1:2:(0===ss&&(ss=zl),0===(t=$t(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,a,o){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 x:return Vs(n.children,a,o,t);case M:l=8,a|=16;break;case _:l=8,a|=1;break;case C:return(e=Hs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case A:return(e=Hs(13,n,t,a)).type=A,e.elementType=A,e.lanes=o,e;case P:return(e=Hs(19,n,t,a)).elementType=P,e.lanes=o,e;case F:return Ws(n,a,o,t);case j:return(e=Hs(24,n,t,a)).elementType=j,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case L:l=9;break e;case R:l=11;break e;case O:l=14;break e;case N:l=16,r=null;break e;case I:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,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=F,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=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(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 a=t.current,o=fs(),l=ps(a);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(va(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(va(u)){n=wa(n,u,s);break e}}n=s}else n=fa;return null===t.context?t.context=n:t.pendingContext=n,(t=co(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),fo(a,t),ms(a,l,o),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 au(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,so(t),e[ea]=n.current,Or(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function ou(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,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=tu(i);l.call(e)}}eu(t,i,e,a)}else{if(o=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 au(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=tu(i);s.call(e)}}ks((function(){eu(t,i,e,a)}))}return tu(i)}function lu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ou(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||ma.current)Fi=!0;else{if(0==(n&r)){switch(Fi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Mo(t);break;case 1:va(t.type)&&ka(t);break;case 4:Io(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;da(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(da(jo,1&jo.current),null!==(t=ol(e,t,n))?t.sibling:null);da(jo,1&jo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),da(jo,jo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Fi=0!=(16384&e.flags)}else Fi=!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,a=ga(t,pa.current),oo(t,n),a=li(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,va(r)){var o=!0;ka(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,so(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&vo(t,r,l,e),a.updater=bo,t.stateNode=a,a._reactInternals=t,Eo(t,r,e,n),t=Qi(null,t,r,!0,o,n)}else t.tag=0,ji(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===R)return 11;if(e===O)return 14}return 2}(a),e=Ya(a,e),o){case 0:t=Hi(null,t,a,e,n);break e;case 1:t=Gi(null,t,a,e,n);break e;case 11:t=Bi(null,t,a,e,n);break e;case 14:t=zi(null,t,a,Ya(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 1:return r=t.type,a=t.pendingProps,Gi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,uo(e,t),mo(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&($o=Vr(t.stateNode.containerInfo.firstChild),zo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=Lo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else ji(e,t,r,n),Vo();t=t.child}return t;case 5:return Mo(t),null===e&&Go(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Hr(r,a)?l=null:null!==o&&Hr(r,o)&&(t.flags|=16),qi(e,t),ji(e,t,l,n),t.child;case 6:return null===e&&Go(t),null;case 13:return Xi(e,t,n);case 4:return Io(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=To(t,null,r,n):ji(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 7:return ji(e,t,t.pendingProps,n),t.child;case 8:case 12:return ji(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(da(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=cr(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!ma.current){t=ol(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&o)){1===s.tag&&((c=co(-1,n&-n)).tag=2,fo(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ao(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}ji(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,oo(t,n),r=r(a=io(a,o.unstable_observedBits)),t.flags|=1,ji(e,t,r,n),t.child;case 14:return o=Ya(a=t.type,t.pendingProps),zi(e,t,a,o=Ya(a.type,o),r,n);case 15:return $i(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ya(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,va(r)?(e=!0,ka(t)):e=!1,oo(t,n),wo(t,r,a),Eo(t,r,a,n),Qi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},au.prototype.render=function(e){eu(e,this._internalRoot,null,null)},au.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;eu(null,e,null,(function(){t[ea]=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)}},at=function(e,t){return t()},Te=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 a=oa(r);if(!a)throw Error(i(90));Y(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ne=ws,Ie=function(e,t,n,r,a){var o=Ol;Ol|=4;try{return Qa(98,e.bind(null,t,n,r,a))}finally{0===(Ol=o)&&(Zl(),Va())}},De=function(){0==(49&Ol)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,qa())}))}Va()}(),Ds())},Me=function(e,t){var n=Ol;Ol|=2;try{return e(t)}finally{0===(Ol=n)&&(Zl(),Va())}};var su={Events:[ra,aa,oa,Pe,Oe,Ds,{current:!1}]},uu={findFiberByHostInstance:na,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{Sa=du.inject(cu),xa=du}catch(ge){}}t.hydrate=function(e,t,n){if(!ou(t))throw Error(i(200));return iu(null,e,t,!0,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,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(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(!o(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(!o(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(a&&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)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(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),a=n(5697),o=n.n(a),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,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}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},x=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},_=function(e){return S(e,"onChangeClientState")||function(){}},C=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)}),{})},T=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),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},L=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 a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[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]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},R=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},A=function(e){return Array.isArray(e)?e.join(""):e},P=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}},O=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},N=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=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}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},j=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=A(t);return a?"<"+e+' data-rh="true" '+a+">"+I(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===N.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=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,a=P(e.metaTags,y),o=P(t,v),i=P(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return j(g.META,a.priority,r)+" "+j(g.LINK,o.priority,r)+" "+j(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:j(g.BASE,t,r),bodyAttributes:j("bodyAttributes",n,r),htmlAttributes:j("htmlAttributes",a,r),link:j(g.LINK,c,r),meta:j(g.META,d,r),noscript:j(g.NOSCRIPT,o,r),script:j(g.SCRIPT,f,r),style:j(g.STYLE,i,r),title:j(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],$=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:{}}))},U=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Q=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},Z=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),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===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.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,a=e.linkTags,o=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=A(e)),Z(g.TITLE,t)}(c,d);var f={baseTag:Q(g.BASE,n),linkTags:Q(g.LINK,a),metaTags:Q(g.META,o),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),a=0;a<n;a++)r[a]=arguments[a];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,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:L(g.LINK,["rel","href"],e),metaTags:L(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:L(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:L(g.SCRIPT,["src","innerHTML"],e),styleTags:L(g.STYLE,["cssText"],e),title:x(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:R(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,W&&cancelAnimationFrame(W),t.defer?W=requestAnimationFrame((function(){V(t,(function(){W=null}))})):(V(t),W=null)):B&&(a=B(o)),r(a)},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()(O(this.props,"helmetData"),O(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,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),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,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=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,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(K,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().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,a=n?Symbol.for("react.portal"):60106,o=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 o: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 a: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=o,t.Lazy=g,t.Memo=h,t.Portal=a,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)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},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===o||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 a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(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 a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.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 o(a(a(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),o(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)}))}o(g,"propTypes",{report:s.func.isRequired}),o(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),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.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,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.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),a=n(5068),o=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),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.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=o.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(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,o.createElement("a",c)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.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,o.createElement(a,h)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=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,x=e.to,_=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),L=T?(0,r.LX)(n.pathname,{path:T,exact:h,sensitive:k,strict:E}):null,R=!!(y?y(L,n):L),A="function"==typeof m?m(R):m,P="function"==typeof S?S(R):S;R&&(A=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(" ")}(A,c),P=(0,l.Z)({},P,p));var O=(0,l.Z)({"aria-current":R&&a||null,className:A,style:P,to:i},C);return v!==b?O.ref=t||_:O.innerRef=_,o.createElement(g,O)}))}))},6775:(e,t,n)=>{"use strict";n.d(t,{AW:()=>_,F0:()=>k,rs:()=>P,s6:()=>w,LX:()=>x,k6:()=>N,TH:()=>I});var r=n(5068),a=n(7294),o=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=a.createContext||function(e,t){var n,o,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 a=n.prototype;return a.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):s,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.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 a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?s:t},a.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?s:e},a.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},a.getValue=function(){return this.context[i]?this.context[i].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return f.contextTypes=((o={})[i]=l().object,o),{Provider:d,Consumer:f}};const f=d;var p=n(2177),m=n(7462),h=n(4779),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 a.createElement(w.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var E={},S=0;function x(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,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 a=[],o={regexp:g()(e,a,t),keys:a};return S<1e4&&(r[e]=o,S++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],d=s.slice(1),f=e===c;return o&&!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 _=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.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?x(n.pathname,e.props):t.match,o=(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===a.Children.count(e)}(l)&&(l=null),a.createElement(w.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:s?a.createElement(s,o):u?u(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function C(e){return"/"===e.charAt(0)?e:"/"+e}function T(e,t){if(!e)return t;var n=C(e);return 0!==t.pathname.indexOf(n)?t:(0,m.Z)({},t,{pathname:t.pathname.substr(n.length)})}function L(e){return"string"==typeof e?e:(0,o.Ep)(e)}function R(e){return function(){(0,p.Z)(!1)}}function A(){}a.Component;var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(w.Consumer,null,(function(t){t||(0,p.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?x(o.pathname,(0,m.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var O=a.useContext;function N(){return O(y)}function I(){return O(w).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=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;a=d("react.element"),o=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,o={},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)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var _=/\/+/g;function C(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 T(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 a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,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(_,"$&/")+"/")+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+C(l=e[u],u);s+=T(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+=T(l=l.value,t,n,c=r+C(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 L(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function R(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 A={current:null};function P(){var e=A.current;if(null===e)throw Error(p(321));return e}var O={ReactCurrentDispatcher:A,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:L,forEach:function(e,t,n){L(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return L(e,(function(){t++})),t},toArray:function(e){return L(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=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)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_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=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:R}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return P().useCallback(e,t)},t.useContext=function(e,t){return P().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return P().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return P().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return P().useLayoutEffect(e,t)},t.useMemo=function(e,t){return P().useMemo(e,t)},t.useReducer=function(e,t,n){return P().useReducer(e,t,n)},t.useRef=function(e){return P().useRef(e)},t.useState=function(e){return P().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,a,o;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)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=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},o=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)},a=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<_(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>_(i,n))void 0!==s&&0>_(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>_(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],L=1,R=null,A=3,P=!1,O=!1,N=!1;function I(e){for(var t=S(T);null!==t;){if(null===t.callback)x(T);else{if(!(t.startTime<=e))break;x(T),t.sortIndex=t.expirationTime,E(C,t)}t=S(T)}}function D(e){if(N=!1,I(e),!O)if(null!==S(C))O=!0,n(M);else{var t=S(T);null!==t&&r(D,t.startTime-e)}}function M(e,n){O=!1,N&&(N=!1,a()),P=!0;var o=A;try{for(I(n),R=S(C);null!==R&&(!(R.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=R.callback;if("function"==typeof i){R.callback=null,A=R.priorityLevel;var l=i(R.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?R.callback=l:R===S(C)&&x(C),I(n)}else x(C);R=S(C)}if(null!==R)var s=!0;else{var u=S(T);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{R=null,A=o,P=!1}}var F=o;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(){O||P||(O=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return A},t.unstable_getFirstCallbackNode=function(){return S(C)},t.unstable_next=function(e){switch(A){case 1:case 2:case 3:var t=3;break;default:t=A}var n=A;A=t;try{return e()}finally{A=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=A;A=e;try{return t()}finally{A=n}},t.unstable_scheduleCallback=function(e,o,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:L++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(T,e),null===S(C)&&e===S(T)&&(N?a():N=!0,r(D,i-l))):(e.sortIndex=s,E(C,e),O||P||(O=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=A;return function(){var n=A;A=t;try{return e.apply(this,arguments)}finally{A=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},2177:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r="Invariant failed";function a(e,t){if(!e)throw new Error(r)}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},1688:(e,t,n)=>{"use strict";e.exports=n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Cogment",tagline:"Innovative open source AI platform developed by AI Redefined, designed to leverage the advent of AI to benefit humankind through human-AI collaboration.",url:"https://cogment.ai",baseUrl:"/",trailingSlash:!1,onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.png",organizationName:"cogment",projectName:"cogment-doc",deploymentBranch:"gh-pages",presets:[["classic",{docs:{sidebarPath:"/builds/ai-r/cogment/cogment-doc/sidebars.js",showLastUpdateTime:!0},blog:!1,theme:{customCss:["/builds/ai-r/cogment/cogment-doc/src/css/custom.css"]},pages:{path:"src/pages"},sitemap:{},googleAnalytics:{trackingID:"UA-146998765-2",anonymizeIP:!0}}]],themes:[["/builds/ai-r/cogment/cogment-doc/node_modules/@easyops-cn/docusaurus-search-local/dist/server/server/index.js",{hashed:!0}]],themeConfig:{image:"img/cogment_logo_meta.png",colorMode:{defaultMode:"light",disableSwitch:!0,respectPrefersColorScheme:!1},navbar:{logo:{alt:"Cogment",src:"img/cogment_logo.svg"},items:[{type:"doc",docId:"index",position:"right",label:"Documentation"},{position:"right",label:"Cogment Verse",to:"cogment_verse"},{href:"https://github.com/cogment",label:"GitHub",position:"right"},{type:"doc",docId:"community-channels",label:"Community",position:"right"}],hideOnScroll:!1},footer:{links:[{title:"Documentation",items:[{label:"Overview",to:"/docs"},{label:"Core concepts",to:"/docs/guide/core-concepts"},{label:"Development guide",to:"/docs/guide/development-guide"},{label:"CLI reference",to:"/docs/reference/cli"},{label:"Python SDK reference",to:"/docs/reference/python"},{label:"Javascript SDK reference",to:"/docs/reference/javascript"}]},{title:"Community",items:[{label:"Github",href:"https://github.com/cogment"},{label:"Discord",href:"https://discord.com/invite/QDxb9Fweqr"},{label:"Twitter",href:"https://twitter.com/AI_Redefined"},{label:"LinkedIn",href:"https://www.linkedin.com/company/ai-r"},{label:"Facebook",href:"https://www.facebook.com/AIRedefined/"}]},{title:"AI Redefined",items:[{label:"Homepage",href:"https://ai-r.com/"},{label:"Solutions",href:"https://ai-r.com/solutions/"},{label:"About AIR",href:"https://ai-r.com/about-air/"},{label:"News",href:"https://ai-r.com/news/"},{label:"Contact",href:"https://ai-r.com/contact/"}]}],copyright:"Copyright \xa9 2023 AI Redefined Inc.",style:"light"},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,i18n:{defaultLocale:"en",path:"i18n",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!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 a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/cogment_verse-238":{"__comp":"8ba33b25","__context":{"plugin":"c0fe6564"},"config":"5e9f5e1a"},"/search-6f9":{"__comp":"1a4e3797","__context":{"plugin":"ea8ad98b"}},"/docs-390":{"__comp":"1be78505","__context":{"plugin":"be6d912d"},"versionMetadata":"935f2afb"},"/docs-f31":{"__comp":"17896441","content":"c377a04b"},"/docs/community-channels-fe1":{"__comp":"17896441","content":"9b35c4f5"},"/docs/guide/core-concepts-4f9":{"__comp":"17896441","content":"9b824c8f"},"/docs/guide/development-guide-213":{"__comp":"17896441","content":"354f5e12"},"/docs/guide/implementation-recipes-3dc":{"__comp":"17896441","content":"6c6cf206"},"/docs/guide/implementation-recipes/configure-trial-from-controller-6e2":{"__comp":"17896441","content":"f012f959"},"/docs/guide/implementation-recipes/v2-migration-guide-024":{"__comp":"17896441","content":"fd5e6f38"},"/docs/guide/tutorial-4db":{"__comp":"17896441","content":"4f085710"},"/docs/guide/tutorial/actors-in-cogment-ffe":{"__comp":"17896441","content":"80b5be58"},"/docs/guide/tutorial/advanced-tutorials-c3b":{"__comp":"17896441","content":"6f2832ad"},"/docs/guide/tutorial/advanced-tutorials/directory-162":{"__comp":"17896441","content":"76d0d1d8"},"/docs/guide/tutorial/advanced-tutorials/human-player-34b":{"__comp":"17896441","content":"d9378b29"},"/docs/guide/tutorial/advanced-tutorials/web-client-878":{"__comp":"17896441","content":"1b039142"},"/docs/guide/tutorial/decision-making-f36":{"__comp":"17896441","content":"c24ec994"},"/docs/guide/tutorial/environment-in-cogment-bea":{"__comp":"17896441","content":"e848be99"},"/docs/guide/tutorial/setup-a29":{"__comp":"17896441","content":"85f318fb"},"/docs/license-f2d":{"__comp":"17896441","content":"ac5280f2"},"/docs/reference/cli-59e":{"__comp":"17896441","content":"c3c15305"},"/docs/reference/cli/directory/directory-client-4f4":{"__comp":"17896441","content":"710eddd2"},"/docs/reference/cli/directory/directory-server-705":{"__comp":"17896441","content":"50751b0a"},"/docs/reference/cli/launch-548":{"__comp":"17896441","content":"8f68e2ce"},"/docs/reference/cli/model-registry-16c":{"__comp":"17896441","content":"a57d321a"},"/docs/reference/cli/orchestrator-962":{"__comp":"17896441","content":"14f1d27f"},"/docs/reference/cli/status-77f":{"__comp":"17896441","content":"3f8274eb"},"/docs/reference/cli/trial-datastore/trial-datastore-client-255":{"__comp":"17896441","content":"b2327a6c"},"/docs/reference/cli/trial-datastore/trial-datastore-server-436":{"__comp":"17896441","content":"696a412b"},"/docs/reference/cli/web-proxy-f0b":{"__comp":"17896441","content":"d03751be"},"/docs/reference/cogment-v2-changes-452":{"__comp":"17896441","content":"92a77eef"},"/docs/reference/cogment-yaml-d31":{"__comp":"17896441","content":"7a87d372"},"/docs/reference/grpc-407":{"__comp":"17896441","content":"d04964af"},"/docs/reference/javascript-4e0":{"__comp":"17896441","content":"8f51b104"},"/docs/reference/parameters-f82":{"__comp":"17896441","content":"08714d8c"},"/docs/reference/python-d04":{"__comp":"17896441","content":"2d986b69"},"/docs/reference/python-enterprise/installation-3b7":{"__comp":"17896441","content":"25848ff4"},"/docs/reference/python-enterprise/runner-277":{"__comp":"17896441","content":"61fcde8c"},"/-7f6":{"__comp":"c4f5d8e4","__context":{"plugin":"c0fe6564"},"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/runtime~main.01110f9e.js b/assets/js/runtime~main.01110f9e.js new file mode 100644 index 0000000..cdcee5b --- /dev/null +++ b/assets/js/runtime~main.01110f9e.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,t,f,r,a,d={},c={};function o(e){var t=c[e];if(void 0!==t)return t.exports;var f=c[e]={id:e,loaded:!1,exports:{}};return d[e].call(f.exports,f,f.exports,o),f.loaded=!0,f.exports}o.m=d,o.c=c,e=[],o.O=(t,f,r,a)=>{if(!f){var d=1/0;for(i=0;i<e.length;i++){f=e[i][0],r=e[i][1],a=e[i][2];for(var c=!0,b=0;b<f.length;b++)(!1&a||d>=a)&&Object.keys(o.O).every((e=>o.O[e](f[b])))?f.splice(b--,1):(c=!1,a<d&&(d=a));if(c){e.splice(i--,1);var n=r();void 0!==n&&(t=n)}}return t}a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[f,r,a]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var a=Object.create(null);o.r(a);var d={};t=t||[null,f({}),f([]),f(f)];for(var c=2&r&&e;"object"==typeof c&&!~t.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((t=>d[t]=()=>e[t]));return d.default=()=>e,o.d(a,d),a},o.d=(e,t)=>{for(var f in t)o.o(t,f)&&!o.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:t[f]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,f)=>(o.f[f](e,t),t)),[])),o.u=e=>"assets/js/"+({53:"935f2afb",916:"a57d321a",928:"696a412b",931:"14f1d27f",966:"6c6cf206",1028:"80b5be58",1043:"c3c15305",1257:"76d0d1d8",1455:"d03751be",1909:"b2327a6c",2147:"1b039142",2229:"f012f959",2880:"9b824c8f",3106:"fd5e6f38",3922:"08714d8c",3953:"7a87d372",4007:"d9378b29",4195:"c4f5d8e4",4896:"85f318fb",5089:"8f68e2ce",5171:"61fcde8c",5307:"6f2832ad",5505:"92a77eef",5519:"c24ec994",5649:"c0fe6564",5767:"1d042041",5893:"d04964af",6971:"c377a04b",7107:"be6d912d",7221:"710eddd2",7330:"8f51b104",7918:"17896441",7920:"1a4e3797",8172:"e848be99",8403:"25848ff4",8529:"ac5280f2",8687:"50751b0a",8769:"2d986b69",9071:"354f5e12",9255:"9b35c4f5",9514:"1be78505",9690:"3f8274eb",9921:"4f085710",9985:"8ba33b25"}[e]||e)+"."+{53:"eaa09a8c",916:"7b1da2dc",928:"30d5fb90",931:"e67f3f33",966:"4874a857",1028:"7a80df6d",1043:"0d717cd1",1257:"fef871bb",1455:"3d85882f",1909:"2d13b65b",2147:"34999ad0",2229:"ad12eb4f",2880:"1c11dbd9",3106:"65b6ada4",3922:"8066bd98",3953:"7e5409a8",4007:"6db302b8",4195:"75997564",4698:"8c4037a9",4896:"18658faf",4972:"9c4c5fed",5089:"68e819b0",5171:"4dd88737",5307:"e5b5393c",5505:"3834a1d4",5519:"1b981edd",5649:"fc79d8f6",5767:"3353ac3b",5893:"dad4b03c",6780:"2e464230",6945:"46b11133",6971:"dee11c26",7107:"6d137fe3",7221:"97c3fcd9",7330:"3158977f",7918:"e1ad11d7",7920:"2adc3808",8172:"fe19ea8a",8403:"57f5c5cf",8529:"476e8c59",8687:"2a9afa79",8769:"356337e0",8894:"2f96187b",9071:"28413fb0",9255:"4724485f",9514:"b5adb11b",9690:"7b2c5f8f",9921:"99943333",9985:"993fc35e"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a="cogment-doc:",o.l=(e,t,f,d)=>{if(r[e])r[e].push(t);else{var c,b;if(void 0!==f)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")==a+f){c=u;break}}c||(b=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,o.nc&&c.setAttribute("nonce",o.nc),c.setAttribute("data-webpack",a+f),c.src=e),r[e]=[t];var l=(t,f)=>{c.onerror=c.onload=null,clearTimeout(s);var a=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),a&&a.forEach((e=>e(f))),t)return t(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),b&&document.head.appendChild(c)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918","935f2afb":"53",a57d321a:"916","696a412b":"928","14f1d27f":"931","6c6cf206":"966","80b5be58":"1028",c3c15305:"1043","76d0d1d8":"1257",d03751be:"1455",b2327a6c:"1909","1b039142":"2147",f012f959:"2229","9b824c8f":"2880",fd5e6f38:"3106","08714d8c":"3922","7a87d372":"3953",d9378b29:"4007",c4f5d8e4:"4195","85f318fb":"4896","8f68e2ce":"5089","61fcde8c":"5171","6f2832ad":"5307","92a77eef":"5505",c24ec994:"5519",c0fe6564:"5649","1d042041":"5767",d04964af:"5893",c377a04b:"6971",be6d912d:"7107","710eddd2":"7221","8f51b104":"7330","1a4e3797":"7920",e848be99:"8172","25848ff4":"8403",ac5280f2:"8529","50751b0a":"8687","2d986b69":"8769","354f5e12":"9071","9b35c4f5":"9255","1be78505":"9514","3f8274eb":"9690","4f085710":"9921","8ba33b25":"9985"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(t,f)=>{var r=o.o(e,t)?e[t]:void 0;if(0!==r)if(r)f.push(r[2]);else if(/^(1303|532)$/.test(t))e[t]=0;else{var a=new Promise(((f,a)=>r=e[t]=[f,a]));f.push(r[2]=a);var d=o.p+o.u(t),c=new Error;o.l(d,(f=>{if(o.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var a=f&&("load"===f.type?"missing":f.type),d=f&&f.target&&f.target.src;c.message="Loading chunk "+t+" failed.\n("+a+": "+d+")",c.name="ChunkLoadError",c.type=a,c.request=d,r[1](c)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,f)=>{var r,a,d=f[0],c=f[1],b=f[2],n=0;if(d.some((t=>0!==e[t]))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(b)var i=b(o)}for(t&&t(f);n<d.length;n++)a=d[n],o.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return o.O(i)},f=self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[];f.forEach(t.bind(null,0)),f.push=t.bind(null,f.push.bind(f))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.f414b314.js b/assets/js/runtime~main.f414b314.js deleted file mode 100644 index e90f12c..0000000 --- a/assets/js/runtime~main.f414b314.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,f,t,r,a,c={},d={};function o(e){var f=d[e];if(void 0!==f)return f.exports;var t=d[e]={id:e,loaded:!1,exports:{}};return c[e].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}o.m=c,o.c=d,e=[],o.O=(f,t,r,a)=>{if(!t){var c=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],a=e[i][2];for(var d=!0,b=0;b<t.length;b++)(!1&a||c>=a)&&Object.keys(o.O).every((e=>o.O[e](t[b])))?t.splice(b--,1):(d=!1,a<c&&(c=a));if(d){e.splice(i--,1);var n=r();void 0!==n&&(f=n)}}return f}a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[t,r,a]},o.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return o.d(f,{a:f}),f},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var a=Object.create(null);o.r(a);var c={};f=f||[null,t({}),t([]),t(t)];for(var d=2&r&&e;"object"==typeof d&&!~f.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((f=>c[f]=()=>e[f]));return c.default=()=>e,o.d(a,c),a},o.d=(e,f)=>{for(var t in f)o.o(f,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:f[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((f,t)=>(o.f[t](e,f),f)),[])),o.u=e=>"assets/js/"+({53:"935f2afb",916:"a57d321a",928:"696a412b",931:"14f1d27f",966:"6c6cf206",1028:"80b5be58",1043:"c3c15305",1257:"76d0d1d8",1455:"d03751be",1909:"b2327a6c",2147:"1b039142",2229:"f012f959",2880:"9b824c8f",3106:"fd5e6f38",3922:"08714d8c",3953:"7a87d372",4007:"d9378b29",4195:"c4f5d8e4",4896:"85f318fb",5089:"8f68e2ce",5171:"61fcde8c",5219:"ea8ad98b",5307:"6f2832ad",5505:"92a77eef",5519:"c24ec994",5649:"c0fe6564",5893:"d04964af",6971:"c377a04b",7107:"be6d912d",7221:"710eddd2",7330:"8f51b104",7918:"17896441",7920:"1a4e3797",8172:"e848be99",8403:"25848ff4",8529:"ac5280f2",8687:"50751b0a",8769:"2d986b69",9071:"354f5e12",9255:"9b35c4f5",9514:"1be78505",9690:"3f8274eb",9921:"4f085710",9985:"8ba33b25"}[e]||e)+"."+{53:"eaa09a8c",916:"7b1da2dc",928:"30d5fb90",931:"e67f3f33",966:"4874a857",1028:"7a80df6d",1043:"0d717cd1",1257:"fef871bb",1455:"3d85882f",1909:"2d13b65b",2147:"34999ad0",2229:"ad12eb4f",2880:"1c11dbd9",3106:"65b6ada4",3922:"8066bd98",3953:"7e5409a8",4007:"6db302b8",4195:"c51554bf",4698:"8c4037a9",4896:"18658faf",4972:"d4ca4ead",5089:"68e819b0",5171:"4dd88737",5219:"fca62872",5307:"e5b5393c",5505:"3834a1d4",5519:"1b981edd",5525:"81443133",5649:"fc79d8f6",5893:"dad4b03c",6971:"dee11c26",7107:"6d137fe3",7221:"97c3fcd9",7330:"1586c228",7918:"57c09338",7920:"2e34777b",8172:"fe19ea8a",8403:"57f5c5cf",8443:"1c75e53c",8529:"57860295",8687:"2a9afa79",8769:"356337e0",9071:"28413fb0",9255:"4724485f",9514:"3bffa4b3",9690:"7b2c5f8f",9921:"99943333",9985:"536d428e"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),r={},a="cogment-doc:",o.l=(e,f,t,c)=>{if(r[e])r[e].push(f);else{var d,b;if(void 0!==t)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")==a+t){d=u;break}}d||(b=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,o.nc&&d.setAttribute("nonce",o.nc),d.setAttribute("data-webpack",a+t),d.src=e),r[e]=[f];var l=(f,t)=>{d.onerror=d.onload=null,clearTimeout(s);var a=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),a&&a.forEach((e=>e(t))),f)return f(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),b&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918","935f2afb":"53",a57d321a:"916","696a412b":"928","14f1d27f":"931","6c6cf206":"966","80b5be58":"1028",c3c15305:"1043","76d0d1d8":"1257",d03751be:"1455",b2327a6c:"1909","1b039142":"2147",f012f959:"2229","9b824c8f":"2880",fd5e6f38:"3106","08714d8c":"3922","7a87d372":"3953",d9378b29:"4007",c4f5d8e4:"4195","85f318fb":"4896","8f68e2ce":"5089","61fcde8c":"5171",ea8ad98b:"5219","6f2832ad":"5307","92a77eef":"5505",c24ec994:"5519",c0fe6564:"5649",d04964af:"5893",c377a04b:"6971",be6d912d:"7107","710eddd2":"7221","8f51b104":"7330","1a4e3797":"7920",e848be99:"8172","25848ff4":"8403",ac5280f2:"8529","50751b0a":"8687","2d986b69":"8769","354f5e12":"9071","9b35c4f5":"9255","1be78505":"9514","3f8274eb":"9690","4f085710":"9921","8ba33b25":"9985"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(f,t)=>{var r=o.o(e,f)?e[f]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var a=new Promise(((t,a)=>r=e[f]=[t,a]));t.push(r[2]=a);var c=o.p+o.u(f),d=new Error;o.l(c,(t=>{if(o.o(e,f)&&(0!==(r=e[f])&&(e[f]=void 0),r)){var a=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;d.message="Loading chunk "+f+" failed.\n("+a+": "+c+")",d.name="ChunkLoadError",d.type=a,d.request=c,r[1](d)}}),"chunk-"+f,f)}},o.O.j=f=>0===e[f];var f=(f,t)=>{var r,a,c=t[0],d=t[1],b=t[2],n=0;if(c.some((f=>0!==e[f]))){for(r in d)o.o(d,r)&&(o.m[r]=d[r]);if(b)var i=b(o)}for(f&&f(t);n<c.length;n++)a=c[n],o.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return o.O(i)},t=self.webpackChunkcogment_doc=self.webpackChunkcogment_doc||[];t.forEach(f.bind(null,0)),t.push=f.bind(null,t.push.bind(t))})()})(); \ No newline at end of file diff --git a/cogment_verse.html b/cogment_verse.html index da134c0..679f225 100644 --- a/cogment_verse.html +++ b/cogment_verse.html @@ -3,15 +3,18 @@ <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.4.0"> -<title data-rh="true">Cogment Verse | Cogment +Cogment Verse | Cogment - - - + + + + + +
-

Research platform for Human-in-the-loop learning & Multi-Agent Reinforcement Learning

Start building & training agents with HILL and MARL techniques within Gym, Petting Zoo, and more...

Video Demo

Key features

Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source Cogment platform for environments following the OpenAI Gym mold, making it easy to get started.

Simply clone the repo and start training.

Atari Double Dunk - From Petting ZooGo - From Petting ZooAtari Montezuma's Revenge - From Open AI GymLunar Lander - From Open AI Gym

HILL and MARL Training

Our SDK includes base implementations for multiple RL algorithms such as DQN, TD3, A2C and PPO for both single- and multi-agent reinforcement learning (MARL). For human-in-the-loop learning, Cogment Verse includes different paradigms like learning from demonstrations (behavior cloning), learning from human interventions, and learning from explicit human feedback (RLHF). More importantly, the SDK makes it easy to implement any asynchronous centralized training / decentralized execution algorithm.

Interactive Web Application

A built-in interactive web application enables seamless human participation in episodes during the training and validation processes. Additional environments can be made interactive with very little web development required..

Collaboration Patterns

Library of predefined roles for agents or humans facilitating the implementation of multiple collaboration patterns: co-players, teacher/student dual control, evaluators, etc.

Extensive Environment Library

The existing environment library includes the standard OpenAI Gym environments as well as board games, card games, and other multi-agent environments from Petting Zoo. Other environments are gradually being added, such as Isaac Gym or Overcooked-AI. Implementing your own interactive custom environments is also quite straightforward.

Experiments Management

Monitor and manage reproducible experiments, thanks to:

Citation

If you use Cogment Verse in your research, please cite our demo paper appearing in AAMAS 2023 proceedings:

@inproceedings{cogment_verse_2023,
+

Research platform for Human-in-the-loop learning & Multi-Agent Reinforcement Learning

Start building & training agents with HILL and MARL techniques within Gym, Petting Zoo, and more...

Video Demo

Key features

Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source Cogment platform for environments following the OpenAI Gym mold, making it easy to get started.

Simply clone the repo and start training.

Atari Double Dunk - From Petting ZooGo - From Petting ZooAtari Montezuma's Revenge - From Open AI GymLunar Lander - From Open AI Gym

HILL and MARL Training

Our SDK includes base implementations for multiple RL algorithms such as DQN, TD3, A2C and PPO for both single- and multi-agent reinforcement learning (MARL). For human-in-the-loop learning, Cogment Verse includes different paradigms like learning from demonstrations (behavior cloning), learning from human interventions, and learning from explicit human feedback (RLHF). More importantly, the SDK makes it easy to implement any asynchronous centralized training / decentralized execution algorithm.

Interactive Web Application

A built-in interactive web application enables seamless human participation in episodes during the training and validation processes. Additional environments can be made interactive with very little web development required..

Collaboration Patterns

Library of predefined roles for agents or humans facilitating the implementation of multiple collaboration patterns: co-players, teacher/student dual control, evaluators, etc.

Extensive Environment Library

The existing environment library includes the standard OpenAI Gym environments as well as board games, card games, and other multi-agent environments from Petting Zoo. Other environments are gradually being added, such as Isaac Gym or Overcooked-AI. Implementing your own interactive custom environments is also quite straightforward.

Experiments Management

Monitor and manage reproducible experiments, thanks to:

Citation

If you use Cogment Verse in your research, please cite our demo paper appearing in AAMAS 2023 proceedings:

@inproceedings{cogment_verse_2023,
   title={Hiking up that HILL with Cogment-Verse: Train \& Operate Multi-agent Systems Learning from Humans},
   author={Gottipati, Sai Krishna and Nguyen, Luong-Ha and Mars, Clod{\'e}ric and Taylor, Matthew E},
   booktitle={Proceedings of the 2023 International Conference on Autonomous Agents and Multiagent Systems},
@@ -19,7 +22,7 @@
   year={2023}
 }
 
- - + + \ No newline at end of file diff --git a/docs.html b/docs.html index ca50276..018ebca 100644 --- a/docs.html +++ b/docs.html @@ -3,18 +3,21 @@ -Overview | Cogment +Overview | Cogment - - - + + + + + +
-

What is Cogment?

Cogment is the first open source platform designed to address the challenges of continuously training humans and AI together. Cogment is developed by AI Redefined to enable AI practitioners to build, train and operate AI agents in simulated or real environments shared with humans. Fundamentally, Cogment is a set of tools designed to make it easier and more scalable to coordinate how Agents share information with each other and the Environment in which they operate.

Cogment is designed around the idea of sequential interactions between Actors and their Environment, as in Reinforcement Learning (RL). Cogment uses distributed micro-services to manage these interactions, so that different components can be run independently and asynchronously. This approach makes for more efficient and scalable solutions. It also means that Cogment can handle many actors in the same system, which makes it a great solution for implementing Multi-Agent Systems (MAS) and Multi-Agent Reinforcement Learning (MARL).

Cogment treats human users and computer-based agents as the same from a high level point of view, rendering them interchangeable. This makes Cogment well-adapted to any kind of Human-In-the-Loop Learning (HILL) process, like Imitation Learning (IL) / Behavior Cloning (BC), RL from human feedback (RLHF) or even Active Learning. This allows computer-based agents to make use of human feedback and ultimately speed up the process of learning.

See our white paper for more details.

How does Cogment work?

Cogment works by separating the different components of sequential decision-making tasks into different computational streams, and coordinating the results of these computations only when necessary. That is, different parts of the task are run as distributed microservices, and information is passed between services via gRPC protocol. This is made possible by a set of Cogment Core Components that can be used through a Command Line Interface (CLI). These components are packaged in an easily distributable, cross-platform, standalone executable.

The full suite of Cogment tooling also includes software development kits (SDKs) for Python and Javascript. These SDKs interface with the +

What is Cogment?

Cogment is the first open source platform designed to address the challenges of continuously training humans and AI together. Cogment is developed by AI Redefined to enable AI practitioners to build, train and operate AI agents in simulated or real environments shared with humans. Fundamentally, Cogment is a set of tools designed to make it easier and more scalable to coordinate how Agents share information with each other and the Environment in which they operate.

Cogment is designed around the idea of sequential interactions between Actors and their Environment, as in Reinforcement Learning (RL). Cogment uses distributed micro-services to manage these interactions, so that different components can be run independently and asynchronously. This approach makes for more efficient and scalable solutions. It also means that Cogment can handle many actors in the same system, which makes it a great solution for implementing Multi-Agent Systems (MAS) and Multi-Agent Reinforcement Learning (MARL).

Cogment treats human users and computer-based agents as the same from a high level point of view, rendering them interchangeable. This makes Cogment well-adapted to any kind of Human-In-the-Loop Learning (HILL) process, like Imitation Learning (IL) / Behavior Cloning (BC), RL from human feedback (RLHF) or even Active Learning. This allows computer-based agents to make use of human feedback and ultimately speed up the process of learning.

See our white paper for more details.

How does Cogment work?

Cogment works by separating the different components of sequential decision-making tasks into different computational streams, and coordinating the results of these computations only when necessary. That is, different parts of the task are run as distributed microservices, and information is passed between services via gRPC protocol. This is made possible by a set of Cogment Core Components that can be used through a Command Line Interface (CLI). These components are packaged in an easily distributable, cross-platform, standalone executable.

The full suite of Cogment tooling also includes software development kits (SDKs) for Python and Javascript. These SDKs interface with the Core Components in order to more easily work with Cogment to build out the specifics of your application, such as the simulated Environment you want to work in, the Actors involved, and the details of how you want them to interact in a Trial.

Cogment components

What are the Core Components of Cogment?

The Core services, run through the Cogment CLI are:

  • The Orchestrator is the heart of a Cogment app, which manages the operations and interactions of different components,
  • The Trial Datastore, which stores and makes available data generated while running Cogment,
  • The Model Registry, which stores different versions of trained AI models to be used by Cogment agents.
  • The Directory, where Cogment services are registered and can be easily found by clients and other services.

The different Cogment components and how they interact can be summarized in the following diagram:

summary of Cogment Components

(The Directory is missing from this diagram, as it mainly works to facilitate the process of connecting all of the different services to each other.)

What components are implemented with SDKs?

Software development kits (SDKs) are available in both Python and Javascript.

These can be used to build Cogment application services like Actors and simulated Environments, or client components such as an interface for a human user to interact with the application. Additionally, the SDKs are used to specify how Cogment trials (eg. interactions between Actors and their Environment) should be configured and run with the Trial Runner.

For more details, please see the dedicated reference page for the SDK in your preferred programming language. Stay tuned for development of new SDKs!

If you would like to get a more hands-on introduction to the details of how Cogment works, you can follow our tutorial.

What is Cogment used for?

Cogment is especially well suited to address multi-agent contexts, regardless of their learning mechanisms (or, for that matter, whether they are of the learning kind or not).

Cogment may be a suitable approach if you want to:

  • Easily bootstrap a given system using human users, heuristic agents, or both, then transitioning seamlessly to an ML implementation
  • Utilize multiple ML approaches to contribute to a single role, which require balancing their contributions by some criteria (such as some rule set or performance metrics, for example)
  • Comparing different agent types/implementations without requiring any change in the implementation of the environment

Getting Started with Cogment

Before diving right in, we recommend taking the time to read the core concepts section which details the terminology we use for several critical concepts of Cogment. You can then proceed to read on how to install the platform.

To get your hands dirty, proceed to the tutorial for an introduction to all things Cogment. While Cogment can do many things, this tutorial aims to be a first introduction to the general principles of Cogment. The tutorial builds an application using the Python SDK to interface with Cogment. For more information about the range of features Cogment can offer, see the Development Guide or get connected with us.

Citations

If you use Cogment in your research, please cite our white paper as follows:

@misc{air2021cogment,
title={Cogment: Open Source Framework For Distributed Multi-actor Training, Deployment & Operations},
author={AI Redefined and Sai Krishna Gottipati and Sagar Kurandwad and Clodéric Mars and Gregory Szriftgiser and
François Chabot},
year={2021},
eprint={2106.11345},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
- - + + \ No newline at end of file diff --git a/docs/community-channels.html b/docs/community-channels.html index 5493768..139722f 100644 --- a/docs/community-channels.html +++ b/docs/community-channels.html @@ -3,17 +3,20 @@ -Community | Cogment +Community | Cogment - - - + + + + + +
-

Community

If you have questions about Cogment, a project you are working on or would like to start with Cogment, or would like to become more involved in the open-source development of Cogment, we invite you to join our Discord server. Here members of the Cogment community can come together to chat by voice or text, ask questions, and share solutions. We look forward to connecting with you!

Interact with Us

We'd love to hear from you about any project you're working on with Cogment or +

Community

If you have questions about Cogment, a project you are working on or would like to start with Cogment, or would like to become more involved in the open-source development of Cogment, we invite you to join our Discord server. Here members of the Cogment community can come together to chat by voice or text, ask questions, and share solutions. We look forward to connecting with you!

Interact with Us

We'd love to hear from you about any project you're working on with Cogment or Cogment Verse. Reach out on the Discord server to discuss your project, report any bugs you might find, or propose any fixes you think might improve our platform.

Reporting Bugs

If you do need to report a bug, you can do so on the issues page for Cogment or Cogment Verse. It's useful to check this list first to see if your issue has been raised already before submitting a new one.

When filing an issue, make sure to answer these five questions:

  1. What version of cogment are you using (check using cogment version)?
  2. What operating system and processor architecture are you using?
  3. What did you do?
  4. What did you expect to see?
  5. What did you see instead?

Security Disclosures

If you find a security vulnerability, do NOT open an issue. Any security issues should be submitted directly to dev+security@ai-r.com. In order to determine whether you are dealing with a security issue, ask yourself these two questions:

  • Can I access something that's not mine, or something I shouldn't have access to?
  • Can I disable something for other people?

If the answer to either of those two questions are "yes", then you're probably dealing with a security issue. Note that even if you answer "no" to both questions, you may still be dealing with a security issue, so if you're unsure, just email us at dev+security@ai-r.com.

Participate in Cogment Open Source

If you are interested in contributing to Cogment or Cogment Verse, please get in touch with the team on the Discord server and share what you're thinking about.

You'll need to sign a Contributor License Agreement (CLA) so that you can retain ownership of the code submitted and AI Redefined has legal rights to use the contribution. Once signed, a CLA covers all Cogment projects. Get a CLA by emailing dev+cla@ai-r.com.

To participate in the Cogment Open Source community, please make sure you follow our Code of Conduct guidelines.

If you want to implement a feature or bugfix for an outstanding issue, search for that issue on the dedicated issues page for Cogment or Cogment Verse and comment that you are going to work on this piece. If you need more context on a particular issue, reach out on our Discord server.

- - + + \ No newline at end of file diff --git a/docs/guide/core-concepts.html b/docs/guide/core-concepts.html index 96df4bb..d75e3ac 100644 --- a/docs/guide/core-concepts.html +++ b/docs/guide/core-concepts.html @@ -3,21 +3,24 @@ -Core Concepts | Cogment +Core Concepts | Cogment - - - + + + + + +
-

Core Concepts

Cogment is built around concepts adapted from multi-agent systems (actors, environment), Markov decision processes (action and observation space) and reinforcement learning (trials, rewards). This page aims to explain these concepts at a high level and give some idea of how they are used in Cogment.

Basic components of Cogment

At the most basic level, Cogment facilitates interactions between Actors and their Environment. Actors take in observations of the Environment as input, and use these to generate actions as outputs. The Environment takes actions as inputs, and outputs the consequences of that action, such as the next observation and, optionally, a numerical feedback signal about how good or bad the action was (eg. reward).

Cogment is designed so that components like the Environment and the Actors can be run as distributed services with easily interchangeable implementations, and with a system to enable efficient transfer of information between services.

Environment

The Environment is the context in which Cogment Trials are run. The Environment is the main integration point between Cogment and an external system, either a simulation or a real world system.

In the most general terms, the Environment is the world in which a human or computer agent (eg. Actors) can take actions. For example, in the Atari game Pong, the Environment is the simulated arena in which players control "paddles" to keep a "ball" within the bounds of the screen. The Environment also includes the set of rules for what actions exist (eg. you can move your paddles up and down, but not left and right) and also how the game evolves as a consequence of certain actions being taken.

State and Observation Spaces

The Environment can be in different states. The set of all possible states the Environment could be in is called the "state space". Usually an Actor needs to have some knowledge about the current state of the world they're in to make decisions about what action should be taken. The Actor doesn't always get access to every detail about the current state of the Environment, but rather gets observations of the current state. The set of all possible observations an Actor could see is called "observation space". In Cogment, we only explicitly deal with observations of the Environment.

How the Environment works in Cogment

In Cogment, the basic outline of the Environment is given in the specification file, which configures what parameters are important for setting up the Environment. The general structure of how an Environment works (eg. what info it takes as input and what it generates as output) is specified in the Environment implementation, along with the rules of how the Environment responds to a given action and produces subsequent observations for the Actor(s). The Environment implementation is accessed by the Orchestrator to run the Environment during Trials.

Using one of Cogment's SDKs, the Environment can be implemented as a function integrating a "state of the world" with the Trial. This function performs the following tasks during the Trial:

  • Generate Observations from the current state of the world, for example retrieving the visible objects from a 3D simulation.
  • Apply the Actions, thus updating the state of the world, for example changing the velocity of a moving vehicle in a race simulation.
  • Evaluate the performance of Actors and send them Rewards, for example by checking if a vehicle crossed the finish line in a race simulation.

Actors

Actors are roles that can do stuff, eg. Actors take actions which may affect the state of the Environment. In Cogment, Actors can be either humans or computer-based agents and effectively operate identically.

Action Space

Actors take Observations about the current state of the Environment as inputs, and produce actions as outputs. The set of all actions that can be produced is called the "Action space".

Each Actor can get a different Observation from the Environment representing what it perceives about the state of the world. The action represents the decision the Actor takes upon receiving this observation. The action selected by the Actor is then applied by the Environment. Cogment leverages this discrete update to orchestrate the execution of the components and the dispatch of data between them.

How Actors work in Cogment

Concepts of Actors in Cogment

Cogment allocates a dedicated gRPC service to run the computations of Actors, which we call the "Actor Service". It can also refer to the computational node running this service. This service effectively offers the registered actor implementations for use in trials.

The Actor class specifies what kinds of inputs and outputs to expect. The class definition specifies what an actor is.

The Actor implementation is the function the Actor uses to compute what action to take given some input information. If we want to have a bunch of different Actors that all behave similarly (take same kind of inputs and produce same kind of outputs) we can define an Actor class and different instances of that class can use different implementations.

Client and Service Actors

An Actor might be controlled either by a software agent, or by a Human. Whichever the case, the process of generating actions based on observations remains the same, and the Environment treats them the same. Some Actors connect to the trial (we call them "client" Actors) and others will wait for the trial to connect to them (we call these "service" Actors). Service Actors are run on a designated computational node called the Actor Service.

Interactions between Actors and the Environment

Basic concepts

The Observations and Actions we discussed above are the key pieces of information exchanged between Actors and the Environment.

  • Environments take actions as an input and output observations,
  • Actors take observations as an input and output actions.

As discussed before, the Environment can also provide feedback to the Actor about their actions in the form of a numerical reward signal, but it is not strictly necessary for the Environment to do so.

In Cogment, Actors and the Environment exchange information via the Orchestrator - a core component of Cogment which facilitates the interaction of distributed services. To do so, the observation and action space for the Actors and the Environment are defined as typed data structures. Cogment uses Protocol Buffers as a format to specify these data structures. This typing defines both an interface contract between the Actors and the Environment and helps convey semantic information, thus facilitating the independent design and development of both. In practice this enables the Actors and Environment to be run as separate services (eg. on separate computational nodes) and have the Orchestrator pass these protobuf messages between the different services as needed.

Trials

Trials are how a Cogment deployment runs the sequential interactions between Actors and their Environment. A trial is defined by the participating Actors and the host Environment. As a concept, Trials are quite close to Reinforcement Learning's Episodes, i.e. all the states that come between an initial state and a terminal state. However, because Cogment can be used outside of an RL context, we prefer using the more generic term of Trial.

How Trials work in Cogment

Trials are started by clients connecting to Cogment. A trial can end either by being terminated from a client or end by itself, for example once a specific state of the Environment is reached.

During the trial:

  • The Environment generates observations of its internal state and sends them to the Actors.
  • Given these observations, each Actor chooses and sends an action.
  • The Environment receives the actions and updates its internal state.
  • Rewards can be sent to the Actors from either the Environment or other Actors. A reward is a measure of an actor’s performance within the environment at a given point in time during the trial.
  • Actors receive rewards if at least one was sent to them.
  • A log of the activity during the trial (observations, actions, rewards) is produced and can be stored.

The Specification file

The configurations for how trial elements are set up are defined in a YAML specification file typically called cogment.yaml. This file details how elements of the project work, including its actor classes and their action & observation spaces. You can learn more about the specification file in the dedicated reference page.


Cogment Architecture

Running trials with Cogment usually involves the deployment of a cluster of services and clients. These components are either provided by the Cogment framework, depicted below in blue, or implemented for a particular project with Software Development Kits (SDKs) in either Python or Javascript, depicted below in orange.

Cogment Architecture

User implemented components use one of the Cogment SDKs or directly implement the underlying protocol. Components communicate using gRPC, clients can also communicate in a web-friendly way using gRPC-Web and grpcwebproxy.

Context

The Context is a point of entry for Cogment to interface with the different services through SDKs. See also the SDK documentation for Context (Python | JavaScript).

Orchestrator

The Orchestrator is the glue that binds everything together. It is responsible for running the Trials and contacting other services as needed to ensure their execution.

The key aspect of Cogment's orchestrator is its capacity to handle a number of network connections in parallel while keeping its responsiveness.

Controller

The Controller is a key part of using Cogment, it initiates communication with the Orchestrator to control the execution of Trials. It is responsible for starting Trials, retrieving and watching their state (including the end of the trial), or requesting trial termination. You can see more in the Python SDK documentation for the Controller. The Controller is created by the Context.

Environment

The Environment implementation is accessed by the Orchestrator to run the Environment during Trials.

Using one of Cogment's SDKs, the Environment can be implemented as a function integrating a "state of the world" with the Trial. This function performs the following tasks during the Trial:

  • Generate Observations from the current state of the world, for example retrieving the visible objects from a 3D simulation.
  • Apply the Actions, thus updating the state of the world, for example changing the velocity of a moving vehicle in a race simulation.
  • Evaluate the performance of Actors and send them Rewards, for example by checking if a vehicle crossed the finish line in a race simulation.

Actors

Cogment handles Actors in two different ways: either as a service Actor or as a client Actor. Service Actor implementations are accessed by the Orchestrator during Trials, while Client Actor implementations join a Trial by initiating the communication with the Orchestrator. Client Actors implementations can reach a Cogment deployment through NAT traversal. This makes them particularly well-suited to implement human-driven Actors, in web-browsers for example.

Using one of Cogment's SDKs Actors can be implemented as functions handling the integration between a decision-making Actor (software agent or Human) and the Trial. This function performs the following tasks during the Trial:

  • Receive Observations and do Actions in response, for example vectorizing the retrieved observation, feeding it to a neural network and converting its output to an Action.
  • Receive Rewards, for example using them to update a neural network.
  • Optionally: send and receive direct messages.

Please note that rewards can also be retrieved after the fact using a datalog.

Additional components

On top of the core components described above, a Cogment deployment can include these additional ones:

  • Datalog services can be used to listen to the activity during a trial (actions, observations, rewards, messages) +

    Core Concepts

    Cogment is built around concepts adapted from multi-agent systems (actors, environment), Markov decision processes (action and observation space) and reinforcement learning (trials, rewards). This page aims to explain these concepts at a high level and give some idea of how they are used in Cogment.

    Basic components of Cogment

    At the most basic level, Cogment facilitates interactions between Actors and their Environment. Actors take in observations of the Environment as input, and use these to generate actions as outputs. The Environment takes actions as inputs, and outputs the consequences of that action, such as the next observation and, optionally, a numerical feedback signal about how good or bad the action was (eg. reward).

    Cogment is designed so that components like the Environment and the Actors can be run as distributed services with easily interchangeable implementations, and with a system to enable efficient transfer of information between services.

    Environment

    The Environment is the context in which Cogment Trials are run. The Environment is the main integration point between Cogment and an external system, either a simulation or a real world system.

    In the most general terms, the Environment is the world in which a human or computer agent (eg. Actors) can take actions. For example, in the Atari game Pong, the Environment is the simulated arena in which players control "paddles" to keep a "ball" within the bounds of the screen. The Environment also includes the set of rules for what actions exist (eg. you can move your paddles up and down, but not left and right) and also how the game evolves as a consequence of certain actions being taken.

    State and Observation Spaces

    The Environment can be in different states. The set of all possible states the Environment could be in is called the "state space". Usually an Actor needs to have some knowledge about the current state of the world they're in to make decisions about what action should be taken. The Actor doesn't always get access to every detail about the current state of the Environment, but rather gets observations of the current state. The set of all possible observations an Actor could see is called "observation space". In Cogment, we only explicitly deal with observations of the Environment.

    How the Environment works in Cogment

    In Cogment, the basic outline of the Environment is given in the specification file, which configures what parameters are important for setting up the Environment. The general structure of how an Environment works (eg. what info it takes as input and what it generates as output) is specified in the Environment implementation, along with the rules of how the Environment responds to a given action and produces subsequent observations for the Actor(s). The Environment implementation is accessed by the Orchestrator to run the Environment during Trials.

    Using one of Cogment's SDKs, the Environment can be implemented as a function integrating a "state of the world" with the Trial. This function performs the following tasks during the Trial:

    • Generate Observations from the current state of the world, for example retrieving the visible objects from a 3D simulation.
    • Apply the Actions, thus updating the state of the world, for example changing the velocity of a moving vehicle in a race simulation.
    • Evaluate the performance of Actors and send them Rewards, for example by checking if a vehicle crossed the finish line in a race simulation.

    Actors

    Actors are roles that can do stuff, eg. Actors take actions which may affect the state of the Environment. In Cogment, Actors can be either humans or computer-based agents and effectively operate identically.

    Action Space

    Actors take Observations about the current state of the Environment as inputs, and produce actions as outputs. The set of all actions that can be produced is called the "Action space".

    Each Actor can get a different Observation from the Environment representing what it perceives about the state of the world. The action represents the decision the Actor takes upon receiving this observation. The action selected by the Actor is then applied by the Environment. Cogment leverages this discrete update to orchestrate the execution of the components and the dispatch of data between them.

    How Actors work in Cogment

    Concepts of Actors in Cogment

    Cogment allocates a dedicated gRPC service to run the computations of Actors, which we call the "Actor Service". It can also refer to the computational node running this service. This service effectively offers the registered actor implementations for use in trials.

    The Actor class specifies what kinds of inputs and outputs to expect. The class definition specifies what an actor is.

    The Actor implementation is the function the Actor uses to compute what action to take given some input information. If we want to have a bunch of different Actors that all behave similarly (take same kind of inputs and produce same kind of outputs) we can define an Actor class and different instances of that class can use different implementations.

    Client and Service Actors

    An Actor might be controlled either by a software agent, or by a Human. Whichever the case, the process of generating actions based on observations remains the same, and the Environment treats them the same. Some Actors connect to the trial (we call them "client" Actors) and others will wait for the trial to connect to them (we call these "service" Actors). Service Actors are run on a designated computational node called the Actor Service.

    Interactions between Actors and the Environment

    Basic concepts

    The Observations and Actions we discussed above are the key pieces of information exchanged between Actors and the Environment.

    • Environments take actions as an input and output observations,
    • Actors take observations as an input and output actions.

    As discussed before, the Environment can also provide feedback to the Actor about their actions in the form of a numerical reward signal, but it is not strictly necessary for the Environment to do so.

    In Cogment, Actors and the Environment exchange information via the Orchestrator - a core component of Cogment which facilitates the interaction of distributed services. To do so, the observation and action space for the Actors and the Environment are defined as typed data structures. Cogment uses Protocol Buffers as a format to specify these data structures. This typing defines both an interface contract between the Actors and the Environment and helps convey semantic information, thus facilitating the independent design and development of both. In practice this enables the Actors and Environment to be run as separate services (eg. on separate computational nodes) and have the Orchestrator pass these protobuf messages between the different services as needed.

    Trials

    Trials are how a Cogment deployment runs the sequential interactions between Actors and their Environment. A trial is defined by the participating Actors and the host Environment. As a concept, Trials are quite close to Reinforcement Learning's Episodes, i.e. all the states that come between an initial state and a terminal state. However, because Cogment can be used outside of an RL context, we prefer using the more generic term of Trial.

    How Trials work in Cogment

    Trials are started by clients connecting to Cogment. A trial can end either by being terminated from a client or end by itself, for example once a specific state of the Environment is reached.

    During the trial:

    • The Environment generates observations of its internal state and sends them to the Actors.
    • Given these observations, each Actor chooses and sends an action.
    • The Environment receives the actions and updates its internal state.
    • Rewards can be sent to the Actors from either the Environment or other Actors. A reward is a measure of an actor’s performance within the environment at a given point in time during the trial.
    • Actors receive rewards if at least one was sent to them.
    • A log of the activity during the trial (observations, actions, rewards) is produced and can be stored.

    The Specification file

    The configurations for how trial elements are set up are defined in a YAML specification file typically called cogment.yaml. This file details how elements of the project work, including its actor classes and their action & observation spaces. You can learn more about the specification file in the dedicated reference page.


    Cogment Architecture

    Running trials with Cogment usually involves the deployment of a cluster of services and clients. These components are either provided by the Cogment framework, depicted below in blue, or implemented for a particular project with Software Development Kits (SDKs) in either Python or Javascript, depicted below in orange.

    Cogment Architecture

    User implemented components use one of the Cogment SDKs or directly implement the underlying protocol. Components communicate using gRPC, clients can also communicate in a web-friendly way using gRPC-Web and grpcwebproxy.

    Context

    The Context is a point of entry for Cogment to interface with the different services through SDKs. See also the SDK documentation for Context (Python | JavaScript).

    Orchestrator

    The Orchestrator is the glue that binds everything together. It is responsible for running the Trials and contacting other services as needed to ensure their execution.

    The key aspect of Cogment's orchestrator is its capacity to handle a number of network connections in parallel while keeping its responsiveness.

    Controller

    The Controller is a key part of using Cogment, it initiates communication with the Orchestrator to control the execution of Trials. It is responsible for starting Trials, retrieving and watching their state (including the end of the trial), or requesting trial termination. You can see more in the Python SDK documentation for the Controller. The Controller is created by the Context.

    Environment

    The Environment implementation is accessed by the Orchestrator to run the Environment during Trials.

    Using one of Cogment's SDKs, the Environment can be implemented as a function integrating a "state of the world" with the Trial. This function performs the following tasks during the Trial:

    • Generate Observations from the current state of the world, for example retrieving the visible objects from a 3D simulation.
    • Apply the Actions, thus updating the state of the world, for example changing the velocity of a moving vehicle in a race simulation.
    • Evaluate the performance of Actors and send them Rewards, for example by checking if a vehicle crossed the finish line in a race simulation.

    Actors

    Cogment handles Actors in two different ways: either as a service Actor or as a client Actor. Service Actor implementations are accessed by the Orchestrator during Trials, while Client Actor implementations join a Trial by initiating the communication with the Orchestrator. Client Actors implementations can reach a Cogment deployment through NAT traversal. This makes them particularly well-suited to implement human-driven Actors, in web-browsers for example.

    Using one of Cogment's SDKs Actors can be implemented as functions handling the integration between a decision-making Actor (software agent or Human) and the Trial. This function performs the following tasks during the Trial:

    • Receive Observations and do Actions in response, for example vectorizing the retrieved observation, feeding it to a neural network and converting its output to an Action.
    • Receive Rewards, for example using them to update a neural network.
    • Optionally: send and receive direct messages.

    Please note that rewards can also be retrieved after the fact using a datalog.

    Additional components

    On top of the core components described above, a Cogment deployment can include these additional ones:

    • Datalog services can be used to listen to the activity during a trial (actions, observations, rewards, messages) in order to, for example, store these data for the offline training of AI agents. The Trial Datastore is an out-of-the-box implementation of this.
    • Model Registry handles the storage and dispatch of AI models trained with Cogment and used by the actors.
    • Directory handles the publishing and discovery of cogment services.

    Components availability summary

    The following table summarizes how each component can either be implemented or used out of the box.

    ComponentCogmentPython SDKJavascript SDKgRPC API
    Orchestratorcogment services orchestrator✅ implement Control API & Client Actor API
    Controllerget controllerget controller✅ use Control API
    Environmentregister environment & serve✅ implement Environment API
    Actor (Service)register actor & serve✅ implement Service Actor API
    Actor (Client)register actor & join trialregister actor & join trial✅ use Client Actor API
    Trial Datastorecogment services trial_datastoreregister datalog, serve & get datastore✅ implement Datalog API & Trial Datastore API
    Trial Datastore Clientcogment client trial_datastoreget datastore✅ use Trial Datastore API
    Model Registrycogment services model_registry✅ implement Model Registry API
    Model Registry Clientget model registry✅ use Model Registry API
    Directory`cogment services directory✅ implement Directory API
    Directory Client`cogment client directoryuse directory✅ use Directory API
    Pre Trial Hookregister pre trial hook & serve✅ implement Pre Trial Hook API
- - + + \ No newline at end of file diff --git a/docs/guide/development-guide.html b/docs/guide/development-guide.html index 35c69df..1ef1781 100644 --- a/docs/guide/development-guide.html +++ b/docs/guide/development-guide.html @@ -3,22 +3,25 @@ -Development guide | Cogment +Development guide | Cogment - - - + + + + + +
-

Development guide

This document gives a high level view of what it is to develop a Cogment based application using Cogment SDKs. It assumes the reader is familiar with the Cogment core concepts.

note

Some features aren't available in Javascript, if there's only Python examples under a certain section, that feature is python only.

The High-level Cogment API expects users to use protocol buffers to declare a project's data structures. The intricacies of protobufs are beyond the scope of this document. Basic knowledge of the technology and its usage is assumed.

The spec file

The spec file, usually named cogment.yaml, defines the specifics of a type of trials for a Cogment app: actor classes as well as environment & trial configuration types. It is the starting point for a project.

An actor class is primarily defined by its observation space and action space.

The data structures describing these spaces are declared by using a protocol buffer message type. Observations and actions will simply be instances of the matching type.

For example, in the following, driver and pedestrian share a common view of the environment, hence use the same observation space, but have different actions available to them.

import:
proto:
- city.proto

actors:
driver:
observation:
space: city.Observation

action:
space: city.DriverAction

pedestrian:
observation:
space: city.Observation

action:
space: city.PedestrianAction
tip

This shows only the relevant part of the full spec file, you can find the full list of configurable options in the reference page.

Compiling the spec file

In order to use the spec file within the various supported languages, it needs to be compiled. This is done by the code generation modules of the specific language's SDK you are using.

For the python SDK, the generation step requires an extra from the cogment package. Using pip you can install the SDK with its extra using:

pip install cogment[generate]

The generation can then be executed using:

python -m cogment.generate cogment.yaml

This will create a cog_settings.py file as well as multiple *_pb.py files.

Environment

Environments are implemented by functions that take a environment session instance.

This function will be called once for each trial. This function usually consists of three sections.

  • The environment's initialization, where its internal state can be initialized and processes started. It ends with the sending of the initial observations to the actors participating in the trial.
  • Its event loop, where the environment iterates through the events occurring during the trial and produces observations as well as receives messages. In this loop the environment can end the trial on its own or the end can be requested, see the Trial lifetime section for further information.
  • Its termination, where cleanup occurs.

In the common case where all actors within a trial share the same observation, a bare-minimum environment service would look like this:

async def environment(environment_session):
# -- Initialization --

# Retrieve the actors participating in the trial
actors = environment_session.get_active_actors()

# Start the trial and send a starting observation to all actors
environment_session.start([("*", Observation())])

# -- Event loop --
async for event in environment_session.all_events():
if event.actions:
# `event.actions` is a list of the actions done by the actors
actions = event.actions
if event.type == cogment.EventType.ACTIVE:
# The trial is active, produce an observation in response to the actions
environment_session.produce_observations([("*", Observation())])
# Alternatively the environment can decide to **end** the trial with the following
# environment_session.end([("*", Observation())])
else:
# The trial termination has been requested
# Produce a final observation
environment_session.end([("*", Observation())])

for message in event.messages:
# `event.messages` is a list of all the messages received by the environment (it can be empty)

# Handle each message here.

# -- Termination --
print(f"Trial [{environment_session.get_trial_id()}] terminated")

For further details, take a look at the cogment.EnvironmentSession class reference.

This environment implementation needs to be registered and served so that the Orchestrator can reach it. This can be done through a Context instance.

context = cogment.Context(user_id="my_user_id", cog_settings=cog_settings)

context.register_environment(impl=environment, impl_name="my_environment")

await context.serve_all_registered(cogment.ServedEndpoint(port=9000))

For further details, take a look at the cogment.Context class reference.

Sending observations

The environment session has 3 different methods able to send observations: start, produce_observations and end. Each of those methods takes a list of 2-tuples destination / observation.

As demonstrated above, sending the same observation to all actors is done using "*" as the destination.

environment_session.produce_observations([("*", Observation(...))])

It is also possible to send different observations to different actors. This can be useful to send observations of the world from the point of view of the actor or to send partial observations.

environment_session.produce_observations([
("my_first_actor_name", Observation(...)),
("my_second_actor_name", Observation(...))
])

Please note that the environment should always send observations such as each actor in the trial receives one.

Actor

Actors implementations look a lot like the environment's. They take actor session instance and have the same three sections: initialization, event loop and termination.

The event loops in Actors' implementations handle three basic types of events:

  • observation produced by the environment and should lead to an action being done.
  • rewards sent by other actors or the environment, we'll talk about them in more details below.
  • messages sent by other actors or the environment, we'll talk about them in more details below.

A typical actor implementation would look like this:

async def driver_actor(actor_session):
# -- Initialization --

# Notify that the actor is ready for the trial to start.
actor_session.start()

async for event in actor_session.all_events():
if event.observation:
# `event.observation` is an instance of the Observation produced by the environment
observation = event.observation
if event.type == cogment.EventType.ACTIVE:
# The trial is active, it is expecting the agent to do an action
actor_session.do_action(DriverAction(...))

for reward in event.rewards:
# `event.rewards` is a list of all the rewards received by the actor (it can be empty)

# Handle each reward here.

for message in event.messages:
# `event.messages` is a list of all the messages received by the actor (it can be empty)

# Handle each message here.

# -- Termination --
print(f"Trial [{actor_session.get_trial_id()}] terminated")

For further details, take a look at the cogment.ActorSession class reference.

Service actor / Client actor

A Cogment app can use two types of actors, they are identical in terms of implementation but differ in how they interact with the app's Orchestrator.

Service actors are accessible in the same way the environment is, through a Context instance.

context = cogment.Context(cog_settings=cog_settings, user_id="my_user_id")
context.register_actor(impl=actor, impl_name="driver_actor", actor_classes=["driver"])
context.register_actor(impl=actor_slow, impl_name="driver_actor_slow", actor_classes=["driver"])

await context.serve_all_registered(cogment.ServedEndpoint(port=9000))

Note that it is also through this registrating that the implementation is associated with one or more actor classes it implements.

Client actors, contrary to Service actors, are not served to the Orchestrator. They connect as clients of the Orchestrator and join a trial that has started.

context = cogment.Context(cog_settings=cog_settings, user_id="my_user_id")
context.register_actor(
impl=actor,
impl_name="human_pedestrian",
actor_classes=["pedestrian"]
)

await context.join_trial(
trial_id=trial_id,
cogment.Endpoint(url="grpc://orchestrator:9000"),
actor_name="Alice"
)

Note that a trial including one or more client actors will wait for all of them to join before any actor can start processing events.

Due to the different network requirements, client actors are a good fit when implementing a frontend for human actors.

Actor Availability

There are four actor parameters (see Trial Parameters) to manage actor responses for a trial: initial_connection_timeout, response_timeout, optional and default_action. +

Development guide

This document gives a high level view of what it is to develop a Cogment based application using Cogment SDKs. It assumes the reader is familiar with the Cogment core concepts.

note

Some features aren't available in Javascript, if there's only Python examples under a certain section, that feature is python only.

The High-level Cogment API expects users to use protocol buffers to declare a project's data structures. The intricacies of protobufs are beyond the scope of this document. Basic knowledge of the technology and its usage is assumed.

The spec file

The spec file, usually named cogment.yaml, defines the specifics of a type of trials for a Cogment app: actor classes as well as environment & trial configuration types. It is the starting point for a project.

An actor class is primarily defined by its observation space and action space.

The data structures describing these spaces are declared by using a protocol buffer message type. Observations and actions will simply be instances of the matching type.

For example, in the following, driver and pedestrian share a common view of the environment, hence use the same observation space, but have different actions available to them.

import:
proto:
- city.proto

actors:
driver:
observation:
space: city.Observation

action:
space: city.DriverAction

pedestrian:
observation:
space: city.Observation

action:
space: city.PedestrianAction
tip

This shows only the relevant part of the full spec file, you can find the full list of configurable options in the reference page.

Compiling the spec file

In order to use the spec file within the various supported languages, it needs to be compiled. This is done by the code generation modules of the specific language's SDK you are using.

For the python SDK, the generation step requires an extra from the cogment package. Using pip you can install the SDK with its extra using:

pip install cogment[generate]

The generation can then be executed using:

python -m cogment.generate cogment.yaml

This will create a cog_settings.py file as well as multiple *_pb.py files.

Environment

Environments are implemented by functions that take a environment session instance.

This function will be called once for each trial. This function usually consists of three sections.

  • The environment's initialization, where its internal state can be initialized and processes started. It ends with the sending of the initial observations to the actors participating in the trial.
  • Its event loop, where the environment iterates through the events occurring during the trial and produces observations as well as receives messages. In this loop the environment can end the trial on its own or the end can be requested, see the Trial lifetime section for further information.
  • Its termination, where cleanup occurs.

In the common case where all actors within a trial share the same observation, a bare-minimum environment service would look like this:

async def environment(environment_session):
# -- Initialization --

# Retrieve the actors participating in the trial
actors = environment_session.get_active_actors()

# Start the trial and send a starting observation to all actors
environment_session.start([("*", Observation())])

# -- Event loop --
async for event in environment_session.all_events():
if event.actions:
# `event.actions` is a list of the actions done by the actors
actions = event.actions
if event.type == cogment.EventType.ACTIVE:
# The trial is active, produce an observation in response to the actions
environment_session.produce_observations([("*", Observation())])
# Alternatively the environment can decide to **end** the trial with the following
# environment_session.end([("*", Observation())])
else:
# The trial termination has been requested
# Produce a final observation
environment_session.end([("*", Observation())])

for message in event.messages:
# `event.messages` is a list of all the messages received by the environment (it can be empty)

# Handle each message here.

# -- Termination --
print(f"Trial [{environment_session.get_trial_id()}] terminated")

For further details, take a look at the cogment.EnvironmentSession class reference.

This environment implementation needs to be registered and served so that the Orchestrator can reach it. This can be done through a Context instance.

context = cogment.Context(user_id="my_user_id", cog_settings=cog_settings)

context.register_environment(impl=environment, impl_name="my_environment")

await context.serve_all_registered(cogment.ServedEndpoint(port=9000))

For further details, take a look at the cogment.Context class reference.

Sending observations

The environment session has 3 different methods able to send observations: start, produce_observations and end. Each of those methods takes a list of 2-tuples destination / observation.

As demonstrated above, sending the same observation to all actors is done using "*" as the destination.

environment_session.produce_observations([("*", Observation(...))])

It is also possible to send different observations to different actors. This can be useful to send observations of the world from the point of view of the actor or to send partial observations.

environment_session.produce_observations([
("my_first_actor_name", Observation(...)),
("my_second_actor_name", Observation(...))
])

Please note that the environment should always send observations such as each actor in the trial receives one.

Actor

Actors implementations look a lot like the environment's. They take actor session instance and have the same three sections: initialization, event loop and termination.

The event loops in Actors' implementations handle three basic types of events:

  • observation produced by the environment and should lead to an action being done.
  • rewards sent by other actors or the environment, we'll talk about them in more details below.
  • messages sent by other actors or the environment, we'll talk about them in more details below.

A typical actor implementation would look like this:

async def driver_actor(actor_session):
# -- Initialization --

# Notify that the actor is ready for the trial to start.
actor_session.start()

async for event in actor_session.all_events():
if event.observation:
# `event.observation` is an instance of the Observation produced by the environment
observation = event.observation
if event.type == cogment.EventType.ACTIVE:
# The trial is active, it is expecting the agent to do an action
actor_session.do_action(DriverAction(...))

for reward in event.rewards:
# `event.rewards` is a list of all the rewards received by the actor (it can be empty)

# Handle each reward here.

for message in event.messages:
# `event.messages` is a list of all the messages received by the actor (it can be empty)

# Handle each message here.

# -- Termination --
print(f"Trial [{actor_session.get_trial_id()}] terminated")

For further details, take a look at the cogment.ActorSession class reference.

Service actor / Client actor

A Cogment app can use two types of actors, they are identical in terms of implementation but differ in how they interact with the app's Orchestrator.

Service actors are accessible in the same way the environment is, through a Context instance.

context = cogment.Context(cog_settings=cog_settings, user_id="my_user_id")
context.register_actor(impl=actor, impl_name="driver_actor", actor_classes=["driver"])
context.register_actor(impl=actor_slow, impl_name="driver_actor_slow", actor_classes=["driver"])

await context.serve_all_registered(cogment.ServedEndpoint(port=9000))

Note that it is also through this registrating that the implementation is associated with one or more actor classes it implements.

Client actors, contrary to Service actors, are not served to the Orchestrator. They connect as clients of the Orchestrator and join a trial that has started.

context = cogment.Context(cog_settings=cog_settings, user_id="my_user_id")
context.register_actor(
impl=actor,
impl_name="human_pedestrian",
actor_classes=["pedestrian"]
)

await context.join_trial(
trial_id=trial_id,
cogment.Endpoint(url="grpc://orchestrator:9000"),
actor_name="Alice"
)

Note that a trial including one or more client actors will wait for all of them to join before any actor can start processing events.

Due to the different network requirements, client actors are a good fit when implementing a frontend for human actors.

Actor Availability

There are four actor parameters (see Trial Parameters) to manage actor responses for a trial: initial_connection_timeout, response_timeout, optional and default_action. The timeouts control when an actor becomes unavailable, and the other two control what happens when it becomes unavailable.

The trial will be hard terminated by the Orchestrator if a required (non-optional) actor becomes unavailable, whereas it can continue if an optional actor becomes unavailable.

The default_action is for optional actors; when the actor is unavailable, the default action will be sent to the environment. If there is no default action defined, the environment is informed that the actor is unavailable, but no action is provided.

E.g. If a required actor (with optional set to False) has a response_timeout set to 5.0 seconds, but takes more than 5 seconds to respond to a new observation (e.g. due to excessive computation, or a crash), then the trial will be terminated.

Controller

Trials are started by clients of the Orchestrator using a Controller. Instances of a controller are built from the context instance and connect to an Orchestrator endpoint.

controller = context.get_controller(
endpoint=cogment.Endpoint(url="grpc://orchestrator:9000")
)

For further details, take a look at the Controller class reference.

Start and terminate trials

The controller can then be used to create trials and request their termination.

trial_id = await controller.start_trial(trial_config=TrialConfig())

# ...

await controller.terminate_trial([trial_id])
tip

The default behavior of the Controller's terminate trial function is to trigger a soft termination, an optional hard parameters can be set to True to trigger a hard termination.

Start trial from trial parameters

The above example uses an instance of the user-defined trial configuration to start the trial. This instance is then provided to a pre-trial hook to fully define the trial parameters. It is also possible to fully provide the trial parameters when starting the trial.

actor_1_params = cogment.ActorParameters(
cog_settings,
name="Alice",
class_name="pedestrian",
endpoint="cogment://client"
)
actor_2_params = cogment.ActorParameters(
cog_settings,
name="ai_driver",
class_name="driver",
endpoint="grpc://driver_actors:9000",
implementation="driver_actor_slow"
)

environment_config=EnvironmentConfig(
# ...
)

trial_params=cogment.TrialParameters(
cog_settings,
environment_name="environment",
environment_implementation="my_environment"
environment_endpoint="grpc://environment:9000",
environment_config=environment_config,
actors=[
actor_1_params,
actor_2_params,
]
)

For further details, take a look at the cogment.TrialParameters class reference.

Watch trials

The controller can also be used to subscribe to events occuring in the trials run by the Orchestrator it connects to. For example, this can be used to wait for a trial's end:

async for trial_info in controller.watch_trials(trial_state_filters=[
cogment.TrialState.ENDED
]):
print(f"The trial having id [{trial_info.trial_id}] ended")

Rewards

Creating

Rewards are sent to Actors from another actor or the Environment. The session instance passed to their implementation can be used for this purpose.

session.add_reward(value=-1, confidence=1, tick_id=-1, to=['an_actor_name'])

Rewards consist of an arbitrary numerical value describing how the reward "sender" believes the actor performed. It is weighted by a value between 0 and 1 qualifying the confidence of the "sender" in its reward, from a very low confidence just above 0 to a very high confidence approaching 1. The confidence value is used to collate all the rewards sent to an actor at the same time. Optionally, a reward can be provided with arbitrary user data.

Each reward applies to a list of recipients (either all the actors, all the actors of a given class or a specific actor) at a specific point in time, during the trial, defined as a tick. The tick ID can represent a past action if the value is smaller than the current tick ID ("future" actions are not allowed). Past actions, like sending a reward related to a past tick ID, are handled in accordance with the nb_buffered_ticks trial parameter.

The full documentation for session.add_reward can be found here.

Consuming

All the Rewards that are sent and destined to each specific actor for a given point in time are collated together by the framework.

The actor can take into account the reward directly as the trial is running by consuming the "reward" event in their event loop.

async for event in actor_session.all_events():
# [...]
for reward in event.rewards:
# `reward.tick_id` is the id of the tick this reward concerns.
tick_id = reward.tick_id
# `reward.value` is the aggregated value of the reward.
value = reward.value
for source_reward in reward.all_sources():
# Iterate over individual source rewards.
reward_value = source_reward.value
reward_confidence = source_reward.confidence
reward_sender = source_reward.sender
reward_user_data = source_reward.user_data

Messages

Creating

Messages can be created and sent between actors or the environment within a trial using their session instance.

session.send_message(
user_data=MyProtobufDataStructure(...), # any protobuf data structure can be used here.
to=['pedestrian:*'], # send the message to all the actors of the "pedestrian" class
)

The full documentation for session.send_message can be found here.

Messages consist of an arbitrary payload, their user_data/payload, defined as an instance of any protobuf data structure.

A message can be sent to one, many or all actors in a trial and / or to the environment.

Consuming

All the messages that are sent and intended for each specific actor or environment will be received by the target actor or environment.

Actors or the environment can use the message directly, live, as the trial is running, by consuming message event in their event loop.

async for event in actor_session.all_events():
# [...]
for message in event.messages:
# `message.sender_name` is the name of the actor who sent a message
sender_name = message.sender_name
# `message.payload` is the content of the message, it needs to be unpacked
payload = message.payload

Pre-trial hook

When starting a trial from a controller, an instance of the message type defined in trial:config_type can be provided. This instance is then passed to the registered Pre trial hooks when the Orcehstrator was started. The role of these hooks is to fully parametrize the trial based on the provided config. To achieve that, they can modify the default trial params defined in the parameters to specify the environment (i.e. its endpoint, implementation name & configuration), the number and parameters of the participant actors (i.e. their name, class, endpoint, implementation name & configuration) as well as additional parameters for the trial. The pre-trial hook can therefore be used to dynamically configure trials, to act as a service endpoint registry, or a load balancer.

Pre-trial hook implementations are registered in the same way the environment or actor implementation are and follow the same session pattern.

async def my_pre_trial_hook(pre_hook_session):
# The trial config provided by the controller can be retrieved like that
trial_config = pre_hook_session.trial_config
# The trial params can be edited directly
pre_hook_session.environment_config = # [...]
pre_hook_session.environment_endpoint = "grpc://my_environment:9000"
pre_hook_session.actors = [
{
"name": "my_first_actor_name",
"actor_class": "driver",
"endpoint": "grpc://driver:9000",
"implementation": "driver_actor",
"config": # [...],
},
{
"name": "my_second_actor_name",
"actor_class": "predestrian",
"endpoint": "cogment://client",
"config": # [...],
},
]
# And finally should be validated
pre_hook_session.validate()

context.register_pre_trial_hook(impl=my_pre_trial_hook)

Trial lifetime

Over their lifetime trials can be in different states managed by the Orchestrator. The current state of the trial can be accessed by a Controler.

Possible Trial States are defined as:

Trial start

The trial starts with a request from a Controller to the Orchestrator. At creation the trial is in the INITIALIZING state.

If no trial params are provided at this stage, registered Pre-trial hooks are called in sequence. The trial is now fully initialized and becomes PENDING as it wait for all the components, actors and environment to be available.

Once all the non-optional actors are available and the environment sends the initial observation set, the trial becomes RUNNING. If at least one non-optional actor is unavailable, it terminates right away and becomes ENDED.

Trial run

As long as the trial is RUNNING, the Orchestrator executes steps:

  • To each actor, the Orchestrator sends an event, having the ACTIVE type, containing its observation,
  • The Orchestrator then waits to receive one action per actor,
  • To the environment, the Orchestrator sends an event, having the ACTIVE type, containing the set of actions,
  • The Orchestrator then waits to receive the set of observations from the environment.

Trial end

Trial ended by the environment

This is the normal way for a trial to end.

  1. The environment sends the final observation set, using the session's end method.
  2. The trial state is set to TERMINATING.
  3. Observations are sent to the actors with the event type ENDING. Rewards and messages sent before that point will sent to their destination; later ones will not.
  4. Once all the last events are received, the Orchestrator sends a event of type FINAL to all the components.
  5. The trial becomes ENDED.

Soft termination

Soft termination can be triggered either by the user, using the Controller or after a maximum number of steps, if the trial Parameter max_steps is set.

  1. The Orchestrator waits until it receives the next action set from the actors.
  2. The trial state is set to TERMINATING.
  3. Actions are sent to the environment with the event type ENDING.
  4. From this point on the flow is the same as when the trial is ended by the environment.
note

After a soft termination is initiated (i.e. after receiving an event of type ENDING), the next set of observations sent by the environment will always be the last one (i.e. using end or produce_observation will have the same behavior).

Hard termination

Hard termination can be triggered in multiple ways:

  • By the user, using the Controller.
  • Because of unavailable actors. If a required (non-optional) actor becomes unavailable (for any reason), the trial will be terminated (see Actor Availability).
  • Because of inactivity. If a component (actor, environment, pre-trial hook, etc) does not respond, the trial will be waiting and be inactive. If the trial is inactive for too long (see Parameter max_inactivity), it will be terminated. With actor components this may happen when the timeout is too long (or indefinite) then the actor never becomes unavailable (see Actor Availability) and the trial will keep waiting for it.
  • Because of a critical error.

In all this cases:

  1. The trial becomes TERMINATING.
  2. The Orchestrator sends a event of type FINAL to all the components.
  3. The trial becomes ENDED.
- - + + \ No newline at end of file diff --git a/docs/guide/implementation-recipes.html b/docs/guide/implementation-recipes.html index ec64128..ce42d41 100644 --- a/docs/guide/implementation-recipes.html +++ b/docs/guide/implementation-recipes.html @@ -3,16 +3,19 @@ -Implementation Recipes | Cogment +Implementation Recipes | Cogment - - - + + + + + + - - +
+ + \ No newline at end of file diff --git a/docs/guide/implementation-recipes/configure-trial-from-controller.html b/docs/guide/implementation-recipes/configure-trial-from-controller.html index 5febf66..7d27d55 100644 --- a/docs/guide/implementation-recipes/configure-trial-from-controller.html +++ b/docs/guide/implementation-recipes/configure-trial-from-controller.html @@ -3,16 +3,19 @@ -Configure Trial from Controller | Cogment +Configure Trial from Controller | Cogment - - - + + + + + +
-

Fully configure a trial from a Controller

note

Starting with versions v2.2.0 of Cogment and v2.1.0 of the python SDK, it is now possible to provide the full trial parameters when starting a trial. This recipe is still applicable but it is recommended to use the new method instead.

When starting a trial, the controller can only provide an instance of the trial configuration message and from this instance the pre trial hook can fill the trial parameters, including a full configuring of the environment and actors involved in the trial. More details can be found here. In some cases, you might want to fully configure a trial from the controller. This recipe is dedicated to this use case.

caution

Implementing this recipe enables any client having access to the orchestrator to specify URLs - the actor and environment endpoints - that will be accessed (and trusted) by the orchestrator.

The general idea is to define TrialConfig so that it includes everything that's needed to parametrize the trial. It should look something like the following.

message EnvironmentParams {
string endpoint = 1;
EnvConfig config = 2;
string implementation = 3;
}

message ActorParams {
string name = 1;
string actor_class = 2;
string endpoint = 3;
string implementation = 4;
ActorConfig config = 5;
}

message TrialConfig {
EnvironmentParams environment = 1;
repeated ActorParams actors = 2;
uint32 max_steps = 3;
uint32 max_inactivity = 4;
}

When starting a trial from the controller you'll need to define the full config.

trial_id = await controller.start_trial(trial_config=TrialConfig(
environment=EnvironmentParams(
endpoint="grpc://my-environment:9000",
config=# [...],
implementation="my-implementation"
)
))

Finally a pass-through pre-trial hook needs to be implemented, registered and served. Its endpoint must be specified to the Orchestrator on startup.

async def passthrough_pre_trial_hook(pre_trial_hook_session):
trial_config = pre_trial_hook_session.trial_config
pre_trial_hook_session.environment_config = trial_config.environment.config
pre_trial_hook_session.environment_endpoint = trial_config.environment.endpoint
pre_trial_hook_session.environment_implementation = trial_config.environment.implementation
pre_trial_hook_session.actors = [
{
"name": actor_params.name,
"actor_class": actor_params.actor_class,
"endpoint": actor_params.endpoint,
"implementation": actor_params.implementation,
"config": actor_params.config,
}
for actor_params in trial_config.actors
]
pre_trial_hook_session.trial_max_steps = trial_config.max_steps
pre_trial_hook_session.trial_max_inactivity = trial_config.max_inactivity

pre_trial_hook_session.validate()

context.register_pre_trial_hook(pre_trial_hook)
- - +

Fully configure a trial from a Controller

note

Starting with versions v2.2.0 of Cogment and v2.1.0 of the python SDK, it is now possible to provide the full trial parameters when starting a trial. This recipe is still applicable but it is recommended to use the new method instead.

When starting a trial, the controller can only provide an instance of the trial configuration message and from this instance the pre trial hook can fill the trial parameters, including a full configuring of the environment and actors involved in the trial. More details can be found here. In some cases, you might want to fully configure a trial from the controller. This recipe is dedicated to this use case.

caution

Implementing this recipe enables any client having access to the orchestrator to specify URLs - the actor and environment endpoints - that will be accessed (and trusted) by the orchestrator.

The general idea is to define TrialConfig so that it includes everything that's needed to parametrize the trial. It should look something like the following.

message EnvironmentParams {
string endpoint = 1;
EnvConfig config = 2;
string implementation = 3;
}

message ActorParams {
string name = 1;
string actor_class = 2;
string endpoint = 3;
string implementation = 4;
ActorConfig config = 5;
}

message TrialConfig {
EnvironmentParams environment = 1;
repeated ActorParams actors = 2;
uint32 max_steps = 3;
uint32 max_inactivity = 4;
}

When starting a trial from the controller you'll need to define the full config.

trial_id = await controller.start_trial(trial_config=TrialConfig(
environment=EnvironmentParams(
endpoint="grpc://my-environment:9000",
config=# [...],
implementation="my-implementation"
)
))

Finally a pass-through pre-trial hook needs to be implemented, registered and served. Its endpoint must be specified to the Orchestrator on startup.

async def passthrough_pre_trial_hook(pre_trial_hook_session):
trial_config = pre_trial_hook_session.trial_config
pre_trial_hook_session.environment_config = trial_config.environment.config
pre_trial_hook_session.environment_endpoint = trial_config.environment.endpoint
pre_trial_hook_session.environment_implementation = trial_config.environment.implementation
pre_trial_hook_session.actors = [
{
"name": actor_params.name,
"actor_class": actor_params.actor_class,
"endpoint": actor_params.endpoint,
"implementation": actor_params.implementation,
"config": actor_params.config,
}
for actor_params in trial_config.actors
]
pre_trial_hook_session.trial_max_steps = trial_config.max_steps
pre_trial_hook_session.trial_max_inactivity = trial_config.max_inactivity

pre_trial_hook_session.validate()

context.register_pre_trial_hook(pre_trial_hook)
+ + \ No newline at end of file diff --git a/docs/guide/implementation-recipes/v2-migration-guide.html b/docs/guide/implementation-recipes/v2-migration-guide.html index 2a0998c..715f825 100644 --- a/docs/guide/implementation-recipes/v2-migration-guide.html +++ b/docs/guide/implementation-recipes/v2-migration-guide.html @@ -3,16 +3,19 @@ -Migrate from Cogment v1 to v2 | Cogment +Migrate from Cogment v1 to v2 | Cogment - - - + + + + + +
-

Migrate from Cogment v1 to v2

tip

This document is written as a guide to migrate from Cogment v1 to v2, a full list of the changes is also available here.

Updating components

The following components needs to be updated to work with Cogment v2:

  1. Update the CLI to the latest version and check that the version is correct

    curl --silent -L https://raw.githubusercontent.com/cogment/cogment-cli/main/install.sh | sudo bash
    cogment version
  2. Update the docker images to the versions compatible with the 2.0 API. These should be updated in Dockerfile, *.dockerfile or docker-compose.yml files in your project. The minimal version to use API 2.0 are:

    • cogment/orchestrator:v2.0.0
    • cogment/trial-datastore:v0.2.0 (prereleased component)
    • cogment/model-registry:v0.4.0 (prereleased component)
  3. Update the version of the python SDK to cogment[generate]>=2.0.2 (learn more about generate here) in your requirements.txt files or equivalent.

  4. Update the version of the javascript SDK to @cogment/cogment-js-sdk^2 in your package.json files or equivalent.

cogment.yaml split in a spec file and a parameters file

The cogment.yaml file has seen a lot of changes, the most important one is that we now differ between the spec file which specifies the types of trial for a cogment project, including actor classes and their action/observation spaces, and the parameters file which specifies default parameters for trials. The spec file is used in the code generation process of each SDKs and is no longer used by the orchestrator. The parameters file is used by the orchestrator, if you use pre-trial hooks to configure the started trials it might not be necessary.

We now recommand that two different files, respectively named cogment.yaml and params.yaml be used, however you can still use one file containing both content.

Recommended update

Move the trial_params section of the existing cogment.yaml file to a dedicated params.yaml file.

Further changes are required to both sections, as described below.

Required update

If the --config=cogment.yaml was provided to the orchestrator, remove it.

To provide a parameters file to the orchestrator use the --params=params.yaml command line option.

Further details can be found in the spec file documentation.

pre-trial hooks definition moved to an orchestrator configuration

pre-trial hooks are no longer defined in the cogment.yaml file, but instead are now given to the orchestrator as a command line option or through an environment variable.

Required update

Remove the trial:pre-hooks section from the spec file. Instead specify the hook addresses as gRPC URLs, e.g. grpc://1.1.1.1:9000, using the orchestrator cli option --pre_trial_hooks, separating potential multiple hooks with comas.

Further details can be found in the orchestrator documentation.

Datalog definition now part of each trial's parameters

The datalog definition is no longer a project-wide configuration but can be specified for each trial in its parameters.

Required update

Remove the datalog section from the spec file.

Datalog can be defined in the parameters file with the following format:

trial_params:
datalog:
- endpoint: grpc://logger:9000

It can also be defined when configuring the trial in the pre-trial hook.

Datalog API has changed, and now has a python wrapper

  • Instead of returning raw protobuf messages, Python wrapper objects are returned, so access to the raw messages is not available anymore
  • The DatalogSession attribute raw_trial_params is not available anymore.
  • The DatalogSession attribute trial_params returns a cogment.LogParams object instead of a protobuf message.
  • The DatalogSession.get_all_samples() now generates cogment.LogSample objects instead of a protobuf message.
  • If there is a need to deserialize v1 data (e.g. from an old database), v1 versions of the sample protobuf messages (cogment.api.datalog_pb2.TrialParams_v1 and cogment.api.datalog_pb2.DatalogSample_v1) are provided in the API for convenience.

For more information, please see the following sections of the Python SDK Documentation

Default trial parameters no longer support definition user configuration for trials, environments and actors

The config sections that were used to define default user configuration of trials, environments and actors are no longer supported. If necessary, these must be provided when starting the trial, for the trial config, and in pre-trial hooks, for the environment and actors config. Defaults can also be defined in the implementation code itself.

Required update

Remove the config sections (for trial, environment and actor) from the params file.

For simple projects, provide a default configuration in the implementation code directly, for more complex one use a pre-trial hook.

Prefer using full URL for endpoints

Recommended update

Use full gRPC URLs, starting with grpc://, when defining endpoints in the params file on in the SDKs.

Additionaly, to prepare for further features, we are introducing a cogment URL scheme. At the moment only the special client endpoint is concerned.

Recommended update

If actors are clients, replace the endpoint value from client to cogment://client

Support for "delta" observations discontinued

Framework support for "delta" observations has been discontinued. The same result can be obtained user-side in the environment and actor implementations.

Required update

Remove the following section from the spec file:

  • import::python
  • import::javascript
  • actor_classes::observation::delta
  • actor_classes::observation::delta_apply_fn

In the python SDK, RecvObservation delta attribute no longer exists.

You can support delta observations in your code, for example you could change the definition of your observation message to support both full observation or delta observation.

message Observation {
oneof observation_or_delta {
ObservationMessage obs = 1;
DeltaObservation delta = 2;
}
}

As before the environment side can decide to send full or delta observations. On the consumer side, actor or datalog, you'll need to keep the previous observation around to apply the delta to it.

Recommended update

Instead of using RecvObservation snapshot attribute, use observation instead.

New code generation workflow

The code generation step is no longer perfomed by the CLI but by dedicated tools provided with the SDKs. cogment copy is provided by the CLI as a cross platform way to copy the required files, i.e. the spec, protobuf and params files, from the root of the project to services source directories. As a result of these cogment sync and cogment generate are no longer available.

Required update

Replace any usage of cogment sync with cogment copy. This new commands needs to know explicitly what files to copy

cogment copy data.proto cogment.yaml params.yaml environment_dir actor_dir
Required update

For services using the python SDK:

  • Make sure you install the SDK and the generate tool using pip install cogment[generate].
  • Generate the necessary files with python3 -m cogment.generate --spec cogment.yaml.
Required update

For services using the javascript SDK

  • Generate the necessary files with npx cogment-js-sdk-generate cogment.yaml.

Orchestrator environment variables namespaced

Required update

Change the name of environment variables:

-   From `TRIAL_LIFECYCLE_PORT` to `COGMENT_LIFECYCLE_PORT`
- From `TRIAL_ACTOR_PORT` to `COGMENT_ACTOR_PORT`
- From `PROMETHEUS_PORT` to `COGMENT_ORCHESTRATOR_PROMETHEUS_PORT`

Trials' environments can be named

Just like the actors, the environment in a trial can now be named, this name defaults to "env". The environment name is used to address it, in particular to send messages. Environments and actors names belong to the same "namespace" and must be unique.

Recommended update

Instead of using the to_environment arguments of ActorSession.send_message(), use to and specify the environment's name.

Python SDK

Required update

Controller.terminate_trial() and Controller.get_trial_info() no longer supports providing a single trial identifier as a string.

Their usage need to change from

# Using named argument
my_controller.terminate_trial(trial_id="my_trial_id")
# Using positional argument
my_controller.get_trial_info("my_trial_id")

to

my_controller.terminate_trial(trial_ids=["my_trial_id"])
my_controller.get_trial_info(["my_trial_id"])
Required update

In actor implementaion, remove all usage of get_active_actors(). This method has been restricted to the environment only.

If actors need the full list of actors, there are a few possibilities: - Create a controller in the actor implementation and use the Controller.get_actors() method. - Receive the actor list in the config from the pre-trial hooks; the pre-trial hooks have implicit knowledge of all actors (at least the last hook). - Add the information in the actors observation space. - Send the information in a message.

Required update

Remove all usage of EnvironmentSession.send_message() using the to_environment argument.

Required update

Rename the parameter observations in EnvironmentSession.end(observations=observations) to final_observations.

Further details can be found in the python SDK documentation.

Javascript SDK

There has been a complete rework of the JS SDK we therefore recommend you to take a look at the dedicated javascript SDK documentation. In more details:

  • You can keep your actor function, as well as any logic dealing with the observation object, as its shape has remained the same,
  • If you are using the useActions React hook, there is a new version of that hook, which can be retrieved by running cogment init with an updated version of the Cogment CLI, and choosing yes when prompted if you want a web client.

Troubleshooting

Here we list a few error you are likely to see if something was not upgraded properly to Cogment 2.0:

  • AttributeError: module "cogment" has no attribute "delta_encoding"
    • This would be logged while trying to run a Python script and may happen if you use cogment generate instead of the new generation workflow.
    • This is caused by the discontinuation of delta encoding for observations.
  • Failure: [Problem rebuilding trial params [INVALID_ARGUMENT:(environment.config) some_message: Cannot find field.]]
    • When starting the Orchestrator with --config or --params.
    • This may happen when using an older version of the default parameters in a params or spec file.
    • It will happen when the default parameters contain an unknown field; In this particular case, the field config (i.e.from environment.config) is "unknown" because it is not accepted anymore in the Cogment 2.0 default parameters.
- - +

Migrate from Cogment v1 to v2

tip

This document is written as a guide to migrate from Cogment v1 to v2, a full list of the changes is also available here.

Updating components

The following components needs to be updated to work with Cogment v2:

  1. Update the CLI to the latest version and check that the version is correct

    curl --silent -L https://raw.githubusercontent.com/cogment/cogment-cli/main/install.sh | sudo bash
    cogment version
  2. Update the docker images to the versions compatible with the 2.0 API. These should be updated in Dockerfile, *.dockerfile or docker-compose.yml files in your project. The minimal version to use API 2.0 are:

    • cogment/orchestrator:v2.0.0
    • cogment/trial-datastore:v0.2.0 (prereleased component)
    • cogment/model-registry:v0.4.0 (prereleased component)
  3. Update the version of the python SDK to cogment[generate]>=2.0.2 (learn more about generate here) in your requirements.txt files or equivalent.

  4. Update the version of the javascript SDK to @cogment/cogment-js-sdk^2 in your package.json files or equivalent.

cogment.yaml split in a spec file and a parameters file

The cogment.yaml file has seen a lot of changes, the most important one is that we now differ between the spec file which specifies the types of trial for a cogment project, including actor classes and their action/observation spaces, and the parameters file which specifies default parameters for trials. The spec file is used in the code generation process of each SDKs and is no longer used by the orchestrator. The parameters file is used by the orchestrator, if you use pre-trial hooks to configure the started trials it might not be necessary.

We now recommand that two different files, respectively named cogment.yaml and params.yaml be used, however you can still use one file containing both content.

Recommended update

Move the trial_params section of the existing cogment.yaml file to a dedicated params.yaml file.

Further changes are required to both sections, as described below.

Required update

If the --config=cogment.yaml was provided to the orchestrator, remove it.

To provide a parameters file to the orchestrator use the --params=params.yaml command line option.

Further details can be found in the spec file documentation.

pre-trial hooks definition moved to an orchestrator configuration

pre-trial hooks are no longer defined in the cogment.yaml file, but instead are now given to the orchestrator as a command line option or through an environment variable.

Required update

Remove the trial:pre-hooks section from the spec file. Instead specify the hook addresses as gRPC URLs, e.g. grpc://1.1.1.1:9000, using the orchestrator cli option --pre_trial_hooks, separating potential multiple hooks with comas.

Further details can be found in the orchestrator documentation.

Datalog definition now part of each trial's parameters

The datalog definition is no longer a project-wide configuration but can be specified for each trial in its parameters.

Required update

Remove the datalog section from the spec file.

Datalog can be defined in the parameters file with the following format:

trial_params:
datalog:
- endpoint: grpc://logger:9000

It can also be defined when configuring the trial in the pre-trial hook.

Datalog API has changed, and now has a python wrapper

  • Instead of returning raw protobuf messages, Python wrapper objects are returned, so access to the raw messages is not available anymore
  • The DatalogSession attribute raw_trial_params is not available anymore.
  • The DatalogSession attribute trial_params returns a cogment.LogParams object instead of a protobuf message.
  • The DatalogSession.get_all_samples() now generates cogment.LogSample objects instead of a protobuf message.
  • If there is a need to deserialize v1 data (e.g. from an old database), v1 versions of the sample protobuf messages (cogment.api.datalog_pb2.TrialParams_v1 and cogment.api.datalog_pb2.DatalogSample_v1) are provided in the API for convenience.

For more information, please see the following sections of the Python SDK Documentation

Default trial parameters no longer support definition user configuration for trials, environments and actors

The config sections that were used to define default user configuration of trials, environments and actors are no longer supported. If necessary, these must be provided when starting the trial, for the trial config, and in pre-trial hooks, for the environment and actors config. Defaults can also be defined in the implementation code itself.

Required update

Remove the config sections (for trial, environment and actor) from the params file.

For simple projects, provide a default configuration in the implementation code directly, for more complex one use a pre-trial hook.

Prefer using full URL for endpoints

Recommended update

Use full gRPC URLs, starting with grpc://, when defining endpoints in the params file on in the SDKs.

Additionaly, to prepare for further features, we are introducing a cogment URL scheme. At the moment only the special client endpoint is concerned.

Recommended update

If actors are clients, replace the endpoint value from client to cogment://client

Support for "delta" observations discontinued

Framework support for "delta" observations has been discontinued. The same result can be obtained user-side in the environment and actor implementations.

Required update

Remove the following section from the spec file:

  • import::python
  • import::javascript
  • actor_classes::observation::delta
  • actor_classes::observation::delta_apply_fn

In the python SDK, RecvObservation delta attribute no longer exists.

You can support delta observations in your code, for example you could change the definition of your observation message to support both full observation or delta observation.

message Observation {
oneof observation_or_delta {
ObservationMessage obs = 1;
DeltaObservation delta = 2;
}
}

As before the environment side can decide to send full or delta observations. On the consumer side, actor or datalog, you'll need to keep the previous observation around to apply the delta to it.

Recommended update

Instead of using RecvObservation snapshot attribute, use observation instead.

New code generation workflow

The code generation step is no longer perfomed by the CLI but by dedicated tools provided with the SDKs. cogment copy is provided by the CLI as a cross platform way to copy the required files, i.e. the spec, protobuf and params files, from the root of the project to services source directories. As a result of these cogment sync and cogment generate are no longer available.

Required update

Replace any usage of cogment sync with cogment copy. This new commands needs to know explicitly what files to copy

cogment copy data.proto cogment.yaml params.yaml environment_dir actor_dir
Required update

For services using the python SDK:

  • Make sure you install the SDK and the generate tool using pip install cogment[generate].
  • Generate the necessary files with python3 -m cogment.generate --spec cogment.yaml.
Required update

For services using the javascript SDK

  • Generate the necessary files with npx cogment-js-sdk-generate cogment.yaml.

Orchestrator environment variables namespaced

Required update

Change the name of environment variables:

-   From `TRIAL_LIFECYCLE_PORT` to `COGMENT_LIFECYCLE_PORT`
- From `TRIAL_ACTOR_PORT` to `COGMENT_ACTOR_PORT`
- From `PROMETHEUS_PORT` to `COGMENT_ORCHESTRATOR_PROMETHEUS_PORT`

Trials' environments can be named

Just like the actors, the environment in a trial can now be named, this name defaults to "env". The environment name is used to address it, in particular to send messages. Environments and actors names belong to the same "namespace" and must be unique.

Recommended update

Instead of using the to_environment arguments of ActorSession.send_message(), use to and specify the environment's name.

Python SDK

Required update

Controller.terminate_trial() and Controller.get_trial_info() no longer supports providing a single trial identifier as a string.

Their usage need to change from

# Using named argument
my_controller.terminate_trial(trial_id="my_trial_id")
# Using positional argument
my_controller.get_trial_info("my_trial_id")

to

my_controller.terminate_trial(trial_ids=["my_trial_id"])
my_controller.get_trial_info(["my_trial_id"])
Required update

In actor implementaion, remove all usage of get_active_actors(). This method has been restricted to the environment only.

If actors need the full list of actors, there are a few possibilities: - Create a controller in the actor implementation and use the Controller.get_actors() method. - Receive the actor list in the config from the pre-trial hooks; the pre-trial hooks have implicit knowledge of all actors (at least the last hook). - Add the information in the actors observation space. - Send the information in a message.

Required update

Remove all usage of EnvironmentSession.send_message() using the to_environment argument.

Required update

Rename the parameter observations in EnvironmentSession.end(observations=observations) to final_observations.

Further details can be found in the python SDK documentation.

Javascript SDK

There has been a complete rework of the JS SDK we therefore recommend you to take a look at the dedicated javascript SDK documentation. In more details:

  • You can keep your actor function, as well as any logic dealing with the observation object, as its shape has remained the same,
  • If you are using the useActions React hook, there is a new version of that hook, which can be retrieved by running cogment init with an updated version of the Cogment CLI, and choosing yes when prompted if you want a web client.

Troubleshooting

Here we list a few error you are likely to see if something was not upgraded properly to Cogment 2.0:

  • AttributeError: module "cogment" has no attribute "delta_encoding"
    • This would be logged while trying to run a Python script and may happen if you use cogment generate instead of the new generation workflow.
    • This is caused by the discontinuation of delta encoding for observations.
  • Failure: [Problem rebuilding trial params [INVALID_ARGUMENT:(environment.config) some_message: Cannot find field.]]
    • When starting the Orchestrator with --config or --params.
    • This may happen when using an older version of the default parameters in a params or spec file.
    • It will happen when the default parameters contain an unknown field; In this particular case, the field config (i.e.from environment.config) is "unknown" because it is not accepted anymore in the Cogment 2.0 default parameters.
+ + \ No newline at end of file diff --git a/docs/guide/tutorial.html b/docs/guide/tutorial.html index 050d92c..3ada1f2 100644 --- a/docs/guide/tutorial.html +++ b/docs/guide/tutorial.html @@ -3,16 +3,19 @@ -Tutorial | Cogment +Tutorial | Cogment - - - + + + + + +
-

Tutorial

Here we will learn about the different elements of Cogment and how they fit together by creating a simulated game of Rock-Paper-Scissors. To run this tutorial locally, you will need to download or clone the source code from our github repository.

Prerequisites

This tutorial assumes a strong working knowledge of Python, as well as some basic familiarity with the following:

Why Rock-Paper-Scissors (RPS)?

RPS is a hand game, usually played between two players, in which each player selects one of three possible hand-signs indicating rock, paper, or scissors.

Schematic of rock-paper-scissors from Wikipedia

RPS is a simultaneous, zero-sum game which has only two possible outcomes:

  • One player's action beats the other (i.e. they win and their opponent loses), or
  • Both players choose the same action and the game is a draw.

RPS is a very simple game with straightforward rules. As long as we forbid pure random moves, which are very difficult to beat, it is an interesting testbed to develop AIs that compete with Humans. Unlike "deep" games such as chess or go, the power is not really in the brute force exploration of possible outcomes, but rather in getting some level of understanding of how the opponent plays to be able to anticipate their moves. A good read on the subject of AI and RPS is this article by Benjamin Peterson: Towards an AI for Rock, Paper, Scissors. This means as a tutorial to get acquainted with Cogment, RPS is simple enough to be easily implemented, and interesting enough to be a good example to showcase the different kinds of things Cogment is capable of doing.

Formalizing RPS

Cogment is designed with the abstraction of reinforcement Learning in mind: tasks are broken down into sequential interactions between Actor(s) and the Environment. The Actors are the players of RPS, and the Environment is the world the players operate in: which types of actions are allowed, the rules that specify the consequences of actions (eg. "scissors beats paper").

Abstraction of Interactions

Actors usually need to know some information about the state of the world in order to make a choice about which action to select -- this kind of information is called an "Observation".

The Environment receives these actions and produces consequences -- updated Observations on the state of the world, and sometimes a reward signal, such as a win or loss. Reward signals are a useful way of quantifying goals, and are used in RL for training AI-based actors to improve their behaviour in pursuit of maximizing the rewards.

The repeated sequential interactions between players and the RPS game environment are handled by running Trials which coordinate the exchange of information between Actors and the Environment until a terminal condition is met.

How does Cogment think of these pieces?

Cogment runs as a distributed microservices architecture, meaning that the RPS Environment, each of the Actors, and the Cogment machinery that supports their interactions are all set up as separate services whose processes can be run on separate computation nodes. The operations carried out on each of these services are coordinated by the Orchestrator, a key component of Cogment that ties all services together in order to execute the Trials.

Cogment components used in RPS

Tutorial Roadmap

By the end of this basic tutorial you should understand the key elements of Cogment and how they work together. In particular, these steps cover how Cogment handles Actors and Environments and how the interactions between them are orchestrated to run trials. We start with a basic skeleton of each of these pieces, and add more detail as we go through the tutorial.

tutorial roadmap

The first step of the tutorial is to get the code set up and make sure it functions properly. The basic code doesn't do anything interesting, but we will walk through what components are included so that it's clear how the different pieces fit together.

In step 2, we will look at how Cogment represents Actors, what information they operate with, and how they communicate with the other components of the application

In step 3, we will flesh out the details of the Environment. This involves specifying what types of actions are allowed in the game and the rules for what happens when actions are taken, as well as configuring the conditions for when a game has been won.

In step 4, we will add feedback from the Environment and enable one of the Actors to reason about action selection given information in the Observation it receives. We'll look at how two Actors using different implementations perform in a game of RPS.

Once you understand the basic components of Cogment and how they work together, you may be interested in more advanced tutorials on how to implement more complex things with Cogment. We treat the more advanced tutorials as a "choose your own adventure" style of guide: play with a human in the loop, connect a web client for a better human user interface, or improve operational efficiency by using some more advanced Cogment tooling.

- - +

Tutorial

Here we will learn about the different elements of Cogment and how they fit together by creating a simulated game of Rock-Paper-Scissors. To run this tutorial locally, you will need to download or clone the source code from our github repository.

Prerequisites

This tutorial assumes a strong working knowledge of Python, as well as some basic familiarity with the following:

Why Rock-Paper-Scissors (RPS)?

RPS is a hand game, usually played between two players, in which each player selects one of three possible hand-signs indicating rock, paper, or scissors.

Schematic of rock-paper-scissors from Wikipedia

RPS is a simultaneous, zero-sum game which has only two possible outcomes:

  • One player's action beats the other (i.e. they win and their opponent loses), or
  • Both players choose the same action and the game is a draw.

RPS is a very simple game with straightforward rules. As long as we forbid pure random moves, which are very difficult to beat, it is an interesting testbed to develop AIs that compete with Humans. Unlike "deep" games such as chess or go, the power is not really in the brute force exploration of possible outcomes, but rather in getting some level of understanding of how the opponent plays to be able to anticipate their moves. A good read on the subject of AI and RPS is this article by Benjamin Peterson: Towards an AI for Rock, Paper, Scissors. This means as a tutorial to get acquainted with Cogment, RPS is simple enough to be easily implemented, and interesting enough to be a good example to showcase the different kinds of things Cogment is capable of doing.

Formalizing RPS

Cogment is designed with the abstraction of reinforcement Learning in mind: tasks are broken down into sequential interactions between Actor(s) and the Environment. The Actors are the players of RPS, and the Environment is the world the players operate in: which types of actions are allowed, the rules that specify the consequences of actions (eg. "scissors beats paper").

Abstraction of Interactions

Actors usually need to know some information about the state of the world in order to make a choice about which action to select -- this kind of information is called an "Observation".

The Environment receives these actions and produces consequences -- updated Observations on the state of the world, and sometimes a reward signal, such as a win or loss. Reward signals are a useful way of quantifying goals, and are used in RL for training AI-based actors to improve their behaviour in pursuit of maximizing the rewards.

The repeated sequential interactions between players and the RPS game environment are handled by running Trials which coordinate the exchange of information between Actors and the Environment until a terminal condition is met.

How does Cogment think of these pieces?

Cogment runs as a distributed microservices architecture, meaning that the RPS Environment, each of the Actors, and the Cogment machinery that supports their interactions are all set up as separate services whose processes can be run on separate computation nodes. The operations carried out on each of these services are coordinated by the Orchestrator, a key component of Cogment that ties all services together in order to execute the Trials.

Cogment components used in RPS

Tutorial Roadmap

By the end of this basic tutorial you should understand the key elements of Cogment and how they work together. In particular, these steps cover how Cogment handles Actors and Environments and how the interactions between them are orchestrated to run trials. We start with a basic skeleton of each of these pieces, and add more detail as we go through the tutorial.

tutorial roadmap

The first step of the tutorial is to get the code set up and make sure it functions properly. The basic code doesn't do anything interesting, but we will walk through what components are included so that it's clear how the different pieces fit together.

In step 2, we will look at how Cogment represents Actors, what information they operate with, and how they communicate with the other components of the application

In step 3, we will flesh out the details of the Environment. This involves specifying what types of actions are allowed in the game and the rules for what happens when actions are taken, as well as configuring the conditions for when a game has been won.

In step 4, we will add feedback from the Environment and enable one of the Actors to reason about action selection given information in the Observation it receives. We'll look at how two Actors using different implementations perform in a game of RPS.

Once you understand the basic components of Cogment and how they work together, you may be interested in more advanced tutorials on how to implement more complex things with Cogment. We treat the more advanced tutorials as a "choose your own adventure" style of guide: play with a human in the loop, connect a web client for a better human user interface, or improve operational efficiency by using some more advanced Cogment tooling.

+ + \ No newline at end of file diff --git a/docs/guide/tutorial/actors-in-cogment.html b/docs/guide/tutorial/actors-in-cogment.html index b2bd060..9d0222c 100644 --- a/docs/guide/tutorial/actors-in-cogment.html +++ b/docs/guide/tutorial/actors-in-cogment.html @@ -3,17 +3,20 @@ -Step 2 - Actors in Cogment | Cogment +Step 2 - Actors in Cogment | Cogment - - - + + + + + +
-

Actors: Players of RPS

Now that we have a working but empty Cogment app, let's look at how these pieces interact in the context of the RPS game. In this step of the tutorial, we will lay out how Actors are defined in Cogment. To build out our RPS application, we will add the ability for our Actors to select actions (rather than produce empty strings).

Actors and Environment interaction in RPS

What does Cogment need to know about an Actor?

In Cogment, the general concept of an Actor is a role that has agency. In RPS, this is a player of the game. At a high level, Cogment operates the same whether the Actor is human or machine-based. For now, we will just look at machine-based Actors. A more in-depth tutorial will guide you through implementing a client Actor which can be used by a human player to participate in the RPS game.

To fully specify Actors in Cogment, we need to define what they do (what observations they take and actions they produce), how they do it, and where they run those computations.

To better understand how Cogment represents Actors, the following terminology is important to highlight:

  • The Actor Service is the designated computational node where Actor instances run. A service can manage multiple Actor instances concurrently. The Actor Service is where the computations are run. The Actor Service is launched by actors/main.py on the TCP port set by the ACTORS_PORT variable in the .env file.
  • The Actor Class is the specification of the attributes and behaviours that an Actor can have, for example what sort of inputs the Actor expects and what sort of outputs it will produce. If we want to have several different Actors that all behave similarly (take same type of inputs and produce same type of outputs) we can define an Actor class and different instances of that class can use different implementations. The Actor Class defines what the Actor does. The Actor Classes are defined in the cogment.yaml file in the root directory (which is copied to each service directory as part of the ./run.sh install command).
  • The Actor Implementation is the logic of how the role operates. Specifically, the implementation refers to the function which controls how the Actor makes decisions about what action to output given some input information about the state of the world. The Actor implementation is how the Actor chooses actions. The function we use for our first Actor implementation is defined in actors/main.py.

different concepts of actors +

Actors: Players of RPS

Now that we have a working but empty Cogment app, let's look at how these pieces interact in the context of the RPS game. In this step of the tutorial, we will lay out how Actors are defined in Cogment. To build out our RPS application, we will add the ability for our Actors to select actions (rather than produce empty strings).

Actors and Environment interaction in RPS

What does Cogment need to know about an Actor?

In Cogment, the general concept of an Actor is a role that has agency. In RPS, this is a player of the game. At a high level, Cogment operates the same whether the Actor is human or machine-based. For now, we will just look at machine-based Actors. A more in-depth tutorial will guide you through implementing a client Actor which can be used by a human player to participate in the RPS game.

To fully specify Actors in Cogment, we need to define what they do (what observations they take and actions they produce), how they do it, and where they run those computations.

To better understand how Cogment represents Actors, the following terminology is important to highlight:

  • The Actor Service is the designated computational node where Actor instances run. A service can manage multiple Actor instances concurrently. The Actor Service is where the computations are run. The Actor Service is launched by actors/main.py on the TCP port set by the ACTORS_PORT variable in the .env file.
  • The Actor Class is the specification of the attributes and behaviours that an Actor can have, for example what sort of inputs the Actor expects and what sort of outputs it will produce. If we want to have several different Actors that all behave similarly (take same type of inputs and produce same type of outputs) we can define an Actor class and different instances of that class can use different implementations. The Actor Class defines what the Actor does. The Actor Classes are defined in the cogment.yaml file in the root directory (which is copied to each service directory as part of the ./run.sh install command).
  • The Actor Implementation is the logic of how the role operates. Specifically, the implementation refers to the function which controls how the Actor makes decisions about what action to output given some input information about the state of the world. The Actor implementation is how the Actor chooses actions. The function we use for our first Actor implementation is defined in actors/main.py.

different concepts of actors In the above image, we showcase these different concepts: the Actor Class "Player" lays out the skeleton for what components the Actor will need to manage. We can create an instance of this class (gray) with an Actor Implementation that does random action selection, which takes an Observation as input and produces an action as output. The computations made by the Player Actor instance are run on the Actor Service.

Defining the Actor Service

Let's look at actors/main.py to see how Cogment handles the concepts of the Actor Service, Actor Class, and Actor Implementation in the RPS application. If we look at the main() function that is invoked by running this file, we see:

Main function for registering actors on actor service

The main() function first initializes a context in which the Actors will be registered. When registering an Actor, we specify the class this Actor will be an instance of (from the options given in cogment.yaml), and which implementation will be used. So far in our RPS application, we have only registered one type of Actor: an instance of the player class using the random_agent implementation.

After registering each of the different types of Actors that Cogment will be responsible for managing in the application, this function starts the Actor Service that will handle any Actor-associated computations on the appropriate port, and awaits the termination of the service.

note

Ports for running services are specified in the .env file, loaded by the .run.sh script, and retrieved by the os package to make the variable available to Python. To change the port this service uses, update the.env file in the root directory rather than changing main.py.

Defining the Actor Class

The Actor Class is where we define the domain over which the Actor will operate, i.e. what inputs and outputs the Actor is expected to handle. We specify the Actor Class in the cogment.yaml file, using the imported Protocol Buffer (protobuf) messages from the associated data.proto file.

The cogment.yaml file lets Cogment know how to configure each of the components involved in running the Trial, so we will return to it again later. The actor_classes section describes what types of Actors exist in this game (here only player Actors), and what the inputs and outputs of an instance of the player class of Actor look like:

Actor Class definitions

This tells Cogment that an instance of the player Actor class will expect observations specified by the rps.Observation message, and will produce actions of a form defined by the rps.PlayerAction message. The Actor Class is fully specified here by its Observation space and Action Space.

note

Message types are referenced by rps.SomeMessageName, since message types imported from a .proto are referred to through their package namespace, which has been set to rps in the data.proto file. (For more information about the general use of the cogment.yaml file, see the dedicated reference page.)

Action Space

The action space refers to the set of valid actions which can be taken by an Actor at each step of the game. The cogment.yaml file tells Cogment that a member of the player Actor class can take actions of type PlayerAction as defined in the data.proto file.

If we look at the PlayerAction message in data.proto, we see it is a message of type Move, where a Move is defined to be one of ROCK, PAPER, or SCISSORS, or an UNKNOWN move:

defining the action space

We also specify here that a Move is an enum type of Protobuf message, meaning that it can take only one of a predefined list of values. We include UNKNOWN in this because the first argument of an enum will be its default value, and we don't wish any of our actions to be a default behaviour. Together these specify the action space: a valid action for a player type Actor is a single one of the list of possible moves.

Observation Space

The observation space refers to the set of possible inputs an Actor can receive at each step of the game. Observations are what Actors perceive from the Environment about what is the current state of their world, which they use to make decisions about what actions they should take.

In the context of RPS, the Environment is limited to the two players, the actions they took, and the consequence of both of their actions.

The cogment.yaml file tells Cogment that a member of the player Actor class receives observations of the form Observation as defined in the data.proto file.

The Observation message type itself specifies that each player considers information about themselves and their opponent, and that these pieces of information are of the type PlayerState:

defining the observation space

Note that last_move is optional because during the first round of the game, the players have not yet played any move. For all other steps of the game, each player is considering what was their last move, their opponents last move, and which of the two of them won or lost the match.

Defining the Actor Implementation

While the Class defines how an Actor expects to receive observations and output actions, the Actor implementation specifies the details of how the Actor makes decisions. This implementation function is a callback function, used once per actor and per trial and handles the full lifetime of the Actor.

Until now, we have used a partially completed random_agent implementation defined in the actors/main.py file. It is partially complete because the player's actions are currently empty. In this step, we will enable our Actor to select actions at random.

defining the random actor

An Actor implementation specifies:

  • The actor's initialization, before the async for. This is where, for example, the Actor's internal data can be defined before calling actor_session.start() to notify that it is ready.
  • The event loop, which specifies how the Actor makes decisions about what action to select in response to an observation in each step, and what kind of rewards it might receive from selecting its action. Here, you can see that by default the action gets an empty PlayerAction message (the data structure defined in data.proto), which has the expected format but contains no data.
  • The termination block, i.e. what the Actor does after all the events.

The argument passed to the Actor implementation is the Actor's session, which allows the Orchestrator to manage all the data associate with the Actor's operations in the trial.

Completing the random_agent Actor Implementation

We'll modify the random_agent function defined in actors/main.py to enable our Actor implementation to select random actions (rather than produce empty strings). First, we need to import the different options Move can take, as defined in our data structures in data.proto. We will also need to import the Python package random, which will enable us to choose one of the Move options at random.

In the "Imports" section at the top of the file, add the following:

from data_pb2 import ROCK, PAPER, SCISSORS
import random

We will store all of the possible options for the types of MOVES we can take in a list. Add the following code to the "Settings" section:

MOVES = [ROCK, PAPER, SCISSORS]

Recall from above that the PlayerAction message has one field: move. This is the piece we need to pass to the formerly empty PlayerAction message inside the event loop of the random_agent instance definition. Replace the if event.observation: block in the event loop with the following:

if event.observation:
print(f"'{actor_session.name}' received an observation: '{event.observation}'")
if event.type == cogment.EventType.ACTIVE:
action = PlayerAction(move=random.choice(MOVES)) ## NEW IN STEP 2
actor_session.do_action(action)

The completed Actor implementation should look like this:

completed random actor implementation

We now have an Actor that will randomly select actions. We showed earlier in this step of the tutorial where this implementation is used when registering instances of Actors with the service. Next, we will show how Cogment specifies which Actors and how many of them will participate in the Trial.

Specifying which Actors participate in the Trial

If we look at the trial_runner/main.py code, we will see the code that tells Cogment exactly which participants will be part of a trial.

basic trial runner

This code creates the context in which to run the trial, and a controller which will actually carry out the function of starting the trial, monitoring its state, and ending the trial.

This is also where we say specifically which Actors will be part of the trial. Here, we are going to create a trial with two Actors which use identical parameter settings, except for having different names. Each player uses an instance of the Actor type we registered on the Actor Service in actors/main.py - if we call for a different implementation or class here, Cogment won't know what to do with that because no other Actor types have been registered with the Actor service.

We can change the player names to Bob and Alice in trial_runner/main.py just to see how that impacts what gets reported as the services are running:

actor_1_params = cogment.ActorParameters(
cog_settings,
name="Bob", # player_1
class_name="player",
endpoint=ACTORS_ENDPOINT,
implementation="random_agent"
)
actor_2_params = cogment.ActorParameters(
cog_settings,
name="Alice", # player_2
class_name="player",
endpoint=ACTORS_ENDPOINT,
implementation="random_agent"
)

To learn more about the parameters, check the cogment.TrialParameters class reference.

Then we specify the parameters of the trial -- including the specifications for our two players -- and pass these trial parameters to the controller to start a new trial. In this trial runner, our controller will terminate the trial after the players have played for 5 seconds.

Then the Trial Runner tells the controller to start a trial with the specified parameters. The start_trial call will return a unique identifier for the trial. The Trial Runner uses this information to request the end of the trial with terminate_trial. It is also possible to tell the controller the ID you want your trial to have, by passing your chosen ID to the trial_id_requested parameter of the start_trial method. We will do this in the next step of the tutorial.

We can now run the application, and we will see the service terminal logs report that each player selects a valid action instead of an empty one.

Bob and Alice pick actions

We can also see that the services terminal prints out what the Actors were receiving from the Environment as Observations:

Bob and Alice get empty observations

Quick Summary

We learned about how Cogment represents Actors and the different concepts of the Actor Service, Actor Class, and Actor Implementation.

We enabled the random_agent Actor implementation to select actions by importing the ROCK PAPER SCISSORS data structures defined in the data.proto (via data_pb2.py), the random package, and changing the event block to:

async for event in actor_session.all_events():
if event.observation:
print(f"'{actor_session.name}' received an observation: '{event.observation}'")
if event.type == cogment.EventType.ACTIVE:
action = PlayerAction(move=random.choice(MOVES)) # new in step 2
actor_session.do_action(action)
for reward in event.rewards:
print(f"'{actor_session.name}' received a reward for tick #{reward.tick_id}: {reward.value}")

We also looked at how the Trial Runner calls upon Actors to participate in the trial. We modified the parameters for the Actors in the Trial Runner and gave each player a name:

actor_1_params = cogment.ActorParameters(
cog_settings,
name="Bob",
class_name="player",
endpoint=ACTORS_ENDPOINT,
implementation="random_agent"
)
actor_2_params = cogment.ActorParameters(
cog_settings,
name="Alice",
class_name="player",
endpoint=ACTORS_ENDPOINT,
implementation="random_agent"
)

In the next step of the tutorial, we will go through how Cogment represents the Environment, and set up the Environment implementation to give Bob and Alice observations about the state of the world that contain meaningful information.

- - + + \ No newline at end of file diff --git a/docs/guide/tutorial/advanced-tutorials.html b/docs/guide/tutorial/advanced-tutorials.html index 1f4f4af..800584b 100644 --- a/docs/guide/tutorial/advanced-tutorials.html +++ b/docs/guide/tutorial/advanced-tutorials.html @@ -3,16 +3,19 @@ -Advanced Tutorial Steps | Cogment +Advanced Tutorial Steps | Cogment - - - + + + + + +
-

Advanced Tutorial Steps

This section offers an interested reader a set of advanced tutorials to learn how about how to do more complex things with Cogment. These tutorials build off of the RPS basics tutorial, so it may be useful to follow these.

You can use the more advanced tutorials in a "choose your own adventure" style:

The steps above are in order of increasing complexity, but you need not necessarily complete all of them. You can get a working starting point by following the installation instructions and copying the code for the desired step of the tutorial you'd like to explore.

- - +

Advanced Tutorial Steps

This section offers an interested reader a set of advanced tutorials to learn how about how to do more complex things with Cogment. These tutorials build off of the RPS basics tutorial, so it may be useful to follow these.

You can use the more advanced tutorials in a "choose your own adventure" style:

The steps above are in order of increasing complexity, but you need not necessarily complete all of them. You can get a working starting point by following the installation instructions and copying the code for the desired step of the tutorial you'd like to explore.

+ + \ No newline at end of file diff --git a/docs/guide/tutorial/advanced-tutorials/directory.html b/docs/guide/tutorial/advanced-tutorials/directory.html index 6d5646c..2eafb49 100644 --- a/docs/guide/tutorial/advanced-tutorials/directory.html +++ b/docs/guide/tutorial/advanced-tutorials/directory.html @@ -3,15 +3,18 @@ -Improve Operational Efficiency with a Cogment Directory for Service Discovery | Cogment +Improve Operational Efficiency with a Cogment Directory for Service Discovery | Cogment - - - + + + + + +
-

Improve Operational Efficiency with a Cogment Directory for Service Discovery

note

It is not necessary to have gone through all the previous sections to understand this part, but the code changes refer to the code in the previous step. The code can be retrieved from the tutorial's repository.

In this step of the tutorial, we will add the Cogment Directory to +

Improve Operational Efficiency with a Cogment Directory for Service Discovery

note

It is not necessary to have gone through all the previous sections to understand this part, but the code changes refer to the code in the previous step. The code can be retrieved from the tutorial's repository.

In this step of the tutorial, we will add the Cogment Directory to the project. A directory is a register of services together with the network addresses where to connect to the services. This will let components find the services they need instead of having to already know the network address. It makes it easier to manage more complicated projects and complex deployments.

Adding the Directory service

In the ./run.sh script we will add the command to start the Directory service.

function directory_start() {
cogment services directory --port=9005
}

Since the Directory is a service that all other services depend upon, it needs to be started first.

Here we have a few choices; we could decide to start it in a separate terminal before the other services, or we could @@ -40,7 +43,7 @@ Instead of something like this:

await context.join_trial(trial_id=trial_id, endpoint=cogment.Endpoint(ORCHESTRATOR_ENDPOINT), actor_name="player_1")

Because, again, the endpoint parameter has a default context discovery endpoint, this would suffice:

await context.join_trial(trial_id=trial_id, actor_name="player_1")

Authentication Token

All directory communications require an Authentication Token. By default, this is empty, but it can be set to any string and used in many situations. One case that is useful is to isolate different running projects, when there is only a single directory that is always running. The easiest way to do this is to add this environment variable to the ./.env file:

COGMENT_DIRECTORY_AUTHENTICATION_TOKEN="project-tutorial-8"

Then all registrations will use this authentication token and all inquiries will require this authentication token (i.e. only services that were registered with this authentication token will be found).

Step 8.5: Using Cogment environment variables

In this step we'll use the Cogment environment variables to simplify management of the project. So we will add these environment variables to the ./.env file:

COGMENT_DIRECTORY_PORT=9005
COGMENT_LIFECYCLE_PORT=9000
COGMENT_ACTOR_PORT=9000

and remove the tutorial specifc variables, which leaves us with a ./.env file that looks like this:

# Local (tutorial specific) variables
ENVIRONMENT_PORT=9001
RANDOM_AGENT_PORT=9002
DQN_AGENT_PORT=9003

# Cogment environment variables
COGMENT_LIFECYCLE_PORT=9000
COGMENT_ACTOR_PORT=9000
COGMENT_DIRECTORY_PORT=9005
COGMENT_DIRECTORY_ENDPOINT="grpc://localhost:${COGMENT_DIRECTORY_PORT}"
COGMENT_DIRECTORY_AUTHENTICATION_TOKEN="project-tutorial-8"

With this, these two commands in the ./run.sh file are simplified to:

function directory_start() {
_load_dot_env
cogment services directory
}

function orchestrator_start() {
_load_dot_env
cogment services orchestrator
}
- - + + \ No newline at end of file diff --git a/docs/guide/tutorial/advanced-tutorials/human-player.html b/docs/guide/tutorial/advanced-tutorials/human-player.html index d66e431..b745e66 100644 --- a/docs/guide/tutorial/advanced-tutorials/human-player.html +++ b/docs/guide/tutorial/advanced-tutorials/human-player.html @@ -3,16 +3,19 @@ -Add a Human Player in the Loop | Cogment +Add a Human Player in the Loop | Cogment - - - + + + + + +
-

Add a Human Player in the Loop

note

This part of the tutorial follows step 4, make sure you've gone through it before starting this one. Alternatively the completed step 4 can be retrieved from the tutorial's repository.

In this step of the tutorial, we will go over another actor implementation, this time client-side, to enable Humans to play RPS.

Client actor implementation

To involve a human player in our trials, we will add a specific actor implementation in the client. While the previous service actor implementations are exposing endpoints Cogment's orchestrator connects to in order to run a trial, this client actor implementation connects to the orchestrator to join a trial. It changes a lot under the hood and enables interesting network topology because only the client needs to know how to reach the orchestrator, not the other way around. However, as you'll see, in terms of implementation it is very similar.

This actor implementation will be located in the client code in client/main.py

We first need to import the data structures needed to send actions.

from data_pb2 import PlayerAction, ROCK, PAPER, SCISSORS

MOVES = [ROCK, PAPER, SCISSORS]
MOVES_STR = ["👊 rock", "✋ paper", "✌️ scissors"]
MOVES_PROMPT = ', '.join([ f"{name} ({idx})" for idx, name in enumerate(MOVES_STR)])

In the main function we then implement the human_player actor implementation, only playing PAPER for the moment, register the implementation and join the trial once it is initialized.

context = cogment.Context(cog_settings=cog_settings, user_id="rps")

async def human_player(actor_session):
round_index = 0

actor_session.start()

async for event in actor_session.all_events():
if event.observation:
observation = event.observation

if event.type == cogment.EventType.ACTIVE:
print(f"\n-- Round #{round_index + 1} --\n")

next_action = PlayerAction(move=PAPER)
actor_session.do_action(next_action)

round_index += 1

context.register_actor(
impl=human_player,
impl_name="human",
actor_classes=["player"])

We update the configuration of the first actor to use special endpoint, "cogment://client", which tells the orchestrator to wait for a client to connect to it. We also don't need to specify an implementation name.

actor_1_params = cogment.ActorParameters(
cog_settings,
name="player_1",
class_name="player",
endpoint="cogment://client"
)

Because the client actor will be active during the trial, we no longer need to use watch_trials to await trial termination but simply need to await context.join_trial completion.

# Defining the trial id on the client side
trial_id=f"rps-{datetime.datetime.now().isoformat()}"

# Start a new trial using the trial params we just created
trial_id = await controller.start_trial(trial_id_requested=trial_id, trial_params=trial_params)
print(f"Trial '{trial_id}' started")

# Let the human actor join the trial
await context.join_trial(trial_id=trial_id, endpoint=cogment.Endpoint(ORCHESTRATOR_ENDPOINT), actor_name="player_1")
print(f"Trial '{trial_id}' ended")

Modify the client/main.py file with these updates.

You can now build and run the application. Everything should work but player 1 shouldn't fare too well as it only ever plays PAPER.

Interactive prompt to let Humans play RPS

Let's add a text user interface to our client in order to finally challenge AIs to a game of RPS.

First we'll want to display what was played in the previous round. We will implement a dedicated function print_observation.

def print_observation(observation):
print(f"🧑 played {MOVES_STR[observation.observation.me.last_move]}")
print(f"🤖 played {MOVES_STR[observation.observation.them.last_move]}")
if observation.observation.me.won_last:
print(f" -> 🧑 wins round #{round_index + 1}")
elif observation.observation.them.won_last:
print(f" -> 🤖 wins the round #{round_index + 1}")
else:
print(f" -> round #{round_index + 1} is a draw")

It needs to be called whenever the actor receives an observation, except for the first time, before the first round is played. Add the following just after the observation is retrieved in the event loop.

if round_index > 0:
# The only time the observation is not relevant is on the first round of the first game
print_observation(observation)

Last but not least, instead of always picking PAPER we will read from the keyboard input what the player wishes to play. Using python's input function we can print a prompt and read whatever the user enters before pressing <ENTER>.

Note that the following implementation expects a number between 1 and 3 and doesn't handle well any other input.

move = MOVES[int(input(MOVES_PROMPT))]
next_action = PlayerAction(move=move)

Modify the client/main.py file to include the above additions.

You can now build and run the application. You'll be presented with a prompt for choosing your moves and comparing your skills to the simple heuristic AI we implemented earlier.

This concludes the step 5 of the tutorial: you implemented your first client actor and put your first human in the loop! This is also the final step for the basics tutorial.

You can continue by implementing a web client to replace the command line interface we just developed in step 6.

- - +

Add a Human Player in the Loop

note

This part of the tutorial follows step 4, make sure you've gone through it before starting this one. Alternatively the completed step 4 can be retrieved from the tutorial's repository.

In this step of the tutorial, we will go over another actor implementation, this time client-side, to enable Humans to play RPS.

Client actor implementation

To involve a human player in our trials, we will add a specific actor implementation in the client. While the previous service actor implementations are exposing endpoints Cogment's orchestrator connects to in order to run a trial, this client actor implementation connects to the orchestrator to join a trial. It changes a lot under the hood and enables interesting network topology because only the client needs to know how to reach the orchestrator, not the other way around. However, as you'll see, in terms of implementation it is very similar.

This actor implementation will be located in the client code in client/main.py

We first need to import the data structures needed to send actions.

from data_pb2 import PlayerAction, ROCK, PAPER, SCISSORS

MOVES = [ROCK, PAPER, SCISSORS]
MOVES_STR = ["👊 rock", "✋ paper", "✌️ scissors"]
MOVES_PROMPT = ', '.join([ f"{name} ({idx})" for idx, name in enumerate(MOVES_STR)])

In the main function we then implement the human_player actor implementation, only playing PAPER for the moment, register the implementation and join the trial once it is initialized.

context = cogment.Context(cog_settings=cog_settings, user_id="rps")

async def human_player(actor_session):
round_index = 0

actor_session.start()

async for event in actor_session.all_events():
if event.observation:
observation = event.observation

if event.type == cogment.EventType.ACTIVE:
print(f"\n-- Round #{round_index + 1} --\n")

next_action = PlayerAction(move=PAPER)
actor_session.do_action(next_action)

round_index += 1

context.register_actor(
impl=human_player,
impl_name="human",
actor_classes=["player"])

We update the configuration of the first actor to use special endpoint, "cogment://client", which tells the orchestrator to wait for a client to connect to it. We also don't need to specify an implementation name.

actor_1_params = cogment.ActorParameters(
cog_settings,
name="player_1",
class_name="player",
endpoint="cogment://client"
)

Because the client actor will be active during the trial, we no longer need to use watch_trials to await trial termination but simply need to await context.join_trial completion.

# Defining the trial id on the client side
trial_id=f"rps-{datetime.datetime.now().isoformat()}"

# Start a new trial using the trial params we just created
trial_id = await controller.start_trial(trial_id_requested=trial_id, trial_params=trial_params)
print(f"Trial '{trial_id}' started")

# Let the human actor join the trial
await context.join_trial(trial_id=trial_id, endpoint=cogment.Endpoint(ORCHESTRATOR_ENDPOINT), actor_name="player_1")
print(f"Trial '{trial_id}' ended")

Modify the client/main.py file with these updates.

You can now build and run the application. Everything should work but player 1 shouldn't fare too well as it only ever plays PAPER.

Interactive prompt to let Humans play RPS

Let's add a text user interface to our client in order to finally challenge AIs to a game of RPS.

First we'll want to display what was played in the previous round. We will implement a dedicated function print_observation.

def print_observation(observation):
print(f"🧑 played {MOVES_STR[observation.observation.me.last_move]}")
print(f"🤖 played {MOVES_STR[observation.observation.them.last_move]}")
if observation.observation.me.won_last:
print(f" -> 🧑 wins round #{round_index + 1}")
elif observation.observation.them.won_last:
print(f" -> 🤖 wins the round #{round_index + 1}")
else:
print(f" -> round #{round_index + 1} is a draw")

It needs to be called whenever the actor receives an observation, except for the first time, before the first round is played. Add the following just after the observation is retrieved in the event loop.

if round_index > 0:
# The only time the observation is not relevant is on the first round of the first game
print_observation(observation)

Last but not least, instead of always picking PAPER we will read from the keyboard input what the player wishes to play. Using python's input function we can print a prompt and read whatever the user enters before pressing <ENTER>.

Note that the following implementation expects a number between 1 and 3 and doesn't handle well any other input.

move = MOVES[int(input(MOVES_PROMPT))]
next_action = PlayerAction(move=move)

Modify the client/main.py file to include the above additions.

You can now build and run the application. You'll be presented with a prompt for choosing your moves and comparing your skills to the simple heuristic AI we implemented earlier.

This concludes the step 5 of the tutorial: you implemented your first client actor and put your first human in the loop! This is also the final step for the basics tutorial.

You can continue by implementing a web client to replace the command line interface we just developed in step 6.

+ + \ No newline at end of file diff --git a/docs/guide/tutorial/advanced-tutorials/web-client.html b/docs/guide/tutorial/advanced-tutorials/web-client.html index 6bb424b..c53c8f5 100644 --- a/docs/guide/tutorial/advanced-tutorials/web-client.html +++ b/docs/guide/tutorial/advanced-tutorials/web-client.html @@ -3,16 +3,19 @@ -Add a Web Client for the Human Player | Cogment +Add a Web Client for the Human Player | Cogment - - - + + + + + +
-

Add a Web Client for the Human Player

note

This part of the tutorial follows step 5, make sure you've gone through it before starting this one. Alternatively the completed step 5 can be retrieved from the tutorial's repository.

In this step of the tutorial, we will go over a web client implementation, to enable Humans to play RPS, while being able to take advantage of various web technologies.

Prerequisites

To develop a web client, we will need a working installation of Node.js, version 14 or later. You can download and install this from: https://nodejs.org/en/download/

The web client

In the previous steps, we triggered the trials by running ./run.sh trial_runner_start. This launched a trial using code in trial_runner/main.py. In this step we will trigger a trial using a React web app.

Before we start with the Cogment side of things, we'll need to get a few prerequisite files setup.

Creating a React app

First, we will initialize a React app. This can be done very simply by running from the root rps folder:

npx create-react-app web_client

Once this is done, we will be able to open a React app in our browser by running the following commands:

cd web_client
npm start

Adding Material UI

We will be using Material UI for this web client. This will provide us with a nice and clean way to add styles to our application, as well as some components which we will use to reduce code size.

Install Material UI by running the following commands from inside of the web_client folder:

npm install @mui/material @emotion/react @emotion/styled
npm install @mui/icons-material
note

Due to the nature of create-react-app when installed using the npx command, the resulting installation will always utilize the latest version of React. This may cause dependecy issues when installing Material UI. As such, whenever such issues are encountered, please refer to the Material UI documentation to confirm the correct required version of React.

Update the run script

In this tutorial we will add a new service that builds and serves the web clients. We will also need to configure the orchestrator to expose its services to the web client using grpcweb.

tip

Cogment internally relies on grpcwebproxy to allow its grpc endpoints to be utilized by web applications. Web applications cannot natively use the grpc protocol that all Cogment modules use to communicate with one another. Using this proxy to translate the web socket connections it accepts into grpc requests solves this issue.

We will need to update the run.sh script and the .env file to do that.

note

The run.sh script that we use for this tutorial is a helpful way to build services and run them, you can take inspiration from it in your own projects.

To prepare for the additional service, let's add the following environment variables to the .env file:

ORCHESTRATOR_HTTP_PORT=9003 # This is the port that orchestrator will listen on for grpcweb connections.
WEB_CLIENT_PORT=8000 # This is the port that the web client will listen on.

In the ./run.sh script we will add two new commands to build and start the web client:

function web_client_build() {
_load_dot_env # Load the environment variables from the dotenv file
cp "${ROOT_DIR}/data.proto" "${ROOT_DIR}/cogment.yaml" "${ROOT_DIR}/web_client" # Copy the spec and protobuf files
cd "${ROOT_DIR}/web_client"
npm install # Install dependencies
npx cogment-js-sdk-generate cogment.yaml # Run the code generation phase
}

function web_client_start() {
_load_dot_env
export PORT="${WEB_CLIENT_PORT}" # Define the PORT the web client will use
export REACT_APP_ORCHESTRATOR_HTTP_ENDPOINT="http://${ORCHESTRATOR_HOST}:${ORCHESTRATOR_HTTP_PORT}" # Define the endpoint it will connect to
cd "${ROOT_DIR}/web_client"
npm start
}

We will also need to pass additional parameters to cogment when starting the orchestrator to enable the grpcweb server and to specifiy the trial parameters. The latter is needed because contrary to clients using the python sdk, web clients can't specify the trial parameters directly.

function orchestrator_start() {
_load_dot_env
cogment services orchestrator \
--actor_port="${ORCHESTRATOR_PORT}" \
--lifecycle_port="${ORCHESTRATOR_PORT}" \
--actor_web_port="${ORCHESTRATOR_HTTP_PORT}" \
--params="./params.yaml"
}

Finally in this file, we will add the web client build to the build command.

function build() {
_run_sequence client_build environment_build random_agent_build web_client_build
}

The parameters file

The parameters file is a .yaml file that specifies the default trial parameters to Cogment. In this tutorial, we will use the following parameters:

trial_params:
environment:
endpoint: grpc://localhost:9001

actors:
- name: player_1
actor_class: player
endpoint: cogment://client
- name: player_2
actor_class: player
implementation: heuristic_agent
endpoint: grpc://localhost:9002

Create a params.yaml file in the root folder with the previous content.

Adding Cogment to our web client

The easiest way to add Cogment to any web client is to start with a React app, then follow the three steps below:

  1. Install the Javascript SDK and typescript using:

    npm install @cogment/cogment-js-sdk
    npm install --save-dev typescript

    while inside of the web_client folder

  2. Copy the hooks folder from the tutorial's repository, found at 6-web-client/web_client/src/, into your src folder.

  3. Navigate nack to the rps folder then run the following command to generate Javascript files from your trial specs:

    ./run.sh web_client_build

Now that all that's done, we can finally start coding our web client!

CODE

NOTE: For each of the following files, we will provide the styles in a code block. Feel free to skip these, or make your own; they are not important to the function of this application.

index.js / index.css

When we created our React app, these two files were generated automatically. Replace their content with the following:

NOTE: These can also be downloaded from the tutorial's repository.

index.css:

body {
margin: 0;
background-color: #c5cce8;
}

index.js

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import { App } from "./App";
import {
createTheme,
responsiveFontSizes,
ThemeProvider,
} from "@mui/material/styles";

let theme = createTheme({
palette: {
primary: {
light: "#c5cce8",
main: "#6B80C4",
},
secondary: {
main: "#ffb400",
},
},
});

theme = responsiveFontSizes(theme);

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<React.StrictMode>
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
</React.StrictMode>
);

This is simply to provide styles to our Material UI components. We haven't started with the actual Cogment part yet, which is exactly what we'll be doing next.

App.js

We'll start with a few imports. Some of these files don't exist yet, so we'll be creating them:

//First is some React imports
import React, { useEffect } from "react";

//Then some imports for icons and Material UI functionality we'll be using
import { Box, Button, Typography } from "@mui/material";
import { useTheme } from "@mui/material/styles";

//And here's the important part: we're importing the two things that will allow us to use Cogment.

//First, the 'useActions' hook which will give us our observations as a human agent, as well as allow us to send actions.
import { useActions } from "./hooks/useActions";

//Second, our 'cogSettings'. This is a file that was generated when we ran
//`npx cogment-js-sdk-generate cogment.yaml`
//This file tells our web client relevant information about our trials, environments, and actor classes.
import { cogSettings } from "./CogSettings";

//These are messages which were defined in data.proto. These imports will need to change whenever their corresponding messages in data.proto are changed and `npx cogment-js-sdk-generate cogment.yaml` is run.
import { rps as PB } from "./data_pb";

Then we add a function that will convert the play, encoded as the same "move" enum that we defined in our data.proto, to a string we can use in our application:

function getMoveText(move) {
switch (move) {
case 0:
return "rock";
case 1:
return "paper";
case 2:
return "scissors";
default:
throw new Error("Not a rock, paper, or scissors");
}
}

Finally, the React component.

At the start of this component is the most important part of our application: the useAction hook.

This hook returns an array with 3 elements:

  • event: this contains all the information about any observation, reward, or message we've received this tick. We will use this to see what plays we and the computer made.

  • startTrial: this is a function which takes no arguments, and is a very simple way to start a new trial with our player actor.

  • sendAction: this is a function which takes an argument of type 'Action'. This class can be imported from data_pb.js, but we'll see that later in this tutorial.

This hook takes in 3 arguments:

  • cogSettings: this is what's imported from CogSettings.js. It provides all the relevant information about data.proto to this hook so that it can function.

  • actorName: the name of the human actor which this web client will be representing. It should be aligned with what's defined in params.yaml.

  • actorClass: the class of the human actor which this web client will be representing. It should be aligned with what's defined in params.yaml.

export const App = () => {
const [event, startTrial, sendAction] = useActions(
cogSettings,
"player_1",
"player"
);

//Function to construct the Action which the player will send when they click either rock, paper, or scissors
const choose = (move) => {
const action = new PB.PlayerAction({
move,
});
sendAction(action);
};

//This will start a trial as soon as we're connected to the orchestrator
useEffect(() => {
if (startTrial) startTrial();
}, [startTrial]);

//Get any observation from the current event, events have observations, messages, and rewards, and all three can be unpacked from the event object
//We will also unpack a helpful variable called 'last', this will allow us to know when the trial has ended
const { observation, last } = event;

const [gameState, setGameState] = useState({
gameStage: "start",
roundIndex: 0,
lastMoveComputer: 0,
lastMoveHuman: 0,
});
const [firstObservation, setFirstObservation] = useState(true);

useEffect(() => {
//Parse game state out of the observation
//Some events don't contain an observation, so we need to store the observation contents in a state
if (!observation) return;

//The first observation is not useful, as it just contains the default game state, before players have made moves
if (firstObservation) {
setFirstObservation(false);
return;
}

//Get all relevant information from the observation
const roundIndex = gameState.roundIndex + 1;
const gameStage = "playing";
const lastMoveComputer = observation.them.lastMove;
const lastMoveHuman = observation.me.lastMove;
const lastWonComputer = observation.them.wonLast;
const lastWonHuman = observation.me.wonLast;

setGameState({
gameStage,
roundIndex,
lastMoveComputer,
lastMoveHuman,
lastWonComputer,
lastWonHuman,
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [observation]);

//The layout of the page
return (
<Box>
{/*
Tell the player everything we know about the trial state, such as, plays, who won, etc...
*/}
<Typography>Game stage: {gameState.gameStage}</Typography>
<Typography>
Human's move:{" "}
{gameState.gameStage !== "start" &&
getMoveText(gameState.lastMoveHuman)}
</Typography>
<Typography>
Computer's move:{" "}
{gameState.gameStage !== "start" &&
getMoveText(gameState.lastMoveComputer)}
</Typography>
<Typography>
Did Human win last round?{" "}
{observation && gameState.lastWonHuman ? "Yes" : "No"}
</Typography>
<Typography>
Did Computer win last round?{" "}
{observation && gameState.lastWonComputer ? "Yes" : "No"}
</Typography>
<Button onClick={() => choose(0)}>Rock</Button>
<Button onClick={() => choose(1)}>Paper</Button>
<Button onClick={() => choose(2)}>Scissors</Button>
</Box>
);
};

hooks/useActions.js

This hook does multiple things. It starts a trial, joins a trial, sends actions, and receives information from the orchestrator. The following is its annotated code:

import { Context } from "@cogment/cogment-js-sdk";
import { useEffect, useState } from "react";

export const useActions = (cogSettings, actorName, actorClass) => {
const [event, setEvent] = useState({
observation: null,
actions: null,
messages: null,
rewards: null,
type: null,
last: false,
});

const [startTrial, setStartTrial] = useState(null);
const [sendAction, setSendAction] = useState(null);

//Set up the connection and register the actor only once, regardless of re-rendering
useEffect(() => {
const context = new Context(cogSettings, actorName);

context.registerActor(
async (actorSession) => {
actorSession.start();

//Double arrow function here beause react will turn a single one into a lazy loaded function
setSendAction(() => (action) => {
actorSession.doAction(action);
});

for await (const event of actorSession.eventLoop()) {
const eventUseActions = event;

eventUseActions.last = event.type === 3;

setEvent(eventUseActions);
}
},
actorName,
actorClass
);

const endpoint = process.env.REACT_APP_ORCHESTRATOR_HTTP_ENDPOINT;
const controller = context.getController(endpoint);

//Need to output a function so that the user can start the trial when all actors are connected
//Again, double arrow function cause react will turn a single one into a lazy loaded function
setStartTrial(() => async () => {
const trialId = await controller.startTrial();
await context.joinTrial(trialId, endpoint, actorName);
});
}, [cogSettings, actorName, actorClass]);

return [event, startTrial, sendAction];
};

We also need to create web_client/.eslintignore and add the following to it to ignore checks on the generate files:

src/*_pb*
src/cog_settings*

You can now see our app fully functional running the following commands in the rps folder:

./run.sh build
./run.sh services_start

In another terminal, start the web client:

 ./run.sh web_client_start

And opening up <localhost:8000> in our browser.

And with that we're done!

Making it look good

If we want a fancier interface, there is a completed UI in the tutorials repository that we can copy into our project. Then, along with some style code that can be found in the repository version of App.js, just replace the return statement from App.js with the following:

<Box>
<Header observation={observation} gameState={gameState} />
<Container className={classes.container}>
<Player
score={humanScore}
color={theme.palette.primary.main}
IconClass={PersonIcon}
choose={choose}
isHuman
/>

<Player
score={computerScore}
color={theme.palette.secondary.main}
IconClass={ComputerIcon}
selected={
gameState !== "start" &&
getMoveText(observation.them.lastRoundMove)
}
/>
</Container>
</Box>
- - +

Add a Web Client for the Human Player

note

This part of the tutorial follows step 5, make sure you've gone through it before starting this one. Alternatively the completed step 5 can be retrieved from the tutorial's repository.

In this step of the tutorial, we will go over a web client implementation, to enable Humans to play RPS, while being able to take advantage of various web technologies.

Prerequisites

To develop a web client, we will need a working installation of Node.js, version 14 or later. You can download and install this from: https://nodejs.org/en/download/

The web client

In the previous steps, we triggered the trials by running ./run.sh trial_runner_start. This launched a trial using code in trial_runner/main.py. In this step we will trigger a trial using a React web app.

Before we start with the Cogment side of things, we'll need to get a few prerequisite files setup.

Creating a React app

First, we will initialize a React app. This can be done very simply by running from the root rps folder:

npx create-react-app web_client

Once this is done, we will be able to open a React app in our browser by running the following commands:

cd web_client
npm start

Adding Material UI

We will be using Material UI for this web client. This will provide us with a nice and clean way to add styles to our application, as well as some components which we will use to reduce code size.

Install Material UI by running the following commands from inside of the web_client folder:

npm install @mui/material @emotion/react @emotion/styled
npm install @mui/icons-material
note

Due to the nature of create-react-app when installed using the npx command, the resulting installation will always utilize the latest version of React. This may cause dependecy issues when installing Material UI. As such, whenever such issues are encountered, please refer to the Material UI documentation to confirm the correct required version of React.

Update the run script

In this tutorial we will add a new service that builds and serves the web clients. We will also need to configure the orchestrator to expose its services to the web client using grpcweb.

tip

Cogment internally relies on grpcwebproxy to allow its grpc endpoints to be utilized by web applications. Web applications cannot natively use the grpc protocol that all Cogment modules use to communicate with one another. Using this proxy to translate the web socket connections it accepts into grpc requests solves this issue.

We will need to update the run.sh script and the .env file to do that.

note

The run.sh script that we use for this tutorial is a helpful way to build services and run them, you can take inspiration from it in your own projects.

To prepare for the additional service, let's add the following environment variables to the .env file:

ORCHESTRATOR_HTTP_PORT=9003 # This is the port that orchestrator will listen on for grpcweb connections.
WEB_CLIENT_PORT=8000 # This is the port that the web client will listen on.

In the ./run.sh script we will add two new commands to build and start the web client:

function web_client_build() {
_load_dot_env # Load the environment variables from the dotenv file
cp "${ROOT_DIR}/data.proto" "${ROOT_DIR}/cogment.yaml" "${ROOT_DIR}/web_client" # Copy the spec and protobuf files
cd "${ROOT_DIR}/web_client"
npm install # Install dependencies
npx cogment-js-sdk-generate cogment.yaml # Run the code generation phase
}

function web_client_start() {
_load_dot_env
export PORT="${WEB_CLIENT_PORT}" # Define the PORT the web client will use
export REACT_APP_ORCHESTRATOR_HTTP_ENDPOINT="http://${ORCHESTRATOR_HOST}:${ORCHESTRATOR_HTTP_PORT}" # Define the endpoint it will connect to
cd "${ROOT_DIR}/web_client"
npm start
}

We will also need to pass additional parameters to cogment when starting the orchestrator to enable the grpcweb server and to specifiy the trial parameters. The latter is needed because contrary to clients using the python sdk, web clients can't specify the trial parameters directly.

function orchestrator_start() {
_load_dot_env
cogment services orchestrator \
--actor_port="${ORCHESTRATOR_PORT}" \
--lifecycle_port="${ORCHESTRATOR_PORT}" \
--actor_web_port="${ORCHESTRATOR_HTTP_PORT}" \
--params="./params.yaml"
}

Finally in this file, we will add the web client build to the build command.

function build() {
_run_sequence client_build environment_build random_agent_build web_client_build
}

The parameters file

The parameters file is a .yaml file that specifies the default trial parameters to Cogment. In this tutorial, we will use the following parameters:

trial_params:
environment:
endpoint: grpc://localhost:9001

actors:
- name: player_1
actor_class: player
endpoint: cogment://client
- name: player_2
actor_class: player
implementation: heuristic_agent
endpoint: grpc://localhost:9002

Create a params.yaml file in the root folder with the previous content.

Adding Cogment to our web client

The easiest way to add Cogment to any web client is to start with a React app, then follow the three steps below:

  1. Install the Javascript SDK and typescript using:

    npm install @cogment/cogment-js-sdk
    npm install --save-dev typescript

    while inside of the web_client folder

  2. Copy the hooks folder from the tutorial's repository, found at 6-web-client/web_client/src/, into your src folder.

  3. Navigate nack to the rps folder then run the following command to generate Javascript files from your trial specs:

    ./run.sh web_client_build

Now that all that's done, we can finally start coding our web client!

CODE

NOTE: For each of the following files, we will provide the styles in a code block. Feel free to skip these, or make your own; they are not important to the function of this application.

index.js / index.css

When we created our React app, these two files were generated automatically. Replace their content with the following:

NOTE: These can also be downloaded from the tutorial's repository.

index.css:

body {
margin: 0;
background-color: #c5cce8;
}

index.js

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import { App } from "./App";
import {
createTheme,
responsiveFontSizes,
ThemeProvider,
} from "@mui/material/styles";

let theme = createTheme({
palette: {
primary: {
light: "#c5cce8",
main: "#6B80C4",
},
secondary: {
main: "#ffb400",
},
},
});

theme = responsiveFontSizes(theme);

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<React.StrictMode>
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
</React.StrictMode>
);

This is simply to provide styles to our Material UI components. We haven't started with the actual Cogment part yet, which is exactly what we'll be doing next.

App.js

We'll start with a few imports. Some of these files don't exist yet, so we'll be creating them:

//First is some React imports
import React, { useEffect } from "react";

//Then some imports for icons and Material UI functionality we'll be using
import { Box, Button, Typography } from "@mui/material";
import { useTheme } from "@mui/material/styles";

//And here's the important part: we're importing the two things that will allow us to use Cogment.

//First, the 'useActions' hook which will give us our observations as a human agent, as well as allow us to send actions.
import { useActions } from "./hooks/useActions";

//Second, our 'cogSettings'. This is a file that was generated when we ran
//`npx cogment-js-sdk-generate cogment.yaml`
//This file tells our web client relevant information about our trials, environments, and actor classes.
import { cogSettings } from "./CogSettings";

//These are messages which were defined in data.proto. These imports will need to change whenever their corresponding messages in data.proto are changed and `npx cogment-js-sdk-generate cogment.yaml` is run.
import { rps as PB } from "./data_pb";

Then we add a function that will convert the play, encoded as the same "move" enum that we defined in our data.proto, to a string we can use in our application:

function getMoveText(move) {
switch (move) {
case 0:
return "rock";
case 1:
return "paper";
case 2:
return "scissors";
default:
throw new Error("Not a rock, paper, or scissors");
}
}

Finally, the React component.

At the start of this component is the most important part of our application: the useAction hook.

This hook returns an array with 3 elements:

  • event: this contains all the information about any observation, reward, or message we've received this tick. We will use this to see what plays we and the computer made.

  • startTrial: this is a function which takes no arguments, and is a very simple way to start a new trial with our player actor.

  • sendAction: this is a function which takes an argument of type 'Action'. This class can be imported from data_pb.js, but we'll see that later in this tutorial.

This hook takes in 3 arguments:

  • cogSettings: this is what's imported from CogSettings.js. It provides all the relevant information about data.proto to this hook so that it can function.

  • actorName: the name of the human actor which this web client will be representing. It should be aligned with what's defined in params.yaml.

  • actorClass: the class of the human actor which this web client will be representing. It should be aligned with what's defined in params.yaml.

export const App = () => {
const [event, startTrial, sendAction] = useActions(
cogSettings,
"player_1",
"player"
);

//Function to construct the Action which the player will send when they click either rock, paper, or scissors
const choose = (move) => {
const action = new PB.PlayerAction({
move,
});
sendAction(action);
};

//This will start a trial as soon as we're connected to the orchestrator
useEffect(() => {
if (startTrial) startTrial();
}, [startTrial]);

//Get any observation from the current event, events have observations, messages, and rewards, and all three can be unpacked from the event object
//We will also unpack a helpful variable called 'last', this will allow us to know when the trial has ended
const { observation, last } = event;

const [gameState, setGameState] = useState({
gameStage: "start",
roundIndex: 0,
lastMoveComputer: 0,
lastMoveHuman: 0,
});
const [firstObservation, setFirstObservation] = useState(true);

useEffect(() => {
//Parse game state out of the observation
//Some events don't contain an observation, so we need to store the observation contents in a state
if (!observation) return;

//The first observation is not useful, as it just contains the default game state, before players have made moves
if (firstObservation) {
setFirstObservation(false);
return;
}

//Get all relevant information from the observation
const roundIndex = gameState.roundIndex + 1;
const gameStage = "playing";
const lastMoveComputer = observation.them.lastMove;
const lastMoveHuman = observation.me.lastMove;
const lastWonComputer = observation.them.wonLast;
const lastWonHuman = observation.me.wonLast;

setGameState({
gameStage,
roundIndex,
lastMoveComputer,
lastMoveHuman,
lastWonComputer,
lastWonHuman,
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [observation]);

//The layout of the page
return (
<Box>
{/*
Tell the player everything we know about the trial state, such as, plays, who won, etc...
*/}
<Typography>Game stage: {gameState.gameStage}</Typography>
<Typography>
Human's move:{" "}
{gameState.gameStage !== "start" &&
getMoveText(gameState.lastMoveHuman)}
</Typography>
<Typography>
Computer's move:{" "}
{gameState.gameStage !== "start" &&
getMoveText(gameState.lastMoveComputer)}
</Typography>
<Typography>
Did Human win last round?{" "}
{observation && gameState.lastWonHuman ? "Yes" : "No"}
</Typography>
<Typography>
Did Computer win last round?{" "}
{observation && gameState.lastWonComputer ? "Yes" : "No"}
</Typography>
<Button onClick={() => choose(0)}>Rock</Button>
<Button onClick={() => choose(1)}>Paper</Button>
<Button onClick={() => choose(2)}>Scissors</Button>
</Box>
);
};

hooks/useActions.js

This hook does multiple things. It starts a trial, joins a trial, sends actions, and receives information from the orchestrator. The following is its annotated code:

import { Context } from "@cogment/cogment-js-sdk";
import { useEffect, useState } from "react";

export const useActions = (cogSettings, actorName, actorClass) => {
const [event, setEvent] = useState({
observation: null,
actions: null,
messages: null,
rewards: null,
type: null,
last: false,
});

const [startTrial, setStartTrial] = useState(null);
const [sendAction, setSendAction] = useState(null);

//Set up the connection and register the actor only once, regardless of re-rendering
useEffect(() => {
const context = new Context(cogSettings, actorName);

context.registerActor(
async (actorSession) => {
actorSession.start();

//Double arrow function here beause react will turn a single one into a lazy loaded function
setSendAction(() => (action) => {
actorSession.doAction(action);
});

for await (const event of actorSession.eventLoop()) {
const eventUseActions = event;

eventUseActions.last = event.type === 3;

setEvent(eventUseActions);
}
},
actorName,
actorClass
);

const endpoint = process.env.REACT_APP_ORCHESTRATOR_HTTP_ENDPOINT;
const controller = context.getController(endpoint);

//Need to output a function so that the user can start the trial when all actors are connected
//Again, double arrow function cause react will turn a single one into a lazy loaded function
setStartTrial(() => async () => {
const trialId = await controller.startTrial();
await context.joinTrial(trialId, endpoint, actorName);
});
}, [cogSettings, actorName, actorClass]);

return [event, startTrial, sendAction];
};

We also need to create web_client/.eslintignore and add the following to it to ignore checks on the generate files:

src/*_pb*
src/cog_settings*

You can now see our app fully functional running the following commands in the rps folder:

./run.sh build
./run.sh services_start

In another terminal, start the web client:

 ./run.sh web_client_start

And opening up <localhost:8000> in our browser.

And with that we're done!

Making it look good

If we want a fancier interface, there is a completed UI in the tutorials repository that we can copy into our project. Then, along with some style code that can be found in the repository version of App.js, just replace the return statement from App.js with the following:

<Box>
<Header observation={observation} gameState={gameState} />
<Container className={classes.container}>
<Player
score={humanScore}
color={theme.palette.primary.main}
IconClass={PersonIcon}
choose={choose}
isHuman
/>

<Player
score={computerScore}
color={theme.palette.secondary.main}
IconClass={ComputerIcon}
selected={
gameState !== "start" &&
getMoveText(observation.them.lastRoundMove)
}
/>
</Container>
</Box>
+ + \ No newline at end of file diff --git a/docs/guide/tutorial/decision-making.html b/docs/guide/tutorial/decision-making.html index 6d5c04d..53a5bc3 100644 --- a/docs/guide/tutorial/decision-making.html +++ b/docs/guide/tutorial/decision-making.html @@ -3,16 +3,19 @@ -Step 4 - Making Decisions with Feedback | Cogment +Step 4 - Making Decisions with Feedback | Cogment - - - + + + + + +
-

Making Decisions with Feedback

In this step of the tutorial, we will start thinking about rewards. Rewards are a way to evaluate how an Actor performs at a task. They can be used to evaluate or compare different implementations of an Actor, or, especially in the context of Reinforcement Learning, train a model. In Cogment, both the environment and other actors can evaluate an actor. Here, we will focus on sending rewards from the environment.

including feedback from the environment

Until now, the concept of game is only known to the Environment. It has no impact on the Observation and action spaces, and thus no impact on the Actor implementation. This means an actor wouldn't know that the round it currently plays is the tie breaker in a game or its very first round. As a result the actor will play every round the same way.

In this step we will allow the Environment to send rewards to the actors, and modify Bob's implementations to make use of this kind of information in gameplay and compare how it performs against Alice's implementation.

Sending Rewards to the Actors

Here, we will modify environment/main.py to include rewards when passing information to the Actors. Note that not all actions need to be rewarded. When a game is won, the Environment will add a positive reward to the winner (we chose a value of 1) and a negative reward to the loser (we chose a value of -1). Cogment also supports the notion of confidence, a weight between 0 and 1 that expresses the qualification of the reward sender in its appreciation. In this case we are applying objective rules, so we use a confidence of 1.

In the event loop, when the first player wins a game we add the following:

environment_session.add_reward(value=1, confidence=1, to=[p1.actor_name])
environment_session.add_reward(value=-1, confidence=1, to=[p2.actor_name])

When the second player wins a game we add the following:

environment_session.add_reward(value=-1, confidence=1, to=[p1.actor_name])
environment_session.add_reward(value=1, confidence=1, to=[p2.actor_name])

Modify the environment/main.py file to include the above additions.

Your Environment implementation event block should now look like this:

Environment implementation with rewards

You can now build and run the application to check that it works as expected. In particular, you should see logs relative to the reception of rewards on the Actor side.

Enabling Actors to Make Use of Information from the Environment

In this section, we will create a new Actor implementation in actors/main.py below our random_agent implementation. We'll call our new implementation heuristic_agent - it will just use a simple decision making logic for selecting an action based on the Observation it receives.

This Actor will also need to know what moves beat other moves. In the "Settings" section, add the DEFEATS we specified in the Environment:

DEFEATS = {
ROCK: PAPER,
SCISSORS: ROCK,
PAPER: SCISSORS
}

Now we can include a new Actor implementation that makes choices that utilize this knowledge. In actors/main.py add the following to the "Actor Implementation Functions" section:

async def heuristic_agent(actor_session):
# initialization
actor_session.start()

# event loop
async for event in actor_session.all_events():
if event.observation:
observation = event.observation
print(f"'{actor_session.name}' received an observation: '{observation}'")
if event.type == cogment.EventType.ACTIVE:
if observation.observation.me.won_last:
# I won the last round, let's play the same thing
actor_session.do_action(PlayerAction(move=observation.observation.me.last_move))
elif observation.observation.them.won_last:
# I lost the last round, let's play what would have won
actor_session.do_action(PlayerAction(move=DEFEATS[observation.observation.them.last_move]))
else:
# last round was a draw, let's play randomly
actor_session.do_action(PlayerAction(move=random.choice(MOVES)))
for reward in event.rewards:
print(f"'{actor_session.name}' received a reward for tick #{reward.tick_id}: {reward.value}")

# termination

This heuristic player uses a simple strategy for winning: if my last move was successful, play it again, and if it wasn't, play what would have won the last round. If the last round ended in a draw, select an action at random.

Registering a new Actor with Cogment

Before we can use this new actor, we will need to register it with Cogment.

In the main function of actors/main.py, add the following:

context.register_actor(
impl=heuristic_agent, # implementation defined above
impl_name="heuristic_agent",
actor_classes=["player",] # actor class defined in the cogment.yaml file
)

This will make Cogment aware of an actor of the player class which uses the heuristic_agent implementation. Next, let's make Bob an Actor of this type.

Modifying Bob

In trial_runner/main.py, we will need to change which type of registered Actor Bob is going to be in the game. Since we have registered this new Actor, all we need to do is change the ActorParameters for Bob. In trial_runner/main.py set the ActorParameters for the Actor named Bob to be:

actor_1_params = cogment.ActorParameters(
cog_settings,
name="Bob",
class_name="player",
endpoint=ACTORS_ENDPOINT,
implementation="heuristic_agent"
)

You can now install and run the application to check that it works. Don't expect the heuristic player to beat the random player, the nature of the game actually rewards pure randomness in the playing. However, now you have all of the tools necessary implement various strategies and see how they fare against each other. This concludes the basic tutorial for Cogment in RPS. If you'd like to try some more advanced techniques, check out the advanced tutorials.

- - +

Making Decisions with Feedback

In this step of the tutorial, we will start thinking about rewards. Rewards are a way to evaluate how an Actor performs at a task. They can be used to evaluate or compare different implementations of an Actor, or, especially in the context of Reinforcement Learning, train a model. In Cogment, both the environment and other actors can evaluate an actor. Here, we will focus on sending rewards from the environment.

including feedback from the environment

Until now, the concept of game is only known to the Environment. It has no impact on the Observation and action spaces, and thus no impact on the Actor implementation. This means an actor wouldn't know that the round it currently plays is the tie breaker in a game or its very first round. As a result the actor will play every round the same way.

In this step we will allow the Environment to send rewards to the actors, and modify Bob's implementations to make use of this kind of information in gameplay and compare how it performs against Alice's implementation.

Sending Rewards to the Actors

Here, we will modify environment/main.py to include rewards when passing information to the Actors. Note that not all actions need to be rewarded. When a game is won, the Environment will add a positive reward to the winner (we chose a value of 1) and a negative reward to the loser (we chose a value of -1). Cogment also supports the notion of confidence, a weight between 0 and 1 that expresses the qualification of the reward sender in its appreciation. In this case we are applying objective rules, so we use a confidence of 1.

In the event loop, when the first player wins a game we add the following:

environment_session.add_reward(value=1, confidence=1, to=[p1.actor_name])
environment_session.add_reward(value=-1, confidence=1, to=[p2.actor_name])

When the second player wins a game we add the following:

environment_session.add_reward(value=-1, confidence=1, to=[p1.actor_name])
environment_session.add_reward(value=1, confidence=1, to=[p2.actor_name])

Modify the environment/main.py file to include the above additions.

Your Environment implementation event block should now look like this:

Environment implementation with rewards

You can now build and run the application to check that it works as expected. In particular, you should see logs relative to the reception of rewards on the Actor side.

Enabling Actors to Make Use of Information from the Environment

In this section, we will create a new Actor implementation in actors/main.py below our random_agent implementation. We'll call our new implementation heuristic_agent - it will just use a simple decision making logic for selecting an action based on the Observation it receives.

This Actor will also need to know what moves beat other moves. In the "Settings" section, add the DEFEATS we specified in the Environment:

DEFEATS = {
ROCK: PAPER,
SCISSORS: ROCK,
PAPER: SCISSORS
}

Now we can include a new Actor implementation that makes choices that utilize this knowledge. In actors/main.py add the following to the "Actor Implementation Functions" section:

async def heuristic_agent(actor_session):
# initialization
actor_session.start()

# event loop
async for event in actor_session.all_events():
if event.observation:
observation = event.observation
print(f"'{actor_session.name}' received an observation: '{observation}'")
if event.type == cogment.EventType.ACTIVE:
if observation.observation.me.won_last:
# I won the last round, let's play the same thing
actor_session.do_action(PlayerAction(move=observation.observation.me.last_move))
elif observation.observation.them.won_last:
# I lost the last round, let's play what would have won
actor_session.do_action(PlayerAction(move=DEFEATS[observation.observation.them.last_move]))
else:
# last round was a draw, let's play randomly
actor_session.do_action(PlayerAction(move=random.choice(MOVES)))
for reward in event.rewards:
print(f"'{actor_session.name}' received a reward for tick #{reward.tick_id}: {reward.value}")

# termination

This heuristic player uses a simple strategy for winning: if my last move was successful, play it again, and if it wasn't, play what would have won the last round. If the last round ended in a draw, select an action at random.

Registering a new Actor with Cogment

Before we can use this new actor, we will need to register it with Cogment.

In the main function of actors/main.py, add the following:

context.register_actor(
impl=heuristic_agent, # implementation defined above
impl_name="heuristic_agent",
actor_classes=["player",] # actor class defined in the cogment.yaml file
)

This will make Cogment aware of an actor of the player class which uses the heuristic_agent implementation. Next, let's make Bob an Actor of this type.

Modifying Bob

In trial_runner/main.py, we will need to change which type of registered Actor Bob is going to be in the game. Since we have registered this new Actor, all we need to do is change the ActorParameters for Bob. In trial_runner/main.py set the ActorParameters for the Actor named Bob to be:

actor_1_params = cogment.ActorParameters(
cog_settings,
name="Bob",
class_name="player",
endpoint=ACTORS_ENDPOINT,
implementation="heuristic_agent"
)

You can now install and run the application to check that it works. Don't expect the heuristic player to beat the random player, the nature of the game actually rewards pure randomness in the playing. However, now you have all of the tools necessary implement various strategies and see how they fare against each other. This concludes the basic tutorial for Cogment in RPS. If you'd like to try some more advanced techniques, check out the advanced tutorials.

+ + \ No newline at end of file diff --git a/docs/guide/tutorial/environment-in-cogment.html b/docs/guide/tutorial/environment-in-cogment.html index beecada..f0f7622 100644 --- a/docs/guide/tutorial/environment-in-cogment.html +++ b/docs/guide/tutorial/environment-in-cogment.html @@ -3,17 +3,20 @@ -Step 3 - The Environment in Cogment | Cogment +Step 3 - The Environment in Cogment | Cogment - - - + + + + + +
-

The Environment: A Game of RPS

In this step of the tutorial, we will look at what is needed to define the Environment in which Actors operate. Our goal in this section is to implement the rules for how the Environment responds to the actions at each step and produces new Observations for the Actors.

What does Cogment need to know about the Environment?

The Environment is the world in which Actors will operate. In the most general terms, we can think of the Environment as being the set of all possible states the world can be in, and the rules which determine the consequences of taking specific actions in these states. For RPS, the Environment can be fully specified by setting which states are possible (the different combinations of ROCK, PAPER and SCISSORS from each Actor), and the rules for what happens when we observe each pair.

To fully specify the Environment in Cogment, we need to define what the Environment is (eg. what makes an RPS game), how computes the outcome of player actions, and where those computations are run.

To better understand how Cogment thinks of the Environment component, we use the following terminology (similar to that used for Actors):

  • The Environment Service is a designated node for taking care of the computations made by the Environment. This is where the Environment computations happen. The Environment Service is launched by environment/main.py on the TCP port set by the ENVIRONMENT_PORT variable in the .env file.
  • The Environment Implementation is the function that specifies the rules of the game. The implementation takes actions as inputs and produces observations as outputs. This is how the Environment operations work. The Environment implementation function we will use is rps_environment defined in environment/main.py

Notice that we don't use a class to define what the Environment does, as we did for the Actors. The specification is still made in the cogment.yaml file, but instead we define what an RPS game is with the EnvironmentConfig message type from the data.proto. You can look in cogment.yaml and data.proto to see, but so far the message is still empty. We will add the necessary information to the message later in this step of the tutorial.

Defining the Environment Service

Let's look at environment/main.py to see how Cogment sets up the Environment.

Registering environment service with Cogment +

The Environment: A Game of RPS

In this step of the tutorial, we will look at what is needed to define the Environment in which Actors operate. Our goal in this section is to implement the rules for how the Environment responds to the actions at each step and produces new Observations for the Actors.

What does Cogment need to know about the Environment?

The Environment is the world in which Actors will operate. In the most general terms, we can think of the Environment as being the set of all possible states the world can be in, and the rules which determine the consequences of taking specific actions in these states. For RPS, the Environment can be fully specified by setting which states are possible (the different combinations of ROCK, PAPER and SCISSORS from each Actor), and the rules for what happens when we observe each pair.

To fully specify the Environment in Cogment, we need to define what the Environment is (eg. what makes an RPS game), how computes the outcome of player actions, and where those computations are run.

To better understand how Cogment thinks of the Environment component, we use the following terminology (similar to that used for Actors):

  • The Environment Service is a designated node for taking care of the computations made by the Environment. This is where the Environment computations happen. The Environment Service is launched by environment/main.py on the TCP port set by the ENVIRONMENT_PORT variable in the .env file.
  • The Environment Implementation is the function that specifies the rules of the game. The implementation takes actions as inputs and produces observations as outputs. This is how the Environment operations work. The Environment implementation function we will use is rps_environment defined in environment/main.py

Notice that we don't use a class to define what the Environment does, as we did for the Actors. The specification is still made in the cogment.yaml file, but instead we define what an RPS game is with the EnvironmentConfig message type from the data.proto. You can look in cogment.yaml and data.proto to see, but so far the message is still empty. We will add the necessary information to the message later in this step of the tutorial.

Defining the Environment Service

Let's look at environment/main.py to see how Cogment sets up the Environment.

Registering environment service with Cogment The code is very similar to what we saw previously for the Actor service: The main() function first initializes a context in which the Environment will be registered. When registering the Environment in the context, we use the register_environment method which takes only an implementation. Here we will use the rps_environment function (also defined in environment/main.py, more on this in a moment) as our implementation.

Then, the main() function will start the Environment service on the appropriate port, and awaits the termination of the service.

note

Ports for running services are specified in the .env file, loaded by the .run.sh script, and retrieved by the os package to make the variable available to Python. To change the port this service uses, update the.env file in the root level of the rps directory rather than changing main.py.

Defining the Environment Implementation

The implementation function, called rps_environment here, is structured similarly to the Actor's implementation.

Defining the Environment Implementation function

Similar to the Actor implementation, there are three parts to the Environment implementation:

  • The initialization block, where we can set variables that are important to know before the session starts. Later in this step of the tutorial, we will set up the initialization block to keep track of some stats about previous actions taken and which player won/lost each round.
  • The event loop, which specifies how the environment produces observations based on the Actors' actions.
  • The termination block, i.e. what happens after all the events have occurred. Here we'll use the termination block to print out some information about what happened between the players during a round of play.

As with the Actor implementation, the Environment implementation takes as an argument the Environment session, which allows the Orchestrator to manage all the data associate with the Environment's operations in the trial.

Note that the Environment implementation makes use of the Observation the data structure defined in data.proto defining the actors observation space, but so far it is just empty - we have not yet provided any data to populate the Observation message.

Implementing the rules of the game

We will first need to bring in the relevant datastructures into the environment/main.py file so that our Environment implementation can work with the same action space and can create the bservations in the format the Actors expect to receive. We can see in environment/main.py that we have already imported the Observation data structure.

If we look at the definition of the Observation message in the data.proto, we see that it stores two fields of PlayerState information: one field keeping track of the player itself and one keeping track of its opponent. This means in order to create the correct type of Observation messages, we will also need to import the PlayerState data structure to environment/main.py. We will also need to import the types of moves that can be made so that we can define the relationships between them.

In the "Imports" section at the top of the file, add the following:

from data_pb2 import PlayerState, ROCK, PAPER, SCISSORS

Next we can define a mapping between each move and the move that it defeats - this is basically all of the information necessary to establish the rules of the game. In the "Settings" section, add the following:

DEFEATS = {
ROCK: PAPER,
SCISSORS: ROCK,
PAPER: SCISSORS
}

You may have played RPS in which the winner is "best of N rounds" - for example, you must beat your opponent in 2 out of 3 rounds to win the game. We will want the Environment implementation to keep track of the number of rounds played and won by each of the two players so that we can know when to call a winner. Here we will create a simple state data structure in the rps_environment initialization block to keep track of how often each of players wins a round during the trial. Later we will set up how many successful rounds constitute winning the game. Add the following code to the initialization block of the Environment implementation function (before the event loop):

state = {
"rounds_count": 0,
"p1": {
"score": 0
},
"p2": {
"score": 0
},
}

The Initialization Block: Creating the First Observations for Each Player

When we start a Trial, each player will need an initial Observation from the Environment. The Observation message tracks what each player's last move was and whether they won or lost the previous round, so we will have to set these by hand to start. Add the following code to the initialization block:

p1_state = PlayerState(won_last=False, last_move=None)
p2_state = PlayerState(won_last=False, last_move=None)
environment_session.start([
(p1.actor_name, Observation(me=p1_state, them=p2_state)),
(p2.actor_name, Observation(me=p2_state, them=p1_state)),
])

This code does the following:

  • Sets the initial state for each of the two Actors - neither won last game nor had a last move
  • Calls for the session to start, which tells the Orchestrator to send an initial observation is sent to all actors. Each actor is given the appropriate Observation constructed with the correct initial PlayerState messages. One instance of PlayerState per player is created, each is used as the me and them state of each player's Observation

The Event Loop: Creating New Observations in Response to Player Actions

In the event loop we implement how the Environment produces the next Observations in response to the Actor's actions. We need to retrieve each player's action and determine which player won the round. Then, we update the internal state. Finally, we produce up-to-date observations for the players.

So far, we have printed the actions the Environment received from each player, but these are the PlayerAction data structures. What we actually want to work with is the .move attribute, which stores the index of the action that was taken. We'll use this move attribute to determine which of the two players wins. If the two players had the same move, nobody wins. We'll also keep track of this in our state object. Add the following code below your print statements:

# Compute who wins, if the two players had the same move, nobody wins
p1_state = PlayerState(
won_last=p1_action.move == DEFEATS[p2_action.move],
last_move=p1_action.move
)
p2_state = PlayerState(
won_last=p2_action.move == DEFEATS[p1_action.move],
last_move=p2_action.move
)

# keep track of winner/loser of each round
state["rounds_count"] += 1
if p1_state.won_last:
state["p1"]["score"] += 1
print(f"{p1.actor_name} wins!")
elif p2_state.won_last:
state["p2"]["score"] += 1
print(f"{p2.actor_name} wins!")
else:
print(f"draw.")

This code computes for each player whether they won or lost, based on how their move compared to their opponents move by the hierarchy of moves specified in the DEFEATS dictionary. We then log it in the state dictionary object defined in the initialization block.

Finally, we need to construct the new Observation from these new player states, and pass this information along to the Actors if the trial is still active (eg. if the game hasn't ended). To do this, add the following code to the event loop:

    # produce observation of updated state (computed above)
observations = [
(p1.actor_name, Observation(me=p1_state, them=p2_state)),
(p2.actor_name, Observation(me=p2_state, them=p1_state)),
]
if event.type == cogment.EventType.ACTIVE:
# The trial is active
environment_session.produce_observations(observations)
else:
# The trial termination has been requested
environment_session.end(observations)

The termination block: reporting on what happened in the game

Finally, we will add some statements to the termination block to present a read-out about what happened in the Trial. In the termination block, replace the print("environment end") with:

print(f"Trial {environment_session.get_trial_id()} ended:")
print(f"\t * {state['rounds_count']} rounds played")
print(f"\t * {p1.actor_name} won {state['p1']['score']} rounds")
print(f"\t * {p2.actor_name} won {state['p2']['score']} rounds")
print(f"\t * {state['rounds_count'] - state['p1']['score'] - state['p2']['score']} draws", flush=True)

Note we add a flush=True to the last print call to flush the data buffer so our output actually gets printed before the service gets terminated.

We now have an Environment implementation that will properly construct Observations to pass to the Actors, meaning we have fully defined all the inputs and outputs necessary for the sequential interaction between the Actor and Environment components to play rounds of RPS. However, RPS is usually played in games won by the player reaching a target score, i.e. a number of won rounds.

You can install and run the application to test your Environment implementation. Given the nature of the game and the fact that the Actors don't actually use the Observation information in any meaningful way, we expect Bob to win around 1/3 of the time, Alice to win 1/3 of the time, and the remaining 1/3 to be draws.

Configuring the Environment: How many successful rounds to win the game?

We hinted earlier that RPS is not about single, disconnected rounds, but in playing a "best of N" game. Here we will show how the Environment can be configured with parameters. Setting up the game this way will also be useful later when we make an Actor implementation that can meaningfully use the information in the Observations to pick an action with some strategy, rather than randomly.

We want to set up the Environment so that a trial is complete when one of the two players has won enough rounds. We can do this by adding a parameter to our previously empty EnvironmentConfig message in the data.proto file:

message EnvironmentConfig {
int32 target_score = 1;
}

This data structure is referenced within cogment.yaml in the environment.config_type to define how the Environment is configured (you may think of it as similar to how the Actor classes were specified in the cogment.yaml file). Note that the target_score above is just the first argument to the EnvironmentConfig message -- we will set its value when we configure the Environment for the Trial.

If we open trial_runner/main.py we will see that we pass an empty EnvironmentConfig when setting up the Environment in the Trial Runner. We can modify this function to set a value for the target_score which a player will need to reach before the game ends. Modify the EnvironmentConfig in the Trial Runner to be the following:

env_config = EnvironmentConfig(
target_score = 5
)
note

Note that whenever we make a modification to the data.proto file, we will need to re-run ./run.sh install to regenerate the data_pb2.py file which the Python SDK uses for the implementations.

Modifying the Environment Implementation to end the game

We now need to modify the Environment implementation to handle counting the number of rounds won, and executing the termination of the Trial once the target_score has been reached.

In the initialization block of the rps_environment implementation function in environment/main.py, add the following:

# Default target score
if environment_session.config is not None and environment_session.config.target_score >= 0:
target_score = environment_session.config.target_score
else:
target_score = 3

The above code retrieves the value of the target_score from the environment's configuration and sets a default value in case nothing is specified. When we configured the trial, we set the target_score to be 5, but if the environment_session doesn't have the right configuration details, the target_score will be set to 3 by the Environment itself.

We also want the Environment to request the end of the Trial when this target score has been reached. In the event block, let's modify the code which handles the end of the game (eg. replace the check that the event.type==cogment.EventType.ACTIVE) to be:

# handle end of game
if state["p1"]["score"] >= target_score:
# p1 won
environment_session.end(observations)
elif state["p2"]["score"] >= target_score:
# p2 won
environment_session.end(observations)
else:
# target score is not reached, continue sending observations to actors
environment_session.produce_observations(observations)

Modifying the Trial Runner to receive the termination signal from the Environment

Previously, the Trial Runner handled the termination of the Trial after 5 seconds. Now we want the Environment to handle the termination of the trial, so we need to modify the Trial Runner code to support this.

If we look at the trial_runner/main.py file, we will see that the Trial Runner gets the trial_id from the controller's start_trial method. Because of the asynchronous nature of how these services run, we will need to initiate a function to listen for the trial's end before we have initiated the trial start. This means we will need to know the trial_id ahead of time, so when we call start_trial we will pass it our chosen trial_id as an argument.

In trial_runner/main.py we'll change the way the Trial Runner starts the trials to the following:

# set the name of the trial we want to be listening for
trial_id=f"rps-{datetime.datetime.now().isoformat()}"

# Listening for ended trials
async def await_trial():
async for trial_info in controller.watch_trials(trial_state_filters=[cogment.TrialState.ENDED]):
if trial_info.trial_id == trial_id:
break
await_trial_task = asyncio.create_task(await_trial())

# Start a new trial using the trial params we just created
trial_id = await controller.start_trial(trial_id_requested=trial_id, trial_params=trial_params)
print(f"Trial '{trial_id}' started")

# Wait for the trial to end
await await_trial_task
print(f"Trial '{trial_id}' ended")

The above code sets the ID of the trial, then defines how to use controller.watch_trials that will listen for the Environment to terminate the trial. It starts the trial with the specified ID, and then watches for the trial end.

We can now install and run the application to see that this works as expected. Bob and Alice play a single game of RPS which ends when one of the two players reaches the target number of rounds.

Quick Summary

We learned about how Cogment represents the Environment through its implementation and configuration.

We set up the necessary components in environment/main.py to specify the rules of RPS, namely:


from data_pb2 import PlayerState, ROCK, PAPER, SCISSORS
DEFEATS = {
ROCK: PAPER,
SCISSORS: ROCK,
PAPER: SCISSORS
}

In the initialWe added a data structure to keep track of statistics over a number of rounds:

state = {
"rounds_count": 0,
"p1": {
"score": 0
},
"p2": {
"score": 0
},
}

We constructed initial observations, and started the Environment session to pass these to each Actor:

p1_state = PlayerState(won_last=False, last_move=None)
p2_state = PlayerState(won_last=False, last_move=None)
environment_session.start([
(p1.actor_name, Observation(me=p1_state, them=p2_state)),
(p2.actor_name, Observation(me=p2_state, them=p1_state)),
])

In the event block, we evaluated what each of the Actors did, who won, and stored this information in our state data structure.

# Compute who wins, if the two players had the same move, nobody wins
p1_state = PlayerState(
won_last=p1_action.move == DEFEATS[p2_action.move],
last_move=p1_action.move
)
p2_state = PlayerState(
won_last=p2_action.move == DEFEATS[p1_action.move],
last_move=p2_action.move
)

# keep track of winner/loser of each round
state["rounds_count"] += 1
if p1_state.won_last:
state["p1"]["score"] += 1
print(f"{p1.actor_name} wins!")
elif p2_state.won_last:
state["p2"]["score"] += 1
print(f"{p2.actor_name} wins!")
else:
print(f"draw.")

We constructed new Observations and had the Environment session pass this information to each Actor.

    # produce observation of updated state (computed above)
observations = [
(p1.actor_name, Observation(me=p1_state, them=p2_state)),
(p2.actor_name, Observation(me=p2_state, them=p1_state)),
]
if event.type == cogment.EventType.ACTIVE:
# The trial is active
environment_session.produce_observations(observations)
else:
# The trial termination has been requested
environment_session.end(observations)

In the termination block, we printed a summary of the rounds played up to the point of termination:

print(f"Trial {environment_session.get_trial_id()} ended:")
print(f"\t * {state['rounds_count']} rounds played")
print(f"\t * {p1.actor_name} won {state['p1']['score']} rounds")
print(f"\t * {p2.actor_name} won {state['p2']['score']} rounds")
print(f"\t * {state['rounds_count'] - state['p1']['score'] - state['p2']['score']} draws", flush=True)

We then set up the Environment to initiate the termination after a set number of rounds had been won by one of the players. We set the EnvironmentConfig in the data.proto:

message EnvironmentConfig {
int32 target_score = 1;
}

We made use of this in trial_runner/main.py and passed the correct value to the EnvironmentConfigL

env_config = EnvironmentConfig(
target_score = 5
)

We then changed the Environment implementation to be aware of the termination condition, or set one if none was provided:

# Default target score
if environment_session.config is not None and environment_session.config.target_score >= 0:
target_score = environment_session.config.target_score
else:
target_score = 3

We then set the Environment to end the trial when this condition was met:

# handle end of game
if state["p1"]["score"] >= target_score:
# p1 won
environment_session.end(observations)
elif state["p2"]["score"] >= target_score:
# p2 won
environment_session.end(observations)
else:
# target score is not reached, continue sending observations to actors
environment_session.produce_observations(observations)

Finally, we modified the Trial Runner to listen for end signal from the Environment:

# set the name of the trial we want to be listening for
trial_id=f"rps-{datetime.datetime.now().isoformat()}"

# Listening for ended trials
async def await_trial():
async for trial_info in controller.watch_trials(trial_state_filters=[cogment.TrialState.ENDED]):
if trial_info.trial_id == trial_id:
break
await_trial_task = asyncio.create_task(await_trial())

# Start a new trial using the trial params we just created
trial_id = await controller.start_trial(trial_id_requested=trial_id, trial_params=trial_params)
print(f"Trial '{trial_id}' started")

# Wait for the trial to end
await await_trial_task
print(f"Trial '{trial_id}' ended")

You have now successfully implemented an Environment which is configured to run a game of RPS until one player has won 5 rounds. The Environment receives the Actors' actions and constructs new Observations. However, since the Actors select actions at random, they are not really using the Observation information in any meaningful way. In the next step of the tutorial, we will modify Bob to use the information from the Environment to select actions and see how he performs against Alice.

- - + + \ No newline at end of file diff --git a/docs/guide/tutorial/setup.html b/docs/guide/tutorial/setup.html index 2eafee5..d58fea6 100644 --- a/docs/guide/tutorial/setup.html +++ b/docs/guide/tutorial/setup.html @@ -3,16 +3,19 @@ -Step 1 - An Empty Cogment Application | Cogment +Step 1 - An Empty Cogment Application | Cogment - - - + + + + + +
-

Set Up the Code & Test a Trial

In this step of the tutorial, we will get the RPS code set up properly and test run a single trial. This will establish the basic working code needed for all subsequent steps of the tutorial. We will go over the components of the repository at a very high level. If any terminology is unclear, it may be useful to refer to the Core Concepts.

note

These instructions are for unix-like environments such as Linux, macOS and WSL2 on Windows.

Getting Set Up

To begin with, you'll need a working installation of Cogment. If you haven't done so already, follow our installation instructions.

Additionally, you'll need:

Cloning the RPS Source Code

If you followed the test step of the installation instructions you have probably already downloaded the sources for the tutorial from the github repository. If not, now is the time to do so.

This repository contains completed code for each step of the tutorial in separate folders. If at any point you make a mistake and can't get something working, you can copy the code from the folder corresponding to the last step you completed to get a fresh starting point.

Creating your development directory

First, let's make a new directory called rps, and set this as our working directory. Unless otherwise mentioned, all operations for the rest of the tutorial are done from the rps directory. We will then copy the code from the folder for step 1 of the tutorial from the directory 1-setup/, which contains a blank slate Cogment application as a starting point.

Execute the following commands in your terminal:

mkdir rps
cp -r <relative path to cloned repository>/basic_tutorial_steps/1-setup/ rps/
cd rps

We now have a starting point for developing the RPS project. This code copied from basic_tutorial_steps/1-setup will run an empty Cogment application with two Actors able to play RPS.

What's in this directory?

Service Directories

If we look at the elements of rps, we will see 3 directories. Each directory contains the code required for managing that service, for now contained completely in a main.py file that does all the work for that service. These services are:

  • environment/ which specifies the dynamics of the game itself (what actions are allowed, what are the consequences of those actions),
  • actors/ which specifies how the Actor(s) work -- what information they get from the environment, and how they use it for making a decision on what action to take next
  • trial_runner/ which specifies how the Actors and Environment interact within Cogment, and launches the trials to run the games of RPS.

At this stage, each module contains only the main.py files. When we build the application, more files will be copied into each directory automatically.

Configuration & Execution Files

The root of the rps directory also contains files which set the necessary configurations for running the application (.env, data.proto, and cogment.yaml), as well as the run.sh, requirements.txt and services.yaml files, which contain all the functions necessary for installing dependencies and running the Cogment project.

.env

This file is used to set environment variables. (Note that "environment" in this context refers to the operating system environment, which is not related to the concept of the Environment in the RL or Cogment context.) The variables set in this file specify configurations that are known to all parts of the application while it is running. The .env file is used in this project to specify the TCP ports through which different Cogment services (such as Actors or the Environment) can be accessed.

data.proto

In Cogment, we use Protocol Buffers to serialize data for communication across different services. In this project, the structure of these protobuf messages are defined in the file data.proto. This file does most of the heavy lifting in creating data structures in Python and setting variables to the relevant parameter values (more on this later). The application 'knows' to use the messages defined here by importing it in the cogment.yaml configuration file.

cogment.yaml

The cogment.yaml file specifies all of the details about how the trials will be implemented. In particular, this file defines what protobuf messages the Environment and Actor(s) participating in the trial will expect and use as inputs and outputs. More information about what kinds of information can/should be included in a Spec File such as cogment.yaml can be found on the Spec File reference page.

run.sh

The run.sh file acts as the main command menu for the Cogment project: it contains all of the functions necessary for building and running the code.

requirements.txt

The requirements.txt file tells the Python package manager what packages need to be installed for this project to work. If we want any non-standard Python packages to run our application, we will specify them here and the package manager will install them in the virtual environment. For now, this file specifies we only need to install the most recent version of the Cogment Python SDK.

services.yaml

The services.yaml file is passed to the Cogment CLI utility command launch. For the purposes of this tutorial, it's sufficient to understand that the contents of the services.yaml file describe a set of processes to be run in parallel - with the additional condition that once any of these processes terminate, the others will terminate as well. More information about the launch process can be found on the Launch reference page.

Building the Application

To get all this code to work together, we will need to run the install process in the run.sh file.

In your terminal run the install process with:

./run.sh install

What exactly is happening in the install?

We can understand what the install function does by taking a closer look at the run.sh file. You'll see that this function does the following:

  • Creates a virtual environment and installs Cogment and any required Python packages there
  • Runs the Cogment Python code generation tool to make the files cog_settings.py and data_pb2.py which are used by the Python SDK to know about the configurations and data structures which will be used in the application (more on this below).

Now everything is set up to start the application.

Running the Application

Now that we have built all the necessary components, we want to make sure the application can run.

We will need two terminals open:

  • A terminal to run the services. Those services are the environment, the actors, and the Cogment Orchestrator, which is responsible for coordinating the services together.
  • A terminal to run the client that connects to the services in order to run the trial. This client is the trial_runner.

We need to have the services running already before the Trial Runner can connect. In the first terminal, start the Cogment app services with the command:

./run.sh services_start

This command starts the services named in the services.yaml file. You should see something like:

services_start

In the second terminal, start the Trial Runner with the command:

./run.sh trial_runner_start

At this stage, the Trial Runner starts the trial, lets it run for a few seconds, and then terminates the trial. In the second terminal, you will see something like:

trial runner_start

In our application services terminal, this will also generate some logs reporting what happened. You should see something like this:

services running

At this point, both the action strings received by the Environment and the Observations received by the Actors are empty. In the next steps of the tutorial, we will add them in.

You can now terminate the services using ctrl+C. At this point we have a working but empty Cogment app.

Quick Summary

We got the RPS code from the github repository, and created a new directory rps to work from.

We ran

./run.sh install

to build the necessary elements to get the app up and running.

In one terminal, we started the orchestrator, environment, and actors services with:

./run.sh services_start

In a second terminal, we started the trial runner to begin a trial with:

./run.sh client_start

The client terminal printed the start and end of the trial, and the services trial reported some empty actions.

In the next step, we will look a little more closely at how Cogment represents the Actors, and enable them to select ROCK, PAPER, or SCISSORS rather than empty actions.

- - +

Set Up the Code & Test a Trial

In this step of the tutorial, we will get the RPS code set up properly and test run a single trial. This will establish the basic working code needed for all subsequent steps of the tutorial. We will go over the components of the repository at a very high level. If any terminology is unclear, it may be useful to refer to the Core Concepts.

note

These instructions are for unix-like environments such as Linux, macOS and WSL2 on Windows.

Getting Set Up

To begin with, you'll need a working installation of Cogment. If you haven't done so already, follow our installation instructions.

Additionally, you'll need:

Cloning the RPS Source Code

If you followed the test step of the installation instructions you have probably already downloaded the sources for the tutorial from the github repository. If not, now is the time to do so.

This repository contains completed code for each step of the tutorial in separate folders. If at any point you make a mistake and can't get something working, you can copy the code from the folder corresponding to the last step you completed to get a fresh starting point.

Creating your development directory

First, let's make a new directory called rps, and set this as our working directory. Unless otherwise mentioned, all operations for the rest of the tutorial are done from the rps directory. We will then copy the code from the folder for step 1 of the tutorial from the directory 1-setup/, which contains a blank slate Cogment application as a starting point.

Execute the following commands in your terminal:

mkdir rps
cp -r <relative path to cloned repository>/basic_tutorial_steps/1-setup/ rps/
cd rps

We now have a starting point for developing the RPS project. This code copied from basic_tutorial_steps/1-setup will run an empty Cogment application with two Actors able to play RPS.

What's in this directory?

Service Directories

If we look at the elements of rps, we will see 3 directories. Each directory contains the code required for managing that service, for now contained completely in a main.py file that does all the work for that service. These services are:

  • environment/ which specifies the dynamics of the game itself (what actions are allowed, what are the consequences of those actions),
  • actors/ which specifies how the Actor(s) work -- what information they get from the environment, and how they use it for making a decision on what action to take next
  • trial_runner/ which specifies how the Actors and Environment interact within Cogment, and launches the trials to run the games of RPS.

At this stage, each module contains only the main.py files. When we build the application, more files will be copied into each directory automatically.

Configuration & Execution Files

The root of the rps directory also contains files which set the necessary configurations for running the application (.env, data.proto, and cogment.yaml), as well as the run.sh, requirements.txt and services.yaml files, which contain all the functions necessary for installing dependencies and running the Cogment project.

.env

This file is used to set environment variables. (Note that "environment" in this context refers to the operating system environment, which is not related to the concept of the Environment in the RL or Cogment context.) The variables set in this file specify configurations that are known to all parts of the application while it is running. The .env file is used in this project to specify the TCP ports through which different Cogment services (such as Actors or the Environment) can be accessed.

data.proto

In Cogment, we use Protocol Buffers to serialize data for communication across different services. In this project, the structure of these protobuf messages are defined in the file data.proto. This file does most of the heavy lifting in creating data structures in Python and setting variables to the relevant parameter values (more on this later). The application 'knows' to use the messages defined here by importing it in the cogment.yaml configuration file.

cogment.yaml

The cogment.yaml file specifies all of the details about how the trials will be implemented. In particular, this file defines what protobuf messages the Environment and Actor(s) participating in the trial will expect and use as inputs and outputs. More information about what kinds of information can/should be included in a Spec File such as cogment.yaml can be found on the Spec File reference page.

run.sh

The run.sh file acts as the main command menu for the Cogment project: it contains all of the functions necessary for building and running the code.

requirements.txt

The requirements.txt file tells the Python package manager what packages need to be installed for this project to work. If we want any non-standard Python packages to run our application, we will specify them here and the package manager will install them in the virtual environment. For now, this file specifies we only need to install the most recent version of the Cogment Python SDK.

services.yaml

The services.yaml file is passed to the Cogment CLI utility command launch. For the purposes of this tutorial, it's sufficient to understand that the contents of the services.yaml file describe a set of processes to be run in parallel - with the additional condition that once any of these processes terminate, the others will terminate as well. More information about the launch process can be found on the Launch reference page.

Building the Application

To get all this code to work together, we will need to run the install process in the run.sh file.

In your terminal run the install process with:

./run.sh install

What exactly is happening in the install?

We can understand what the install function does by taking a closer look at the run.sh file. You'll see that this function does the following:

  • Creates a virtual environment and installs Cogment and any required Python packages there
  • Runs the Cogment Python code generation tool to make the files cog_settings.py and data_pb2.py which are used by the Python SDK to know about the configurations and data structures which will be used in the application (more on this below).

Now everything is set up to start the application.

Running the Application

Now that we have built all the necessary components, we want to make sure the application can run.

We will need two terminals open:

  • A terminal to run the services. Those services are the environment, the actors, and the Cogment Orchestrator, which is responsible for coordinating the services together.
  • A terminal to run the client that connects to the services in order to run the trial. This client is the trial_runner.

We need to have the services running already before the Trial Runner can connect. In the first terminal, start the Cogment app services with the command:

./run.sh services_start

This command starts the services named in the services.yaml file. You should see something like:

services_start

In the second terminal, start the Trial Runner with the command:

./run.sh trial_runner_start

At this stage, the Trial Runner starts the trial, lets it run for a few seconds, and then terminates the trial. In the second terminal, you will see something like:

trial runner_start

In our application services terminal, this will also generate some logs reporting what happened. You should see something like this:

services running

At this point, both the action strings received by the Environment and the Observations received by the Actors are empty. In the next steps of the tutorial, we will add them in.

You can now terminate the services using ctrl+C. At this point we have a working but empty Cogment app.

Quick Summary

We got the RPS code from the github repository, and created a new directory rps to work from.

We ran

./run.sh install

to build the necessary elements to get the app up and running.

In one terminal, we started the orchestrator, environment, and actors services with:

./run.sh services_start

In a second terminal, we started the trial runner to begin a trial with:

./run.sh client_start

The client terminal printed the start and end of the trial, and the services trial reported some empty actions.

In the next step, we will look a little more closely at how Cogment represents the Actors, and enable them to select ROCK, PAPER, or SCISSORS rather than empty actions.

+ + \ No newline at end of file diff --git a/docs/license.html b/docs/license.html index 2883edc..72390d6 100644 --- a/docs/license.html +++ b/docs/license.html @@ -3,15 +3,18 @@ -Apache License | Cogment +Apache License | Cogment - - - + + + + + +
-

Apache License

Version 2.0, January 2004 +

Apache License

Version 2.0, January 2004 <http://www.apache.org/licenses/>

Terms and Conditions for use, reproduction, and distribution

1. Definitions

“License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

“Legal Entity” shall mean the union of the acting entity and all other entities @@ -112,8 +115,8 @@ sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability.

Copyright 2019 Artificial Intelligence Redefined

- - +accepting any such warranty or additional liability.

Copyright 2019 Artificial Intelligence Redefined

+ + \ No newline at end of file diff --git a/docs/reference/cli.html b/docs/reference/cli.html index e68376e..4e47dab 100644 --- a/docs/reference/cli.html +++ b/docs/reference/cli.html @@ -3,17 +3,20 @@ -CLI | Cogment +CLI | Cogment - - - + + + + + +
-

Command Line Interface (CLI) executable

Repository Latest Release +

Command Line Interface (CLI) executable

Repository Latest Release Latest Docker Release

The main Cogment module is a multi-platform standalone executable usable through a Command Line Interface, it is referred as the Cogment CLI.

The Cogment CLI includes the following services:

  • The Orchestrator, the heart of Cogment which executes the Trials by orchestrating the different user implemented services.
  • The Directory is the "directory" of services, where services register and can be found by clients and other services.
  • The Trial Datastore able to store and make available the data generated by the Trials.
  • The Model Registry which let's user store AI models and makes them available to actor implementations during training and in production.

Compatibility

The Cogment CLI is available for the following OSes:

  • Linux with amd64 architecture (also known as x86_64), tested on Ubuntu 18.04 and 20.04, should be compatible with most recent distributions,
  • macOS with amd64 and arm64 (Apple Silicon) architectures, tested on macOS 12, should be compatible with any macOS version >= 10.15,
  • Windows with amd64 architecture, should be compatible with any Windows version >= Windows 10 version 1809.
tip

Starting with v2.2.0, the Cogment CLI is available for Linux, macOS and Windows on x86_64.

Starting with v2.6.0, the macOS arm64 version is also available.

Installation

Installation script (compatible with linux and macOS)

This installation method is compatible with virtually any Linux distribution, macOS and WSL2 on Windows. It only requires bash and curl.

First, download the install script and make sure you can run it using

curl --silent -L https://raw.githubusercontent.com/cogment/cogment/main/install.sh --output install-cogment.sh
chmod +x install-cogment.sh

You can then download and install the latest version to /usr/local/bin using

sudo ./install-cogment.sh

Other installation methods are available, for example:

  • Install version 2.2.0
    sudo ./install-cogment.sh --version 2.2.0
  • Install prereleased version 2.3.1-beta3, useful because prereleases are not considered by default
    sudo ./install-cogment.sh --version 2.2.0
  • Download the cogment exec in the current folder, make sure it is executable but skip the installation
    ./install-cogment.sh --skip-install
  • Specify manually the arch and os
    ./install-cogment.sh --arch amd64 --os Windows

All install options can be listed using

./install-cogment.sh --help

Uninstall is as simple as running:

sudo rm $(which cogment)
tip

Yes, it is possible to install Cogment as a one-line by piping the install script to bash ... at the risk of angering your system admin.

curl --silent -L https://raw.githubusercontent.com/cogment/cogment/main/install.sh | sudo ./install-cogment.sh

Manual installation

If you are a Windows user (and also if you prefer to do a manual install), you can go through those instructions.

  1. Download the desired version from here for your platform.
  2. Copy it as cogment in a location that already belongs to your PATH (e.g. /usr/local/bin) or that you'll add to your PATH, and make sure it is executable (e.g. using chmod +x /usr/local/bin/cogment).

Docker

A Cogment docker image is available on Docker Hub. It can be retrieved with the following:

docker pull cogment/cogment
note

The docker version of Cogment is very handy for server deployment, however, because of the nature of docker, users need to take care of port forwarding and volume mounting if needed.

Unsupported platform

If your platform is not supported, add an issue including the details of your platform and do not hesitate to contact us.

Building from source

Building from sources is perfectly possible. Please refer to the build instructions for more information.

Test your installation

note

Depending on your platform and how you installed Cogment, it might be accessible as cogment, ./cogment, cogment.exe or docker run cogment/cogment. We will use cogment for the rest of this page and throughout the documentation.

With a working installation you can run the following in a terminal:

cogment version

You can then list all the commands by typing:

cogment help

or for help on each individual command:

cogment help <command>

Launching a Cogment app

note

These instructions are only compatible with unix-like environments such as Linux, macOS and WSL2 on Windows.

In order to test that your installation is fully working, run an existing Cogment app, for example one of the steps of the tutorial.

Download or clone the sources for the official Rock-Paper-Scissors (RPS) tutorial from https://github.com/cogment/cogment-tutorial-rps.

To run this example you will need to have the following installed on top of Cogment:

Once it is done, run the following in the directory you retrieved:

cd 5-human-player
./run.sh build
./run.sh services_start

The first call to ./run.sh command will copy the cogment.yaml, and every referenced proto file, to each module directory, create virtualenvs, and install the python dependencies.

The second will start Cogment and the different services for this app. In another terminal you can connect to it and play a few games of RPS against a simple AI agent.

./run.sh client_start

Congratulations, you have a working installation of Cogment! We recommend you head to the Cogment tutorial to learn how to implement this RPS app from scratch.

Troubleshooting

pipe creation failed (24): Too many open files error on macOS

On macOS, it is possible that Cogment tries to open too many file handles. In this case, you'll get an error similar to pipe creation failed (24): Too many open files.

You can access the current limit and update it using ulimit -n. The default version should be something like 256, in most cases we found that Cogment requires 2048. You can set the limit with the following command:

$ ulimit -n 2048

This command changes the limit in the current shell session. This stackexchange question discusses different ways to make the change persist.

For debugging purposes, you can inspect the open file handles using lsof. E.g. lsof -c cogment | wc -l will count the number of open file handles by Cogment processes.

- - + + \ No newline at end of file diff --git a/docs/reference/cli/directory/directory-client.html b/docs/reference/cli/directory/directory-client.html index 8d2bbbd..c461152 100644 --- a/docs/reference/cli/directory/directory-client.html +++ b/docs/reference/cli/directory/directory-client.html @@ -3,20 +3,23 @@ -Client | Cogment +Client | Cogment - - - + + + + + +
-

Directory Client

The Directory Client is a utility to manually access (through the command line interface) the Directory service. It can be used to register, deregister (remove) and inquire services.

Common Options

All directory clients have these options in common.

timeout

The maximum duration for the execution of the request. The duration should be specified as a sequence of numbers followed by a unit suffix: "300ms", "1.5h" or "2h45m" are valid timeouts. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

Can be specified as:

  • a command line option, e.g. --timeout=1m,
  • an environment variable, e.g. COGMENT_CLIENT_TIMEOUT=90s,
  • its default value is 30 seconds.

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • its default value is "grpc://localhost:9005" (which is the default when running cogment services directory locally).

directory_authentication_token

Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

Directory Client Register

This command is used to register (add) a service to the Directory.

E.g.:

$ cogment client directory register --directory_endpoint="grpc://dir:9005" --host="act" --port=9030 --type="actor" --properties="__actor_class=reporter,intensity=5,high_profile"

Service ID [7722934920723] Secret [ZGi6GLe]

Output

If successful, the output is the service ID of the newly registered service, and its secret string. The secret string is necessary to deregister the service.

Command line

protocol

The protocol (URL scheme) for the service endpoint. Can only be grpc or cogment. Default: grpc.

host

The host for the service endpoint.

port

The TCP port for the service endpoint.

ssl_required

A boolean value (true/false) to indicate if SSL (encryption) is required to access the service. Default: false.

type

The service type. Can be actor, environment, prehook, datalog, lifecycle, actservice, datastore, modelregistry or other. +

Directory Client

The Directory Client is a utility to manually access (through the command line interface) the Directory service. It can be used to register, deregister (remove) and inquire services.

Common Options

All directory clients have these options in common.

timeout

The maximum duration for the execution of the request. The duration should be specified as a sequence of numbers followed by a unit suffix: "300ms", "1.5h" or "2h45m" are valid timeouts. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

Can be specified as:

  • a command line option, e.g. --timeout=1m,
  • an environment variable, e.g. COGMENT_CLIENT_TIMEOUT=90s,
  • its default value is 30 seconds.

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • its default value is "grpc://localhost:9005" (which is the default when running cogment services directory locally).

directory_authentication_token

Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

Directory Client Register

This command is used to register (add) a service to the Directory.

E.g.:

$ cogment client directory register --directory_endpoint="grpc://dir:9005" --host="act" --port=9030 --type="actor" --properties="__actor_class=reporter,intensity=5,high_profile"

Service ID [7722934920723] Secret [ZGi6GLe]

Output

If successful, the output is the service ID of the newly registered service, and its secret string. The secret string is necessary to deregister the service.

Command line

protocol

The protocol (URL scheme) for the service endpoint. Can only be grpc or cogment. Default: grpc.

host

The host for the service endpoint.

port

The TCP port for the service endpoint.

ssl_required

A boolean value (true/false) to indicate if SSL (encryption) is required to access the service. Default: false.

type

The service type. Can be actor, environment, prehook, datalog, lifecycle, actservice, datastore, modelregistry or other. These are the same keywords used as paths in Cogment discovery endpoints.

permanent

A boolean value (true/false) to indicate if the service is to stay permanently in the directory (until explicitly deregistered). Permanent services are not checked for health or lifetime limits. Permanent services also get updated instead of being duplicated. Default: false.

properties

The properties to be associated with the service. In the form of "name=value,name=value" where the value is optional. The names and values of properties are restricted to a limited character set (see endpoint query).

Also see special properties used by Cogment.

Directory Client Deregister

This command is used to deregister (remove/delete) a service from the Directory.

E.g.:

$ cogment client directory deregister --directory_endpoint="grpc://dir:9005" --service_id=7722934920723 --secret="ZGi6GLe"

Output

If successful, no output is produced.

Command line

service_id

The ID of the service to remove.

secret

The secret string that was returned when the service was registered.

Directory Client Inquire

This command is used to inquire (find) services in the Directory. Note that if services are not found (or the authentication token does not match), an empty list is returned, but there is no "error".

E.g.:

$ cogment client directory inquire --type="actor" --properties="intensity=5,high_profile"

[11] Services found
Service ID [7722934920723]
Endpoint [grpc://act:9030] SSL required [false]
Type [actor]
[__registration_source] = [Cogment-Command_Line]
[high_profile] = []
[intensity] = [5]
[__actor_class] = [reporter]

Output

If successful, the number of services found and the details of each service is output.

Command line

service_id

The ID of the service to find. If this is provided, the type and properties options cannot be used.

type

The service type to find. Can be actor, environment, prehook, datalog, lifecycle, actservice, datastore, modelregistry or other. These are the same keywords used as paths in Cogment discovery endpoints.

If this is provided, the service_id option cannot be used.

properties

The properties associated with the service to find. In the form of "name=value,name=value" where the value is optional. All properties must match (in name and value) the properties of the service for a match to occur.

If this is provided, the service_id option cannot be used.

Directory Client WaitForReady

The client will wait for a connection to the directory. If a connection cannot be established within the timeout period, it returns an error, otherwise it returns success.

- - + + \ No newline at end of file diff --git a/docs/reference/cli/directory/directory-server.html b/docs/reference/cli/directory/directory-server.html index 764fee5..b5eaccb 100644 --- a/docs/reference/cli/directory/directory-server.html +++ b/docs/reference/cli/directory/directory-server.html @@ -3,15 +3,18 @@ -Server | Cogment +Server | Cogment - - - + + + + + +
-

Directory Server

The Directory is an implementation of the directory gRPC service. It is the service to find other services. Typically, every other Cogment service only needs to know the address of the Directory to access anything in Cogment.

A regular health check is done on non-permanent network services to make sure they remain available (i.e. network reachable). +

Directory Server

The Directory is an implementation of the directory gRPC service. It is the service to find other services. Typically, every other Cogment service only needs to know the address of the Directory to access anything in Cogment.

A regular health check is done on non-permanent network services to make sure they remain available (i.e. network reachable). If a service fails the health check, it is automatically removed from the Directory.

The Directory works in tandem with the Cogment endpoints, in particular the ones with a discover host (referred as discovery endpoints).

A Directory Client is also part of the Cogment CLI to access the Directory from the command line.

Command line

The Directory is a Cogment CLI service:

$ cogment services directory --port=9005

Options

port

The TCP port where to serve the directory gRPC service. This is where the users of the Directory connect to.

Can be specified as:

  • a command line option, e.g. --port,
  • an environment variable, e.g. COGMENT_DIRECTORY_PORT,
  • default value is 9005.

grpc_reflection

Whether or not to enable gRPC reflection on the served directory endpoint.

Can be specified as:

  • a command line option, e.g. --grpc_reflection,
  • an environment variable, e.g. COGMENT_DIRECTORY_GRPC_REFLECTION=1,
  • by default, it is disabled.

log_level

Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace.

Can be specified as:

  • a command line option, e.g. --log_level=debug,
  • an environment variable, e.g. COGMENT_LOG_LEVEL=info,
  • default value is info.

log_file

Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided, the logs go to stdout.

Can be specified as:

  • a command line option, e.g. --log_file=./path/to/cogment.log,
  • an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log,
  • default value is info.

registration_lag

The maximum number of seconds to wait before responding with no result (either due to a service not registered, or that has failed a health check). This can be used when components may start at slightly different time, and some components may inquire about a component that did not have time to register yet. It may also help when services sometimes go temporarily offline.

Can be specified as:

  • a command line option, e.g. --registration_lag,
  • an environment variable, e.g. COGMENT_DIRECTORY_REGISTRATION_LAG,
  • default value is 0.
note

Unserviceable services are not considered for this lag. @@ -39,7 +42,7 @@ A value of 0 means that there is no load, and a value of 100 means that the machine is very loaded (and may not be able to do processing in a timely manner). The exact meaning of the value is dependent on the service reporting. A value of 255 indicates that the machine is not fit to run any new service (and thus it is "unserviceable").

Data

The Directory maintains the following data for each service:

  • service ID: This is a numerical (64 bits unsigned integer) value generated by the Directory and assigned to the service on registration. It is unique to that service as long as it is in the Directory. Although very unlikely, it is possible for this ID to be re-used after the service is deregistered. Zero (0) is not a valid ID.
  • endpoint: It consists of four distinct information:
    • protocol: The protocol (URL scheme) for the endpoint (grpc or cogment). The cogment protocol is not considered a "network" protocol and thus will not be checked for health (network connectivity).
    • host: The host for the endpoint (e.g. somewhere.com). For the grpc protocol this represents a TCP/IP network resource; it can be a network hostname or an IP address. For the cogment protocol it must be a registered name (see cogment endpoints) and typically does not represent a network resource.
    • port: The TCP port where the registered service is providing its services. This is required for grpc protocol hosts.
    • ssl requirement: Whether the service requires an encrypted SSL connection.
  • type: The type of service. This also determines how health checks are performed on the service (i.e. which gRPC service should be used to check the health of the service).
    • client actor connection: Provides client actor gRPC API service
    • trial lifecycle management: Provides lifecycle gRPC API service
    • actor: Provides actor gRPC API service
    • environment: Provides environment gRPC API service
    • pre-hook: Provides pre-hook gRPC API service
    • datalog: Provides datalog gRPC API service
    • datastore: Provides datastore gRPC API service
    • model registry: Provides model registry gRPC API service
    • other: This type of service does not provide a gRPC API service or it is not a type of service known to Cogment. Only the ability to perform a tcp connection will be tested for health checking.
  • permanent: This determines if the service should be kept in the directory regardless of health (network connectivity). It also prevents duplication of the service in the directory (i.e. if a duplicate is registered, the service will just be updated with the new information, and keep the same ID and secret).
  • properties: This is a free form mapping of name and value strings. But Cogment may require properties of specific names for its operation, in particular for endpoint discovery. These special property names are prefixed with a double underscore (__), e.g. __implementation. Also, for proper use in Cogment, property names and values should be restricted to a limited character set (see endpoint query).
  • secret: This is a secret string that is generated by the Directory on registering a new service. It must be provided to deregister a service. There is no way to recover this value, so it must be recorded after registration.
  • authentication token: A string to authenticate users of the registered service. It is provided by the user for registration of a new service, and the same token must be provided to access (deregister or inquire) that service.
- - + + \ No newline at end of file diff --git a/docs/reference/cli/launch.html b/docs/reference/cli/launch.html index 2ae395a..b288f26 100644 --- a/docs/reference/cli/launch.html +++ b/docs/reference/cli/launch.html @@ -3,15 +3,18 @@ -Launch | Cogment +Launch | Cogment - - - + + + + + +
-

Launch

Launch is a utility command meant to facilitate locally launching and shutting down an entire Cogment project at once.

When launch is used, a set of processes will be launched to run in parallel, as described by a YAML definition file. +

Launch

Launch is a utility command meant to facilitate locally launching and shutting down an entire Cogment project at once.

When launch is used, a set of processes will be launched to run in parallel, as described by a YAML definition file. Once any of these processes terminates, all other ones will be terminated as well.

The order of of the script execution is undefined, which is to say that they may not start in the order they are defined, and may not always start in the same order. Script dependency can be used if a certain order must be used.

Command line

cogment launch [options] filename [args...]

filename: Name (and path) of the YAML definition file describing the processes to launch.

options:

[-q], [--quiet]: Disable some of the output generated by the launcher. Process output is never disabled by this option. To increase the level, more "q" can be added, up to -qqq disabling all launcher generated output except errors.

args: These are arguments that will be used in variable substitution in the definition file. If some arguments start with a dash (-) a double dash (--) must be used to separate these from the launch options.

E.g.:

$ cogment launch --quiet ./launch.yaml 1000 8
$ cogment launch -qq ./launch.yaml 1000 8
$ cogment launch --quiet ./launch.yaml -- --file ./myfile --match_all

definition file

The launch definition file is a YAML formatted file where the details of the parallel processes to run are defined. The file consists of at least a scripts top level node, and may also contain a global top level node.

Nodes

Scripts

The scripts node contains the details of the processes to run. @@ -39,7 +42,7 @@ They can then be substituted with {{.__1}}, {{.__2}}, {{.__3}}.

__1 to __9 are always defined, but will be empty if no corresponding argument was given on the command line. Arguments 10 (__10) and above will only be defined if they were provided on the command line.

E.g.:

$ cogment launch -q ./launch.yaml 42 foo
scripts:
args_out:
commands:
- ["echo", "args:", "{{.__1}}", "{{.__2}}", "{{.__3}}"] # echo "args:" "42" "foo" ""
- ["echo", "empty: >{{.__3}}< >{{.__6}}<"] # echo "empty: >< ><"
- ["echo", "no args: {{.__10}} {{.__42}}"] # echo "no args: <no value> <no value>"
ready_output: ".* {{.__2}} $"
All Arguments (Cogment >= 2.17)

The number of arguments on the command line of launch is defined in __NB_ARGS. And all the launch arguments can be added to a script command with __ALL_ARGS.

The __ALL_ARGS variable is special in terms of substitution; if the command argument string is exactly {{.__ALL_ARGS}}, then all launch arguments will be added to this command. Otherwise if it is only part of a string, it will substitute a string containing all launch arguments.

In other words, a command argument "{{.ALL_ARGS}}" will expand to multiple arguments for the command, whereas something like "--{{.ALL_ARGS}}" will stay as one argument (a string that contains all launch arguments preceded by "--").

E.g.:

$ cogment launch ./launch.yaml 42 foo extra
scripts:
args_out:
commands:
- ["echo", "nb of args: {{.__NB_ARGS}}]"] # echo "nb of args: 3"
- ["echo", "all:", "{{.__ALL_ARGS}}", "and more"] # echo "all:" "42" "foo" "extra" "and more"
- ["echo", "all:", "args: {{.__ALL_ARGS}}"] # echo "all:" "args: 42 foo extra"
ready_output: "args:.*{{.__2}}"

File Example

global:
environment:
RUN_NAME: "COGRUN-{{.HOSTNAME}}-{{.__1}}"
COGMENT_LOG_LEVEL: info
DIR_PORT: 9010
COGMENT_DIRECTORY_ENDPOINT: "grpc://server:{{.DIR_PORT}}"
folder: /app

scripts:
prep:
commands:
- ["./importdata.sh"]
- ["./cudasetup.sh"]
- ["sleep", "infinity"] # To prevent process from ending
ready_output: "^Done"
directory:
quiet: true
folder: ./cogment
environment:
COGMENT_DIRECTORY_PORT: "{{.DIR_PORT}}"
depends_on:
- prep
commands:
- ["cogment", "services", "directory"]
ready_output: 'Listening \[port:[0-9]*\]' # To match "Listening [port:9010]"
orchestrator:
folder: ./cogment
environment:
COGMENT_ORCHESTRATOR_ACTOR_PORT: 0
COGMENT_LIFECYCLE_PORT: 0
depends_on:
- directory
commands:
- ["cogment", "services", "orchestrator"]
runner:
folder: ./pycode
depends_on:
- directory
- orchestrator
commands:
- [
"python3",
"runner.py",
"-u {{.USER}}",
"-n {{.RUN_NAME}}",
"{{.__2}}",
]
report:
commands:
- ["reporting_service"]
- - + + \ No newline at end of file diff --git a/docs/reference/cli/model-registry.html b/docs/reference/cli/model-registry.html index 345d719..0e507e7 100644 --- a/docs/reference/cli/model-registry.html +++ b/docs/reference/cli/model-registry.html @@ -3,17 +3,20 @@ -Model Registry | Cogment +Model Registry | Cogment - - - + + + + + +
-

Model Registry

Cogment Model Registry is designed to store and make available AI models to be used by Cogment actors.

The Model Registry manages models in two ways:

  • Transient (non-archived) model iterations can be used to publish an updated model to users, e.g. during training. Transient model iterations are stored in memory and can be evicted, in particular once the memory limit is reached.
  • Stored model iterations are stored on the filesystem and should be used for long-term storage of specific iterations, e.g. for validation or deployment purposes.

Command line

The Model Registry is simply called this way

$ cogment services model_registry --port=9000 --archive_dir=./models/

Configuration

The Model Registry configuration can be specified either through the command line or environment variables.

port

The TCP port where to serve the The Model Registry API.

If set to 0, then the system will automatically choose a free port. +

Model Registry

Cogment Model Registry is designed to store and make available AI models to be used by Cogment actors.

The Model Registry manages models in two ways:

  • Transient (non-archived) model iterations can be used to publish an updated model to users, e.g. during training. Transient model iterations are stored in memory and can be evicted, in particular once the memory limit is reached.
  • Stored model iterations are stored on the filesystem and should be used for long-term storage of specific iterations, e.g. for validation or deployment purposes.

Command line

The Model Registry is simply called this way

$ cogment services model_registry --port=9000 --archive_dir=./models/

Configuration

The Model Registry configuration can be specified either through the command line or environment variables.

port

The TCP port where to serve the The Model Registry API.

If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory.

Can be specified as:

  • a command line option, e.g. --port=12000,
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_PORT=12000,
  • its default value is 9002.

grpc_reflection

Whether or not to enable gRPC reflection on the served endpoints.

Can be specified as:

  • a command line flag, e.g. --grpc_reflection,
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_GRPC_REFLECTION=1,
  • by default, it is disabled.

archive_dir

Path to the directory to store archived model iterations and model metadata.

Can be specified as:

  • a command line option, e.g. --archive_dir=./path/to/models/,
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_ARCHIVE_DIR=./path/to/models/,
  • its default value is .cogment/model_registry

cache_max_items

This defines the maximum number of model iterations that can be stored in the transient cache.

Can be specified as:

  • a command line option, e.g. --cache_max_items=500,
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_VERSION_CACHE_MAX_ITEMS=500,
  • its default value is 100.

sent_version_chunk_size

The maximum size for model iteration data chunk sent by the server. It is defined in bytes.

Can be specified as:

  • a command line option, e.g. --sent_version_chunk_size=100000,
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_SENT_MODEL_VERSION_DATA_CHUNK_SIZE=100000,
  • its default value is 2097152 Bytes, i.e. 2MB.

log_level

Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator.

Can be specified as:

  • a command line option, e.g. --log_level=debug,
  • an environment variable, e.g. COGMENT_LOG_LEVEL=5,
  • default value is info.

log_file

Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout.

Can be specified as:

  • a command line option, e.g. --log_file=./path/to/cogment.log,
  • an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log,
  • default value is info.

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the model registry service for discovery by other services. If not provided, the model registry will not auto register, in which case manual registration to the directory must be done, or an explicit address must be provided to access the model registry.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • it has no default value.

directory_authentication_token

Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

directory_registration_host

This is the host that will be registered to the Directory for the Model Registry service. If not provided, the Model Registry will determine its own IP address and use that as the registration host.

In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided.

Can be specified as:

  • a command line option, e.g. --directory_registration_host=foo.bar,
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_HOST=foo.bar,
  • it has no default value (i.e. self determined IP address is used).

directory_registration_properties

These are the properties that will be registered to the Directory for the Model Registry service. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form "name=value,name=value,name=value" where the values are optional.

Can be specified as:

  • a command line option, e.g. --directory_registration_properties="Sim=20,hpp,mem=HIGH",
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_PROPERTIES="Sim=20,hpp,mem=HIGH",
  • it has no default value.

API usage examples

::: tip

The following examples require COGMENT_MODEL_REGISTRY_GRPC_REFLECTION to be enabled as well as grpcurl_

:::

Create or update a model - cogmentAPI.ModelRegistrySP/CreateOrUpdateModel( .cogmentAPI.CreateOrUpdateModelRequest ) returns ( .cogmentAPI.CreateOrUpdateModelReply );

$ echo "{\"model_info\":{\"model_id\":\"my_model\",\"user_data\":{\"type\":\"my_model_type\"}}}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/CreateOrUpdateModel
{

}

Delete a model - cogmentAPI.ModelRegistrySP/DeleteModel( .cogmentAPI.DeleteModelRequest ) returns ( .cogmentAPI.DeleteModelReply );

$ echo "{\"model_id\":\"my_model\"}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/DeleteModel
{

}

Retrieve models - cogmentAPI.ModelRegistrySP/RetrieveModels( .cogmentAPI.RetrieveModelsRequest ) returns ( .cogmentAPI.RetrieveModelsReply );

These examples require COGMENT_MODEL_REGISTRY_GRPC_REFLECTION to be enabled as well as grpcurl

List the models

$ echo "{}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveModels
{
"modelInfos": [
{
"modelId": "my_model",
"userData": {
"type": "my_model_type"
}
},
{
"modelId": "my_other_model",
"userData": {
"type": "my_model_type"
}
}
],
"nextModelHandle": "2"
}

Retrieve specific model(s)

$ echo "{\"model_ids\":[\"my_other_model\"]}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveModels
{
"modelInfos": [
{
"modelId": "my_other_model",
"userData": {
"type": "my_model_type"
}
}
],
"nextModelHandle": "1"
}

Create a model iteration - cogmentAPI.ModelRegistrySP/CreateVersion( stream .cogmentAPI.CreateVersionRequestChunk ) returns ( .cogmentAPI.CreateVersionReply );

$ echo "{\"header\":{\"version_info\":{
\"model_id\":\"my_model\",\
\"archived\":true,\
\"data_size\":$(printf chunk_1chunk_2 | wc -c)\
}}}\
{\"body\":{\
\"data_chunk\":\"$(printf chunk_1 | base64)\"\
}}\
{\"body\":{\
\"data_chunk\":\"$(printf chunk_2 | base64)\"\
}}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/CreateVersion
{
"versionInfo": {
"modelId": "my_model",
"versionNumber": 2,
"creationTimestamp": "907957639",
"archived": true,
"dataHash": "jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=",
"dataSize": "14"
}
}

Retrieve model iteration infos - cogmentAPI.ModelRegistrySP/RetrieveVersionInfos ( .cogmentAPI.RetrieveVersionInfosRequest ) returns ( .cogmentAPI.RetrieveVersionInfosReply );

List the iterations of a model

$ echo "{\"model_id\":\"my_model\"}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveVersionInfos
{
"versionInfos": [
{
"modelId": "my_model",
"versionNumber": 1,
"creationTimestamp": "1633119005107454620",
"archived": true,
"dataHash": "jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=",
"dataSize": "14"
},
{
"modelId": "my_model",
"versionNumber": 2,
"creationTimestamp": "1633119625907957639",
"archived": true,
"dataHash": "jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=",
"dataSize": "14"
}
],
"nextVersionHandle": "3"
}

Retrieve specific iterations of a model

$ echo "{\"model_id\":\"my_model\", \"version_numbers\":[1]}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveVersionInfos
{
"versionInfos": [
{
"modelId": "my_model",
"versionNumber": 1,
"creationTimestamp": "1633119005107454620",
"archived": true,
"dataHash": "jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=",
"dataSize": "14"
}
],
"nextVersionHandle": "2"
}

Retrieve the n-th to last iterations of a model

$ echo "{\"model_id\":\"my_model\", \"version_numbers\":[-2]}" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveVersionInfos
{
"versionInfos": [
{
"modelId": "my_model",
"versionNumber": 1,
"creationTimestamp": "1633119005107454620",
"archived": true,
"dataHash": "jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=",
"dataSize": "14"
}
],
"nextVersionHandle": "2"
}

Retrieve given iteration data - cogmentAPI.ModelRegistrySP/RetrieveVersionData ( .cogmentAPI.RetrieveVersionDataRequest ) returns ( stream .cogmentAPI.RetrieveVersionDataReplyChunk );

$ echo "{\"model_id\":\"my_model\", \"version_number\":1}" | grpcurl -plaintext -d @ localhost:9000 cogment.ModelRegistrySP/RetrieveVersionData
{
"dataChunk": "Y2h1bmtfMWNodW5rXzI="
}

To retrieve the n-th to last iteration, use version_number:-n (e.g. -1 for the latest, -2 for the 2nd to last).

- - + + \ No newline at end of file diff --git a/docs/reference/cli/orchestrator.html b/docs/reference/cli/orchestrator.html index b98fdf3..af4afec 100644 --- a/docs/reference/cli/orchestrator.html +++ b/docs/reference/cli/orchestrator.html @@ -3,22 +3,25 @@ -Orchestrator | Cogment +Orchestrator | Cogment - - - + + + + + +
-

Orchestrator

The Orchestrator is the heart of Cogment. It ties all services together to execute trials.

Command line

The Orchestrator is simply called this way

$ cogment services orchestrator --lifecycle_port=9001 --actor_port=9001 --pre_trial_hooks=grpc://config:9001

Configuration

The orchestrator configuration can be specified either through the command line or environment variables.

lifecycle_port

The TCP port where to serve the trial lifecycle gRPC service. +

Orchestrator

The Orchestrator is the heart of Cogment. It ties all services together to execute trials.

Command line

The Orchestrator is simply called this way

$ cogment services orchestrator --lifecycle_port=9001 --actor_port=9001 --pre_trial_hooks=grpc://config:9001

Configuration

The orchestrator configuration can be specified either through the command line or environment variables.

lifecycle_port

The TCP port where to serve the trial lifecycle gRPC service. This is where the Controller connects to. It can be the same as the actor_port.

If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory.

Can be specified as:

  • a command line option, e.g. --lifecycle_port=12000,
  • an environment variable, e.g. COGMENT_LIFECYCLE_PORT=12000,
  • its default value is 9000.

actor_port

The TCP port where to serve the client actor gRPC service. This is where Client Actors (as opposed to service actors) connect to. It can be the same as the lifecycle_port.

If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory.

Can be specified as:

  • a command line option, e.g. --actor_port=12000,
  • an environment variable, e.g. COGMENT_ACTOR_PORT=12000,
  • its default value is 9000.

actor_web_port

The TCP port used to serve the client actor gRPC service for consumption over websocket. This is required for Client Actors running in a web browser.

Can be specified as:

  • a command line option, e.g. --actor_web_port=8080,
  • an environment variable, e.g. COGMENT_WEB_PROXY_PORT=12000,
  • its default value is 0, which means the http port is disabled.

params

The name of the YAML file containing the default parameters for new trials. Some of the parameters must match their corresponding values in the spec file (typically cogment.yaml) and may therefore lock an Orchestrator instance to specific types of trials. If pre-trial hooks are defined, these parameters are sent to the first hook before a trial starts. These parameters are ignored if the parameters are provided on trial start (see TrialStartRequest).

Can be specified as:

  • a command line option, e.g. --params=./path/to/params.yaml,
  • an environment variable, e.g. COGMENT_DEFAULT_PARAMS_FILE=./path/to/params.yaml,
  • it has no default value.

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the orchestrator services, and to discover services for new trials.

If not provided, the endpoints provided to the Orchestrator or in the parameters must not be discovery endpoints (i.e. must not require a directory). And the Orchestrator will not auto register its services, in which case manual registration to the directory must be done, or an explicit address must be provided to access the Orchestrator.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • it has no default value.

directory_authentication_token

Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

directory_auto_register

If 0, then the Orchestrator will not register its services to the Directory; The services must be externally registered, or gRPC endpoints used to reach the services. If 1, then the Orchestrator will register its services to the directory service if possible. Other values are reserved.

Can be specified as:

  • a command line option, e.g. --directory_auto_register=0,
  • an environment variable, e.g. COGMENT_ORCHESTRATOR_DIRECTORY_AUTO_REGISTER=0,
  • its default value is 1.

directory_registration_host

This is the host that will be registered to the Directory for the Orchestrator services. If not provided, the Orchestrator will determine its own IP address and use that as the registration host.

In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided.

Can be specified as:

  • a command line option, e.g. --directory_registration_host=foo.bar,
  • an environment variable, e.g. COGMENT_ORCHESTRATOR_DIRECTORY_REGISTRATION_HOST=foo.bar,
  • it has no default value (i.e. self determined IP address is used).

directory_registration_properties

These are the properties that will be registered to the Directory for the Orchestrator services. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form "name=value,name=value,name=value" where the values are optional.

Can be specified as:

  • a command line option, e.g. --directory_registration_properties="Sim=20,hpp,mem=HIGH",
  • an environment variable, e.g. COGMENT_ORCHESTRATOR_DIRECTORY_REGISTRATION_PROPERTIES="Sim=20,hpp,mem=HIGH",
  • it has no default value.

pre_trial_hooks

Cogment endpoint definitions for pre-trial hooks. Hooks may be called before a new trial starts; They are then called in order, in a pipeline fashion, to set the parameters for a new trial. The first hook will receive the default parameters, and the result of the last hook will be used as the parameters for the new trial.

Can be specified as:

  • a command line option with different endpoints separated by commas, e.g. --pre_trial_hooks=grpc://foo:9000,grpc://bar:9000, and/or with the option passed multiple times, e.g. --pre_trial_hooks=grpc://foo:9000 --pre_trial_hooks=grpc://bar:9000,
  • an environment variable with different endpoints separated by spaces, e.g. COGMENT_PRE_TRIAL_HOOKS="grpc://foo:9000 grpc://bar:9000",
  • it has no default value.

prometheus_port

The TCP port where to serve Prometheus metrics. Must be different than lifecycle_port and actor_port. If not specified, the Prometheus server is disabled.

Can be specified as:

  • a command line option, e.g. --prometheus_port=8000,
  • an environment variable, e.g. COGMENT_ORCHESTRATOR_PROMETHEUS_PORT=8000,
  • its default value is 0, which means the prometheus server is disabled.

status_file

File containing simple status for the Orchestrator. This is useful when running the Orchestrator inside containers or synchronizing with external components. The file is open and stays open while the Orchestrator runs. The file will contain one to three letters: I, R, T. "I" indicates that the Orchestrator is initializing. When the Orchestrator starts, the file only contains this letter. "R" indicates that the Orchestrator is ready. This letter is added to the file (thus the file will normally contain "IR" at this point). "T" indicates that the Orchestrator has terminated (crashes will not set this file to "T"). Thus after a normal end, the file will contain "IRT".

Can be specified as:

  • a command line option, e.g. --status_file=./path/to/status,
  • an environment variable, e.g. COGMENT_STATUS_FILE=./path/to/status,
  • it has no default value.

private_key

File name containg a PEM encoded private key for encrypted communication.

Can be specified as:

  • a command line option, e.g. --private_key=./path/to/key.pem,
  • an environment variable, e.g. COGMENT_PRIVATE_KEY_FILE=./path/to/key.pem,
  • it has no default value.

root_cert

File name containing a PEM encoded trusted root certificate.

Can be specified as:

  • a command line option, e.g. --root_cert=./path/to/cert.pem,
  • an environment variable, e.g. COGMENT_ROOT_CERT_FILE=./path/to/cert.pem,
  • it has no default value.

trust_chain

File name containing a PEM encoded trust chain.

Can be specified as:

  • a command line option, e.g. --trust_chain=./path/to/chain.pem,
  • an environment variable, e.g. COGMENT_TRUST_CHAIN_FILE=./path/to/chain.pem,
  • it has no default value.

gc_frequency

Number of (started) trials between trial garbage collection. The Orchestrator periodically deletes ended and stale trials; this parameter controls how often this cleanup happens. The garbage collection may happen on the start of any trial.

Can be specified as:

  • a command line option, e.g. --gc_frequency=5,
  • an environment variable, e.g. COGMENT_GC_FREQUENCY=5,
  • default value is 10.

log_level

Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator.

Can be specified as:

  • a command line option, e.g. --log_level=debug,
  • an environment variable, e.g. COGMENT_LOG_LEVEL=debug,
  • default value is info.

log_file

Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout.

Can be specified as:

  • a command line option, e.g. --log_file=./path/to/cogment.log,
  • an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log,
  • default value is info.
- - + + \ No newline at end of file diff --git a/docs/reference/cli/status.html b/docs/reference/cli/status.html index cff9615..d6a99b8 100644 --- a/docs/reference/cli/status.html +++ b/docs/reference/cli/status.html @@ -3,15 +3,18 @@ -Status | Cogment +Status | Cogment - - - + + + + + +
-

Status

Status is a utility command to request the status of Cogment services. It can also inquire the directory to find services to request status.

cogment status [options] [statuses...]

Common

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to discover the services from which to request status.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • its default value is "grpc://localhost:9005" (which is the default when running cogment services directory locally).

directory_authentication_token

Authentication token for services registered in the Directory. An empty token is the same as no token. Only services with the matching authentication token will be found in the directory.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

verbose

Controls how much of the service information (received from the directory) is printed. The default only prints the directory ID of the service. To increase the amount of information, more "v" can be added, up to -vvvv to print all service information (similar to the Cogment Directory Client "inquire" command).

Can be specified as:

  • a command line option, e.g. --verbose, -v, -vv, -vvv, -vvvv
  • it has no default value (i.e. minimal verbosity)

endpoint

Cogment endpoint to the service from which to request statuses.

If this is a discovery endpoint then a directory must be provided. +

Status

Status is a utility command to request the status of Cogment services. It can also inquire the directory to find services to request status.

cogment status [options] [statuses...]

Common

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to discover the services from which to request status.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • its default value is "grpc://localhost:9005" (which is the default when running cogment services directory locally).

directory_authentication_token

Authentication token for services registered in the Directory. An empty token is the same as no token. Only services with the matching authentication token will be found in the directory.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

verbose

Controls how much of the service information (received from the directory) is printed. The default only prints the directory ID of the service. To increase the amount of information, more "v" can be added, up to -vvvv to print all service information (similar to the Cogment Directory Client "inquire" command).

Can be specified as:

  • a command line option, e.g. --verbose, -v, -vv, -vvv, -vvvv
  • it has no default value (i.e. minimal verbosity)

endpoint

Cogment endpoint to the service from which to request statuses.

If this is a discovery endpoint then a directory must be provided. If it is a grpc endpoint and a type option is provided, the service must match the type provided or the status request will fail.

Can be specified as:

  • a command line option, e.g. --endpoint=grpc://172.2.17.23:45367,
  • its default value is "cogment://discover" (which will inquire the directory for all healthy services).

type

The type of service from which to request statuses. This is relevant only if the endpoint is a grpc endpoint (because directory entries include the type data). If this type is not provided, all types will be tried to determine if one works (if there are multiple services at the endpoint, only one will be reported).

Possible values are: actor, environment, prehook, datalog, lifecycle, actservice, datastore, modelregistry or other. @@ -19,7 +22,7 @@ What defines a "standard" status depends on the service, it often excludes debug statuses and statuses that require extra computation. Non-standard statuses must be requested explicitly by name. Explicit (named) statuses can precede the star (*) in the list of statuses to request, but all names following the star status will be ignored.

E.g.:

$ cogment status '*'
$ cogment status overall_load nb_sessions
$ cogment status nb_samples_processed '*'
- - + + \ No newline at end of file diff --git a/docs/reference/cli/trial-datastore/trial-datastore-client.html b/docs/reference/cli/trial-datastore/trial-datastore-client.html index 2a11a36..cb6babf 100644 --- a/docs/reference/cli/trial-datastore/trial-datastore-client.html +++ b/docs/reference/cli/trial-datastore/trial-datastore-client.html @@ -3,16 +3,19 @@ -Client | Cogment +Client | Cogment - - - + + + + + +
-

Trial Datastore Client

The Trial Datastore client provides command line access to some features of the Trial Datastore, and in general any service implementing the Trial Datastore API.

It is called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" [command]

The Trial Datastore client has the following commands:

  • list_trials to list trials stored in the Trial Datastore,
  • delete_trials to delete trials from the Trial Datastore,
  • export to export trials and their samples from the Trial Datastore,
  • import to import trials and their samples to the Trial Datastore.

Common options

A few configuration options are shared by the different commands, they can be specified either through the command line or environment variables.

endpoint

The gRPC endpoint of the target Trial Datastore.

Can be specified as:

  • a command line option, e.g. --endpoint="grpc://10.0.123.5:9003",
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_ENDPOINT=grpc://trial_datastore:9003,
  • its default value is "grpc://localhost:9003" (which is the default when running cogment services trial_datastore locally).

timeout

The maximum duration for the execution of the request. The duration should be specified as a sequence of numbers followed by a unit suffix: "300ms", "1.5h" or "2h45m" are valid timeouts. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

Can be specified as:

  • a command line option, e.g. --timeout=1m,
  • an environment variable, e.g. COGMENT_CLIENT_TIMEOUT=90s,
  • its default value is 30 seconds.

console_output

The format for what the command outputs to stdout. Can be either set to:

  • text, for human consumption, this output usually only includes partial information to ensure readability,
  • json, for consumption through scripts, we recommend using a tool like jq to parse and manipulate it.

Can be specified as:

  • a command line option, e.g. --console_output=json,
  • an environment variable, e.g. COGMENT_CLIENT_CONSOLE_OUTPUT=text,
  • its default value is text.

list_trials command

list_trials can be used to list the trials stored in a Trial Datastore.

It can be called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" list_trials --count 20

In addition to the shared configuration, list_trials can be configured with the following options.

count

The maximum number of trials to retrieve.

Can be specified as:

  • a command line option, e.g. --count=45,
  • its default value is 10.

from

The handle of the first trial to be retrieved: leave empty to retrieve a first page of results, for subsequent ones, set it to the next trial handle retrieved alongside the previous page.

Can be specified as:

  • a command line option, e.g. --from=23,
  • it has no default value (which will retrieve the first page of results)

Command output

The text output of list_trials is an array listing the following information for each trial.

  • trial id: the unique ID of the trial.
  • user id: the ID of the user that started or imported the trial.
  • state: the trial state for the last stored sample.
  • samples: the number of samples received for this trial.
  • actors: the number of actors involved in this trial.

The number of retrieved trials and the next trial handle are also printed.

The json output of list_trials is an instance of cogmentAPI.RetrieveTrialsReply serialized in JSON.

delete_trials command

delete_trials can be used to delete trials stored in a Trial Datastore.

It can be called this way:

$ cogment client delete_trials --endpoint="grpc://trial_datastore:9003" delete_trials <trial_id1> [...]

Command output

The text output of delete_trials is a human readable summary of the operation.

The json output of delete_trials is an object holding:

  • "message" a human readable summary,
  • "trial_ids" the list of deleted trial IDs (this also includes the trial IDs that didn't exist).

export command

export can be used to export the samples of multiple trials.

It can be called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" export <trial_id1> [...] --file="data.dump"

In addition to the shared configuration, export can be configured with the following options.

file

Path to the file where the data will be exported. If none is provided the same export is written to stdout and no summary output is generated.

Can be specified as:

  • a command line option, e.g. --file="./path/to/data.dump",
  • it has no default value.

The output format is binary, it is composed of the following:

note

Protobuf messages are stored in the file as:

  1. the size of the serialized message, as a 32 bits unsigned integer encoded in little endian,
  2. the serialized message.

Command output

The text output of export is a human readable summary of the operation.

The json output of export is an object holding:

  • "message", a human readable summary.
  • "bytes", the size of the output file, in bytes,
  • "trial_ids", the list of the exported trial IDs,
  • "filepath", the path to the output file,
note

If the --file option is not provided, only the binary content is outputed, no other command output is printed.

import command

import can be used to import multiple trials and their samples from a previously exported source.

It can be called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" import --file="data.dump"

In addition to the shared configuration, import can be configured with the following options.

file

Path to the file from which the data will be imported. If none is provided the import reads from stdin.

Can be specified as:

  • a command line option, e.g. --file="./path/to/data.dump",
  • it has no default value.

The input file format is expected to match the export's.

prefix

Prefix to apply to the ID of trials present in the file. This option is useful to prevent ID conflicts as each trial ID needs to be unique.

Can be specified as:

  • a command line option, e.g. --prefix="2022-08-08-import-",
  • it has no default value.

user_id

The User ID to use for the imported trials.

Can be specified as:

  • a command line option, e.g. --user_id="Jane Doe",
  • its default value is "cogment CLI".

Command output

The text output of import is a message specifying the number of imported trials, the input file path and the number of imported samples.

The json output of import is an object holding:

  • "message", a human readable summary.
  • "samples_count", the number of imported samples,
  • "trials", a list containing an object for each trial defining,
    • "trial_id", the trial ID,
    • "samples_count", the number of imported samples for this trial,
  • "filepath", the path to the input file,
- - +

Trial Datastore Client

The Trial Datastore client provides command line access to some features of the Trial Datastore, and in general any service implementing the Trial Datastore API.

It is called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" [command]

The Trial Datastore client has the following commands:

  • list_trials to list trials stored in the Trial Datastore,
  • delete_trials to delete trials from the Trial Datastore,
  • export to export trials and their samples from the Trial Datastore,
  • import to import trials and their samples to the Trial Datastore.

Common options

A few configuration options are shared by the different commands, they can be specified either through the command line or environment variables.

endpoint

The gRPC endpoint of the target Trial Datastore.

Can be specified as:

  • a command line option, e.g. --endpoint="grpc://10.0.123.5:9003",
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_ENDPOINT=grpc://trial_datastore:9003,
  • its default value is "grpc://localhost:9003" (which is the default when running cogment services trial_datastore locally).

timeout

The maximum duration for the execution of the request. The duration should be specified as a sequence of numbers followed by a unit suffix: "300ms", "1.5h" or "2h45m" are valid timeouts. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

Can be specified as:

  • a command line option, e.g. --timeout=1m,
  • an environment variable, e.g. COGMENT_CLIENT_TIMEOUT=90s,
  • its default value is 30 seconds.

console_output

The format for what the command outputs to stdout. Can be either set to:

  • text, for human consumption, this output usually only includes partial information to ensure readability,
  • json, for consumption through scripts, we recommend using a tool like jq to parse and manipulate it.

Can be specified as:

  • a command line option, e.g. --console_output=json,
  • an environment variable, e.g. COGMENT_CLIENT_CONSOLE_OUTPUT=text,
  • its default value is text.

list_trials command

list_trials can be used to list the trials stored in a Trial Datastore.

It can be called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" list_trials --count 20

In addition to the shared configuration, list_trials can be configured with the following options.

count

The maximum number of trials to retrieve.

Can be specified as:

  • a command line option, e.g. --count=45,
  • its default value is 10.

from

The handle of the first trial to be retrieved: leave empty to retrieve a first page of results, for subsequent ones, set it to the next trial handle retrieved alongside the previous page.

Can be specified as:

  • a command line option, e.g. --from=23,
  • it has no default value (which will retrieve the first page of results)

Command output

The text output of list_trials is an array listing the following information for each trial.

  • trial id: the unique ID of the trial.
  • user id: the ID of the user that started or imported the trial.
  • state: the trial state for the last stored sample.
  • samples: the number of samples received for this trial.
  • actors: the number of actors involved in this trial.

The number of retrieved trials and the next trial handle are also printed.

The json output of list_trials is an instance of cogmentAPI.RetrieveTrialsReply serialized in JSON.

delete_trials command

delete_trials can be used to delete trials stored in a Trial Datastore.

It can be called this way:

$ cogment client delete_trials --endpoint="grpc://trial_datastore:9003" delete_trials <trial_id1> [...]

Command output

The text output of delete_trials is a human readable summary of the operation.

The json output of delete_trials is an object holding:

  • "message" a human readable summary,
  • "trial_ids" the list of deleted trial IDs (this also includes the trial IDs that didn't exist).

export command

export can be used to export the samples of multiple trials.

It can be called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" export <trial_id1> [...] --file="data.dump"

In addition to the shared configuration, export can be configured with the following options.

file

Path to the file where the data will be exported. If none is provided the same export is written to stdout and no summary output is generated.

Can be specified as:

  • a command line option, e.g. --file="./path/to/data.dump",
  • it has no default value.

The output format is binary, it is composed of the following:

note

Protobuf messages are stored in the file as:

  1. the size of the serialized message, as a 32 bits unsigned integer encoded in little endian,
  2. the serialized message.

Command output

The text output of export is a human readable summary of the operation.

The json output of export is an object holding:

  • "message", a human readable summary.
  • "bytes", the size of the output file, in bytes,
  • "trial_ids", the list of the exported trial IDs,
  • "filepath", the path to the output file,
note

If the --file option is not provided, only the binary content is outputed, no other command output is printed.

import command

import can be used to import multiple trials and their samples from a previously exported source.

It can be called this way:

$ cogment client trial_datastore --endpoint="grpc://trial_datastore:9003" import --file="data.dump"

In addition to the shared configuration, import can be configured with the following options.

file

Path to the file from which the data will be imported. If none is provided the import reads from stdin.

Can be specified as:

  • a command line option, e.g. --file="./path/to/data.dump",
  • it has no default value.

The input file format is expected to match the export's.

prefix

Prefix to apply to the ID of trials present in the file. This option is useful to prevent ID conflicts as each trial ID needs to be unique.

Can be specified as:

  • a command line option, e.g. --prefix="2022-08-08-import-",
  • it has no default value.

user_id

The User ID to use for the imported trials.

Can be specified as:

  • a command line option, e.g. --user_id="Jane Doe",
  • its default value is "cogment CLI".

Command output

The text output of import is a message specifying the number of imported trials, the input file path and the number of imported samples.

The json output of import is an object holding:

  • "message", a human readable summary.
  • "samples_count", the number of imported samples,
  • "trials", a list containing an object for each trial defining,
    • "trial_id", the trial ID,
    • "samples_count", the number of imported samples for this trial,
  • "filepath", the path to the input file,
+ + \ No newline at end of file diff --git a/docs/reference/cli/trial-datastore/trial-datastore-server.html b/docs/reference/cli/trial-datastore/trial-datastore-server.html index 0733152..728f4ba 100644 --- a/docs/reference/cli/trial-datastore/trial-datastore-server.html +++ b/docs/reference/cli/trial-datastore/trial-datastore-server.html @@ -3,20 +3,23 @@ -Server | Cogment +Server | Cogment - - - + + + + + +
-

Trial Datastore Server

Cogment Trial Datastore implements the datalog API. It is designed to store the trajectory samples generated by the trials for online and offline usage.

The Cogment CLI also includes an implementation of a client.

The Trial Datastore service included in the Cogment CLI can work in two modes:

  • Memory storage, which is the default mode, stores the data in memory up to a maximum size and then evicts the least recently used samples.
  • File storage stores the data on disk in a file. The storage engine relies on bbolt.

The Trial Datastore service is simply called this way

$ cogment services trial_datastore --port=9000 --file_storage=./database.db

Configuration

The Trial Datastore configuration can be specified either through the command line or environment variables.

port

The TCP port where to offer gRPC services. +

Trial Datastore Server

Cogment Trial Datastore implements the datalog API. It is designed to store the trajectory samples generated by the trials for online and offline usage.

The Cogment CLI also includes an implementation of a client.

The Trial Datastore service included in the Cogment CLI can work in two modes:

  • Memory storage, which is the default mode, stores the data in memory up to a maximum size and then evicts the least recently used samples.
  • File storage stores the data on disk in a file. The storage engine relies on bbolt.

The Trial Datastore service is simply called this way

$ cogment services trial_datastore --port=9000 --file_storage=./database.db

Configuration

The Trial Datastore configuration can be specified either through the command line or environment variables.

port

The TCP port where to offer gRPC services. The Trial Datastore offers two services at the same TCP port: the Datalog API and the Trial Datastore API. The Datalog API is where the Datastore receives the raw trial data from the Orchestrator. The Trial Datastore API is is where the Datastore delivers online or offline stored data (typically to actors for training).

If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory.

Can be specified as:

  • a command line option, e.g. --port=12000,
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_PORT=12000,
  • its default value is 9003.

grpc_reflection

Whether or not to enable gRPC reflection on the served endpoints.

Can be specified as:

  • a command line flag, e.g. --grpc_reflection,
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_GRPC_REFLECTION=1,
  • by default, it is disabled.

memory_storage_max_samples_size

This defines the maximum cumulated size of samples the memory storage holds before evicting least recently used trials samples. It is defined in bytes.

Can be specified as:

  • a command line option, e.g. --memory_storage_max_samples_size=100000000,
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_MEMORY_STORAGE_MAX_SAMPLE_SIZE=100000000,
  • its default value is 1073741824 Bytes, i.e. 1GB.

file_storage

Path to the database file used by the file storage. If provided, the trial datastore will use the file storage.

Can be specified as:

  • a command line flag, e.g. --file_storage, to use the default value .cogment/trial_datastore.db,
  • a command line option, e.g. --file_storage=./path/to/trial_datastore.db,
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_FILE_STORAGE_PATH=./path/to/trial_datastore.db,
  • it has no default value.

log_level

Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator.

Can be specified as:

  • a command line option, e.g. --log_level=debug,
  • an environment variable, e.g. COGMENT_LOG_LEVEL=5,
  • default value is info.

log_file

Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout.

Can be specified as:

  • a command line option, e.g. --log_file=./path/to/cogment.log,
  • an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log,
  • default value is info.

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the trial datastore services for discovery by other services. If not provided, the trial datastore will not auto register, in which case manual registration to the directory must be done, or an explicit address must be provided to access the services of the trial datastore.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • it has no default value.

directory_authentication_token

Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

directory_registration_host

This is the host that will be registered to the Directory for the Trial Datastore services. If not provided, the Trial Datastore will determine its own IP address and use that as the registration host.

In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided.

Can be specified as:

  • a command line option, e.g. --directory_registration_host=foo.bar,
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_DIRECTORY_REGISTRATION_HOST=foo.bar,
  • it has no default value (i.e. self determined IP address is used).

directory_registration_properties

These are the properties that will be registered to the Directory for the Trial Datastore services. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form "name=value,name=value,name=value" where the values are optional.

Can be specified as:

  • a command line option, e.g. --directory_registration_properties="Sim=20,hpp,mem=HIGH",
  • an environment variable, e.g. COGMENT_TRIAL_DATASTORE_DIRECTORY_REGISTRATION_PROPERTIES="Sim=20,hpp,mem=HIGH",
  • it has no default value.
- - + + \ No newline at end of file diff --git a/docs/reference/cli/web-proxy.html b/docs/reference/cli/web-proxy.html index e3a71ce..577c2e7 100644 --- a/docs/reference/cli/web-proxy.html +++ b/docs/reference/cli/web-proxy.html @@ -3,17 +3,20 @@ -Web Proxy | Cogment +Web Proxy | Cogment - - - + + + + + +
-

Web Proxy

caution

This module is still in active development and should be considered a preview version.

The Cogment Web Proxy is designed to facilitate the use of Cogment with web-based components. It implements a JSON HTTP API that can be easily used from a web application.

Current features include the following.

  • Using the web proxy as a Controller:
    • list ongoing trials,
    • start trial.
  • Using the web proxy as an Actor:
    • Join a trial,
    • Leave a trial,
    • Receive observations and rewards, send actions and rewards.

Cogment Web Proxy aims at superceding the use of the grpc-web API that can be exposed by the orchestrator.

Command line

The Web Proxy is simply called this way

$ cogment services web_proxy --web_port=8080 --spec_file=./cogment.yaml

Configuration

The Web Proxy configuration can be specified either through the command line or environment variables.

web_port

The TCP port where to serve the Web Proxy HTTP API.

Can be specified as:

  • a command line option, e.g. --web_port=80,
  • an environment variable, e.g. COGMENT_WEB_PROXY_WEB_PORT=8°,
  • its default value is 8080.

orchestrator_endpoint

Cogment endpoint of the orchestrator service. It can be a gRPC or discovery endpoint,in which case it'll rely on the directory configuration.

This endpoint is used to access the gRPC Control API.

Can be specified as:

  • a command line option, e.g. --orchestrator_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_ORCHESTRATOR_ENDPOINT=grpc://foo:9005,
  • its default value is cogment://discover.

port

The TCP port where to serve the The Service Actor API.

If set to 0, then the system will automatically choose a free port. +

Web Proxy

caution

This module is still in active development and should be considered a preview version.

The Cogment Web Proxy is designed to facilitate the use of Cogment with web-based components. It implements a JSON HTTP API that can be easily used from a web application.

Current features include the following.

  • Using the web proxy as a Controller:
    • list ongoing trials,
    • start trial.
  • Using the web proxy as an Actor:
    • Join a trial,
    • Leave a trial,
    • Receive observations and rewards, send actions and rewards.

Cogment Web Proxy aims at superceding the use of the grpc-web API that can be exposed by the orchestrator.

Command line

The Web Proxy is simply called this way

$ cogment services web_proxy --web_port=8080 --spec_file=./cogment.yaml

Configuration

The Web Proxy configuration can be specified either through the command line or environment variables.

web_port

The TCP port where to serve the Web Proxy HTTP API.

Can be specified as:

  • a command line option, e.g. --web_port=80,
  • an environment variable, e.g. COGMENT_WEB_PROXY_WEB_PORT=8°,
  • its default value is 8080.

orchestrator_endpoint

Cogment endpoint of the orchestrator service. It can be a gRPC or discovery endpoint,in which case it'll rely on the directory configuration.

This endpoint is used to access the gRPC Control API.

Can be specified as:

  • a command line option, e.g. --orchestrator_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_ORCHESTRATOR_ENDPOINT=grpc://foo:9005,
  • its default value is cogment://discover.

port

The TCP port where to serve the The Service Actor API.

If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory.

Can be specified as:

  • a command line option, e.g. --port=12000,
  • an environment variable, e.g. COGMENT_WEB_PROXY_PORT=12000,
  • its default value is 9002.

spec_file

Path to the spec file specifiying the trial that the proxy will interact with. In particular it is used for JSON serialization of the echanged actions, observations, configurations, ...

Can be specified as:

  • a command line option, e.g. --spec_file=./path/to/cogment.yaml,
  • an environment variable, e.g. COGMENT_SPEC_FILE=./path/to/cogment.yaml,
  • its default value is ./cogment.yaml

implementation

This defines the name of the actor implementation managed by the proxy.

Can be specified as:

  • a command line option, e.g. --implementation=my_implementation,
  • an environment variable, e.g. COGMENT_WEB_PROXY_IMPLEMENTATION=my_implementation,
  • its default value is web.

secret

The secret used to sign the generated actor trial tokens.

info

This value should be changed for any application in production

Can be specified as:

  • a command line option, e.g. --secret=rosebud,
  • an environment variable, e.g. COGMENT_WEB_PROXY_SECRET=rosebud,
  • its default value is web_proxy_secret.

log_level

Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator.

Can be specified as:

  • a command line option, e.g. --log_level=debug,
  • an environment variable, e.g. COGMENT_LOG_LEVEL=5,
  • default value is info.

log_file

Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout.

Can be specified as:

  • a command line option, e.g. --log_file=./path/to/cogment.log,
  • an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log,
  • default value is info.

directory_endpoint

Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the web proxy actor service for discovery by other services and to access the orchestrator. If not provided, the web proxy will not auto register, in which case manual registration to the directory must be done, or an explicit address must be provided to access the web proxy.

Can be specified as:

  • a command line option, e.g. --directory_endpoint=grpc://foo:9005,
  • an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005,
  • it has no default value.

directory_authentication_token

Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token.

Can be specified as:

  • a command line option, e.g. --directory_authentication_token=GH670ploT,
  • an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT,
  • it has no default value.

directory_registration_host

This is the host that will be registered to the Directory for the web proxy service. If not provided, the web proxy will determine its own IP address and use that as the registration host.

In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided.

Can be specified as:

  • a command line option, e.g. --directory_registration_host=foo.bar,
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_HOST=foo.bar,
  • it has no default value (i.e. self determined IP address is used).

directory_registration_properties

These are the properties that will be registered to the Directory for the web proxy service. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form "name=value,name=value,name=value" where the values are optional.

Can be specified as:

  • a command line option, e.g. --directory_registration_properties="Sim=20,hpp,mem=HIGH",
  • an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_PROPERTIES="Sim=20,hpp,mem=HIGH",
  • it has no default value.

HTTP API

Controller

List trials

GET /controller/trials

List all active trials.

🚧

Start a trial

POST /controller/trials

Start a trial from given trial parameters.

info

It is forbidden to pass gRPC endpoint as part of the trial parameters here

🚧

Actor

Join a trial

POST /actor/:actor_name/:trial_id:

Join trial trial_id as actor actor_name, retrieve the initial observation and the actor trial token

🚧

Leave a trial

DELETE /actor/:actor_name/:trial_id:

Explicitly close the trial connection.

Requires matching actor trial token passed in the Cogment-Actor-Trial-Token header

🚧

Act

POST/GET /actor/:actor_name/:trial_id/:tick_id:

Post the action (and potential sent rewards) for a tick (empty action on GET), retrieve the next observation (and potential received rewards).

Requires matching actor trial token passed in the Cogment-Actor-Trial-Token header

- - + + \ No newline at end of file diff --git a/docs/reference/cogment-v2-changes.html b/docs/reference/cogment-v2-changes.html index 5108536..6d004a4 100644 --- a/docs/reference/cogment-v2-changes.html +++ b/docs/reference/cogment-v2-changes.html @@ -3,16 +3,19 @@ -Cogment 2.0 | Cogment +Cogment 2.0 | Cogment - - - + + + + + +
-

Cogment 2.0

tip

This document describes the full list of the changes for Cogment 2.O. A migration guide is available here.

Cogment 2.0 is a massive internal change to Cogment, starting with the underlying gRPC API that has seen a major refactoring. But there is a minimal amount of changes that affect the use of cogment. The changes that affect users are in three categories: breaking changes, deprecated behavior and new functionalities.

Breaking changes

These are changes that, if the related features were used, will prevent Cogment v1 projects from working with Cogment v2. They represent the minimum changes necessary to upgrade to v2.

Cogment.yaml

  • Delta types of observations (and all related settings) are not supported anymore. This means that in cogment.yaml, these sections are now ignored:
    • import::python
    • import::javascript
    • actor_classes::observation::delta
    • actor_classes::observation::delta_apply_fn
  • config (for trial, environment and actor) are not accepted in the parameters section anymore.

Python SDK

  • The Session.get_active_actors() method has been restricted to the environment only. This means that actors cannot call this method anymore (it will raise an exception). If actors need the full list of actors, there are a few possibilities:
    • Create a controller in the actor implementation and use the Controller.get_actors() method.
    • Receive the actor list in the config from the pre-trial hooks; the pre-trial hooks have implicit knowledge of all actors (at least the last hook).
    • Add the information in the actors observation space.
    • Send the information in a message.
  • The EnvironmentSession.send_message() method will not accept a to_environment parameter anymore (since it does not make sense anyway).
  • The Controller.terminate_trial() method parameter trial_id has been renamed trial_ids.
  • The Controller.get_trial_info() method parameter trial_id has been renamed trial_ids.

Javascript SDK

Except for the following, everything has been subject to breaking changes:

  • The shape of the observation object has remained the same
  • You can keep the actor function that you have in your v1 project

Please refer to the new Javascript API Reference

Datalog sample

Since the Datalog samples, unlike everything else in the SDK, used the raw API protobuf, it has implicitly changed. But in v2, there is now a wrapper for it, which replaces direct access to the protobuf content.

If people still have serialized v1 data stored (e.g. in a database), v1 versions of the sample protobuf messages (DatalogSample_v1) are provided in the API for convenience, so users can deserialize the data into v1 samples and extract the information.

For more info, visit the gRPC api documentation

Orchestrator

  • The environment variables read by the Orchestrator on start have changed names to help prevent clashes.
    • TRIAL_LIFECYCLE_PORT becomes COGMENT_LIFECYCLE_PORT
    • TRIAL_ACTOR_PORT becomes COGMENT_ACTOR_PORT
    • PROMETHEUS_PORT becomes COGMENT_ORCHESTRATOR_PROMETHEUS_PORT
  • The Orchestrator does not search for the file named cogment.yaml as the default spec file anymore. The spec file name must be explicit on the command line using --config=cogment.yaml.
  • For further information, refer to the Orchestrator documentation.

Deprecated Behaviors

These are changes that are optional to upgrade to Cogment v2, but will eventually be phased out and become breaking changes in a future version. If these features are used with Cogment v2, warnings will be issued.

Cogment.yaml

The spec file is not used by the Orchestrator anymore, and when used by the other components, these sections of the file will be ignored:

  • The trial_params section is not needed anymore (since the Orchestrator has its own parameters file)
  • The datalog section is deprecated (the details of the datalog have been moved to the Orchestrator parameters file)
  • The trial:pre-hooks section is deprecated (these values are now passed to the Orchestrator on the command line)

For more information, visit the Cogment.yaml documentation.

Orchestrator

Providing a spec file (cogment.yaml) to the Orchestrator is deprecated. The new behavior is as follows:

  • Provide a YAML default parameters file (command line option --params) with the top level section trial_params.
  • Add the datalog section to the parameters (if desired), without type (for type none just omit the datalog section). I.e. Whereas the spec file was defining a single data logger for all trials, the new Orchestrator can have a different data logger for each trial, and thus a datalog section is now found in the trial default parameters. Example of the new parameters datalog section:
trial_params:
datalog:
- endpoint: grpc://logger:9000
- exclude_fields: [messages, actions]
  • The endpoint for a client actor in the parameters must now be cogment://client instead of just client. E.g.:
trial_params:
actors:
- endpoint: cogment://client
  • Pre-trial hooks are defined on the command line (or environment variable) as opposed to being found in the spec file.
tip

The Cogment Orchestrator and the generate tools ignore the sections of the YAML files that are not relevant to them, therefore the content of the spec and parameters files can be combined in a single file safely.

The Orchestrator needs a parameters file or pre-trial hooks (or both). Thus with pre-trial hooks and no parameters file (or a carefully defined parameters file) the Orchestrator is now independent of any trial specifications (spec file) and can run any type of trial. With a fully defined parameters file and no hooks, the Orchestrator can work as before for simple projects.

Python SDK

  • The ActorSession.send_message() method should not use the to_environment parameter anymore. The environment is targeted using its name (defaulted to "env" if not given specifically, or ActorSession.env_name).
  • The joining of a trial by a client actor (Context.join_trial()) should now be made by providing an actor name or class (unlike previously where an implementation name was provided). This is to allow the pre-trial hooks to decide on the details of the actor (including implementation) that should be used, the same way as for service actors.
  • In RecvObservation, the snapshot attribute is deprecated. A new attribute observation takes its place.
  • The Controller.terminate_trial() method parameter trial_ids now takes a list of IDs (instead of a single string for one ID).
  • The Controller.get_trial_info() method parameter trial_ids now takes a list of IDs (instead of a single string for one ID or None).
  • The url attribute of cogment.Endpoint must now be a gRPC type URL (i.e. start with grpc://). Endpoint is used to join a trial and to get a Controller.

New Functionalities

These are changes that are additional and transparent to a v1 project.

Parameters

These are the parameters defined in the new file given to the Orchestrator, and that can be changed by pre-trial hooks.

  • The environment can be given a name, similarly to the actors. If not given, it defaults to "env".

Python SDK

  • When starting a trial (Controller.start_trial()), a new trial_id_requested parameter requests the trial ID to be a specific string instead of an automatic UUID. It is a "request" because the trial will not start if the id conflicts with another active trial; an empty ID string will be returned if the trial is not started.
  • Controller.terminate_trial() method has a new parameter hard. This parameter forces a hard/immediate termination of the trial. As opposed to a "soft" termination which will wait for the next tick to terminate nicely.
  • The ActorSession and EnvironmentSession have a new method sending_done() to indicate that they have finished sending data and will now only be listening until the end of the trial. This is required only if the new auto_done_sending parameter of the start() method is False (It is True by default for backward compatibility). This only needs to be manually done (i.e. auto_done_sending=False) in special situations.
  • PrehookSession.get_user_id() new method.
  • PrehookSession.environment_name new attribute.
  • DatalogSession.user_id new attribute (this info used to be available in the protobuf DatalogSample).
  • RecvAction.tick_id new attribute.
- - +

Cogment 2.0

tip

This document describes the full list of the changes for Cogment 2.O. A migration guide is available here.

Cogment 2.0 is a massive internal change to Cogment, starting with the underlying gRPC API that has seen a major refactoring. But there is a minimal amount of changes that affect the use of cogment. The changes that affect users are in three categories: breaking changes, deprecated behavior and new functionalities.

Breaking changes

These are changes that, if the related features were used, will prevent Cogment v1 projects from working with Cogment v2. They represent the minimum changes necessary to upgrade to v2.

Cogment.yaml

  • Delta types of observations (and all related settings) are not supported anymore. This means that in cogment.yaml, these sections are now ignored:
    • import::python
    • import::javascript
    • actor_classes::observation::delta
    • actor_classes::observation::delta_apply_fn
  • config (for trial, environment and actor) are not accepted in the parameters section anymore.

Python SDK

  • The Session.get_active_actors() method has been restricted to the environment only. This means that actors cannot call this method anymore (it will raise an exception). If actors need the full list of actors, there are a few possibilities:
    • Create a controller in the actor implementation and use the Controller.get_actors() method.
    • Receive the actor list in the config from the pre-trial hooks; the pre-trial hooks have implicit knowledge of all actors (at least the last hook).
    • Add the information in the actors observation space.
    • Send the information in a message.
  • The EnvironmentSession.send_message() method will not accept a to_environment parameter anymore (since it does not make sense anyway).
  • The Controller.terminate_trial() method parameter trial_id has been renamed trial_ids.
  • The Controller.get_trial_info() method parameter trial_id has been renamed trial_ids.

Javascript SDK

Except for the following, everything has been subject to breaking changes:

  • The shape of the observation object has remained the same
  • You can keep the actor function that you have in your v1 project

Please refer to the new Javascript API Reference

Datalog sample

Since the Datalog samples, unlike everything else in the SDK, used the raw API protobuf, it has implicitly changed. But in v2, there is now a wrapper for it, which replaces direct access to the protobuf content.

If people still have serialized v1 data stored (e.g. in a database), v1 versions of the sample protobuf messages (DatalogSample_v1) are provided in the API for convenience, so users can deserialize the data into v1 samples and extract the information.

For more info, visit the gRPC api documentation

Orchestrator

  • The environment variables read by the Orchestrator on start have changed names to help prevent clashes.
    • TRIAL_LIFECYCLE_PORT becomes COGMENT_LIFECYCLE_PORT
    • TRIAL_ACTOR_PORT becomes COGMENT_ACTOR_PORT
    • PROMETHEUS_PORT becomes COGMENT_ORCHESTRATOR_PROMETHEUS_PORT
  • The Orchestrator does not search for the file named cogment.yaml as the default spec file anymore. The spec file name must be explicit on the command line using --config=cogment.yaml.
  • For further information, refer to the Orchestrator documentation.

Deprecated Behaviors

These are changes that are optional to upgrade to Cogment v2, but will eventually be phased out and become breaking changes in a future version. If these features are used with Cogment v2, warnings will be issued.

Cogment.yaml

The spec file is not used by the Orchestrator anymore, and when used by the other components, these sections of the file will be ignored:

  • The trial_params section is not needed anymore (since the Orchestrator has its own parameters file)
  • The datalog section is deprecated (the details of the datalog have been moved to the Orchestrator parameters file)
  • The trial:pre-hooks section is deprecated (these values are now passed to the Orchestrator on the command line)

For more information, visit the Cogment.yaml documentation.

Orchestrator

Providing a spec file (cogment.yaml) to the Orchestrator is deprecated. The new behavior is as follows:

  • Provide a YAML default parameters file (command line option --params) with the top level section trial_params.
  • Add the datalog section to the parameters (if desired), without type (for type none just omit the datalog section). I.e. Whereas the spec file was defining a single data logger for all trials, the new Orchestrator can have a different data logger for each trial, and thus a datalog section is now found in the trial default parameters. Example of the new parameters datalog section:
trial_params:
datalog:
- endpoint: grpc://logger:9000
- exclude_fields: [messages, actions]
  • The endpoint for a client actor in the parameters must now be cogment://client instead of just client. E.g.:
trial_params:
actors:
- endpoint: cogment://client
  • Pre-trial hooks are defined on the command line (or environment variable) as opposed to being found in the spec file.
tip

The Cogment Orchestrator and the generate tools ignore the sections of the YAML files that are not relevant to them, therefore the content of the spec and parameters files can be combined in a single file safely.

The Orchestrator needs a parameters file or pre-trial hooks (or both). Thus with pre-trial hooks and no parameters file (or a carefully defined parameters file) the Orchestrator is now independent of any trial specifications (spec file) and can run any type of trial. With a fully defined parameters file and no hooks, the Orchestrator can work as before for simple projects.

Python SDK

  • The ActorSession.send_message() method should not use the to_environment parameter anymore. The environment is targeted using its name (defaulted to "env" if not given specifically, or ActorSession.env_name).
  • The joining of a trial by a client actor (Context.join_trial()) should now be made by providing an actor name or class (unlike previously where an implementation name was provided). This is to allow the pre-trial hooks to decide on the details of the actor (including implementation) that should be used, the same way as for service actors.
  • In RecvObservation, the snapshot attribute is deprecated. A new attribute observation takes its place.
  • The Controller.terminate_trial() method parameter trial_ids now takes a list of IDs (instead of a single string for one ID).
  • The Controller.get_trial_info() method parameter trial_ids now takes a list of IDs (instead of a single string for one ID or None).
  • The url attribute of cogment.Endpoint must now be a gRPC type URL (i.e. start with grpc://). Endpoint is used to join a trial and to get a Controller.

New Functionalities

These are changes that are additional and transparent to a v1 project.

Parameters

These are the parameters defined in the new file given to the Orchestrator, and that can be changed by pre-trial hooks.

  • The environment can be given a name, similarly to the actors. If not given, it defaults to "env".

Python SDK

  • When starting a trial (Controller.start_trial()), a new trial_id_requested parameter requests the trial ID to be a specific string instead of an automatic UUID. It is a "request" because the trial will not start if the id conflicts with another active trial; an empty ID string will be returned if the trial is not started.
  • Controller.terminate_trial() method has a new parameter hard. This parameter forces a hard/immediate termination of the trial. As opposed to a "soft" termination which will wait for the next tick to terminate nicely.
  • The ActorSession and EnvironmentSession have a new method sending_done() to indicate that they have finished sending data and will now only be listening until the end of the trial. This is required only if the new auto_done_sending parameter of the start() method is False (It is True by default for backward compatibility). This only needs to be manually done (i.e. auto_done_sending=False) in special situations.
  • PrehookSession.get_user_id() new method.
  • PrehookSession.environment_name new attribute.
  • DatalogSession.user_id new attribute (this info used to be available in the protobuf DatalogSample).
  • RecvAction.tick_id new attribute.
+ + \ No newline at end of file diff --git a/docs/reference/cogment-yaml.html b/docs/reference/cogment-yaml.html index 455e794..bbaf748 100644 --- a/docs/reference/cogment-yaml.html +++ b/docs/reference/cogment-yaml.html @@ -3,16 +3,19 @@ -Specifications File | Cogment +Specifications File | Cogment - - - + + + + + +
-

Specifications File

The specifications file (typically named cogment.yaml) is central to every Cogment project that use a Cogment SDK. This file is used to define the specifics of a type of trials. It can also contain data (the commands section) used by the Cogment CLI tool. A generator tool specific to each SDK takes this file as its main input to, among other things, configure the SDK.

The top level sections in the file are:

  • import: Used to import other proto files into the definition of the project
  • commands: Optional. Defines the commands that can be run by the Cogment CLI
  • trial: Define trial specific properties
  • environment: Define environment specific properties
  • actor_classes: Define actor specific properties (for each actor class)

In this document, "section" refers to YAML mappings.

Import

The import section is used to specify external data structures, and optionally code, that is referenced in other parts of the file. The referenced files must be in the same folder as the spec file. The import sections are:

  • proto: List of protobuf definition files. Message types defined in these files are used to communicate between the various components

All Cogment projects will need at least one proto import to define the data structures exchanged between the various components.

E.g.:

import:
proto:
- filename1.proto
- filename2.proto

⚠️ N.B. When using message types imported from a .proto file, types need to be referred through their package namespace, not the filename containing them.

Commands

This section is optional and defines commands that can then be executed using the Cogment CLI run command. The commands will be executed by a sub-shell and thus can be any shell command. The commands can also recursively call Cogment, either built-in CLI commands, or other commands defined here. But care should be taken not to create infinite recursive calls.

E.g.:

commands:
generate: |
cd client && python -m cogment.generate --spec cogment.yaml && cd ..
cd environment && python -m cogment.generate --spec cogment.yaml && cd ..
copy: cogment copy cogment.yaml *.proto params.yaml client environment
start: docker-compose up orchestrator agent env
play: cogment run start && docker-compose run launcher

To run one of these commands, the Cogment CLI command run must be used, e.g.: cogment run start. And as such there is no problem differentiating between cogment run copy and cogment copy (the latter is the builtin CLI command, and the former is the command defined in the cogment.yaml file).

The cogment command section exists so that commands can be executed in a platform independant manner.

Trial

This section defines properties related to the trial and trial management. It has the properties:

  • config_type: (optional) The protobuf message type (data structure) that will be passed on to the pre-trial hooks.

E.g.:

trial:
config_type: namespace.DataType

Environment

This section defines properties related to the environment. It has the properties:

  • config_type: (optional) The protobuf message type used to configure the environment
environment:
config_type: namespace.DataType

Actor Classes

Arguably the most important section of the spec file, the actor classes section describes the actor types that can be present in the project's trials.

The content of this section is a list of actor classes, each containing the necessary properties to define an actor class. These properties are:

  • name: The name by which this actor class is known
  • action: Mapping of properties- space: The protobuf message type that represents all the possible actions that this actor class can perform (its action space)
  • observation: Mapping of properties
    • space: The protobuf message type that represents a snapshot of the data that this actor class has access to (its observation space)
  • config_type: (optional) Defines the protobuf message type used to configure this actor class

Each actor class should define both an observation and action space as protobuf message types.

actor_classes:
- name: BigPlayer
action:
space: namespace.PlayerAction
observation:
space: namespace.PlayerObservation
config_type: namespace.PlayerConfig

- name: SmallPlayer
action:
space: namespace.PlayerAction
observation:
space: namespace.PlayerObservation
config_type: namespace.PlayerConfig

- name: Referee
action:
space: namespace.RefereeAction
observation:
space: namespace.RefereeObservation
config_type: namespace.RefereeConfig
- - +

Specifications File

The specifications file (typically named cogment.yaml) is central to every Cogment project that use a Cogment SDK. This file is used to define the specifics of a type of trials. It can also contain data (the commands section) used by the Cogment CLI tool. A generator tool specific to each SDK takes this file as its main input to, among other things, configure the SDK.

The top level sections in the file are:

  • import: Used to import other proto files into the definition of the project
  • commands: Optional. Defines the commands that can be run by the Cogment CLI
  • trial: Define trial specific properties
  • environment: Define environment specific properties
  • actor_classes: Define actor specific properties (for each actor class)

In this document, "section" refers to YAML mappings.

Import

The import section is used to specify external data structures, and optionally code, that is referenced in other parts of the file. The referenced files must be in the same folder as the spec file. The import sections are:

  • proto: List of protobuf definition files. Message types defined in these files are used to communicate between the various components

All Cogment projects will need at least one proto import to define the data structures exchanged between the various components.

E.g.:

import:
proto:
- filename1.proto
- filename2.proto

⚠️ N.B. When using message types imported from a .proto file, types need to be referred through their package namespace, not the filename containing them.

Commands

This section is optional and defines commands that can then be executed using the Cogment CLI run command. The commands will be executed by a sub-shell and thus can be any shell command. The commands can also recursively call Cogment, either built-in CLI commands, or other commands defined here. But care should be taken not to create infinite recursive calls.

E.g.:

commands:
generate: |
cd client && python -m cogment.generate --spec cogment.yaml && cd ..
cd environment && python -m cogment.generate --spec cogment.yaml && cd ..
copy: cogment copy cogment.yaml *.proto params.yaml client environment
start: docker-compose up orchestrator agent env
play: cogment run start && docker-compose run launcher

To run one of these commands, the Cogment CLI command run must be used, e.g.: cogment run start. And as such there is no problem differentiating between cogment run copy and cogment copy (the latter is the builtin CLI command, and the former is the command defined in the cogment.yaml file).

The cogment command section exists so that commands can be executed in a platform independant manner.

Trial

This section defines properties related to the trial and trial management. It has the properties:

  • config_type: (optional) The protobuf message type (data structure) that will be passed on to the pre-trial hooks.

E.g.:

trial:
config_type: namespace.DataType

Environment

This section defines properties related to the environment. It has the properties:

  • config_type: (optional) The protobuf message type used to configure the environment
environment:
config_type: namespace.DataType

Actor Classes

Arguably the most important section of the spec file, the actor classes section describes the actor types that can be present in the project's trials.

The content of this section is a list of actor classes, each containing the necessary properties to define an actor class. These properties are:

  • name: The name by which this actor class is known
  • action: Mapping of properties- space: The protobuf message type that represents all the possible actions that this actor class can perform (its action space)
  • observation: Mapping of properties
    • space: The protobuf message type that represents a snapshot of the data that this actor class has access to (its observation space)
  • config_type: (optional) Defines the protobuf message type used to configure this actor class

Each actor class should define both an observation and action space as protobuf message types.

actor_classes:
- name: BigPlayer
action:
space: namespace.PlayerAction
observation:
space: namespace.PlayerObservation
config_type: namespace.PlayerConfig

- name: SmallPlayer
action:
space: namespace.PlayerAction
observation:
space: namespace.PlayerObservation
config_type: namespace.PlayerConfig

- name: Referee
action:
space: namespace.RefereeAction
observation:
space: namespace.RefereeObservation
config_type: namespace.RefereeConfig
+ + \ No newline at end of file diff --git a/docs/reference/grpc.html b/docs/reference/grpc.html index 6404d76..959cb34 100644 --- a/docs/reference/grpc.html +++ b/docs/reference/grpc.html @@ -3,15 +3,18 @@ -gRPC API | Cogment +gRPC API | Cogment - - - + + + + + +
-

gRPC API

The low-level cogment communication API is implemented using gRPC services. +

gRPC API

The low-level cogment communication API is implemented using gRPC services. These services are collections of procedures to be called remotely (RPC). gRPC abstracts the network communication with familiar looking functions (representing the defined procedures), in any number of programming languages. How services are implemented or accessed is highly dependant on the programming language being interfaced, and is beyond the scope of this document (see gRPC API documentation).

This reference requires a basic understanding of gRPC, and in particular the format of the *.proto files.

info

Cogment's gRPC API is defined and released alongside the Cogment CLI, the latest version can be accessed at https://github.com/cogment/cogment/tree/main/packages/grpc_api.

General

In this API, the bytes data type is normally used to contain the serialized data of externally defined messages. These messages are well defined in the trial specifications file.

On the other hand, the google.protobuf.Any data type is normally used to contain messages that are not pre-defined (thus unknown by the framework), and may be decided at runtime. It is then the responsibility of the receiver to deserialize in the correct message type.

Empty messages are normally used as a placeholder for easy future, backward compatible, extension to the API.

In this API, gRPC metadata is normally used only for service request (by the caller) for identifying purposes. The details of the required metadata are described with the service calls. Service replies (the callees) are not expected to provide metadata.

In some places in the API, we use a list of actor data without information about which actor is where in the list. @@ -44,7 +47,7 @@ The first data received are the parameters. Data samples are provided in the request stream following the parameters. The stream is maintained for the duration of the trial.

Metadata:

  • trial-id: Identifier of the trial that is the source of the data.
  • user-id: Identifier of the user that started the trial.

Version()

Called to request version data.

Metadata: None

LogExporterSampleRequest

Stream request message for the RunTrialDatalog procedure.

message SampleInfo {
bool out_of_sync = 5;
uint64 tick_id = 1;
fixed64 timestamp = 2;
TrialState state = 3;
repeated string special_events = 4;
}

message DatalogSample {
SampleInfo info = 1;

ObservationSet observations = 2;
repeated Action actions = 3;
repeated Reward rewards = 4;
repeated Message messages = 5;
repeated uint32 default_actors = 6;
repeated uint32 unavailable_actors = 7;
}

message LogExporterSampleRequest {
oneof msg {
TrialParams trial_params = 1;
DatalogSample sample = 2;
}
}
  • out_of_sync: If false, this sample is a normal and full sample. If true, it is an out-of-sync sample that is partially filled, and some of the other value may have a slightly different meaning than for a normal sample.
  • tick_id: The tick the data relates to.
  • timestamp: The time the data was received. For a full sample, this is the time the observation set was received by the Orchestrator.
  • state: The state of the trial at the end of the tick. For out-of-sync samples, the state is undefined.
  • special_events: Events not visible from the rest of the data may appear in here. Out-of-sync samples will usually have an explanation of data in the special events list.
  • observations: Observations from the environment. Out-of-sync samples may not have observations.
  • actions: Actions from all actors. This list has the same length and order as the list of actors provided in trial_params. This list may be empty for out-of-sync samples.
  • rewards: List of rewards sent to actors.
  • messages: List of user data sent to actors or the environment.
  • default_actors: List of actors (index of actors) that were not available but had a default action. Actors in this list have invalid data in the actions list.
  • unavailable_actors: List of actors (index of actors) that were not available and did not have a default action. Actors in this list have invalid data in the actions list.
  • trial_params: Trial parameters used for a trial. This is sent on start of a trial, as the first message in the RunTrialDatalog stream.
  • sample: A data sample to be logged. It can be an out-of-sync sample which contains only partial data.

LogExporterSampleReply

Reply message for the RunTrialDatalog procedure.

message LogExporterSampleReply {}

Hook API

This API is defined in hooks.proto. It is implemented by the pre-trial hook application using the gRPC server API, and the orchestrator connects to the application.

The pre-trial hook endpoint, for the orchestrator to connect to, are defined on the command line of the Orchestrator (or in environment variables).

Service TrialHooksSP

service TrialHooksSP {
rpc OnPreTrial(PreTrialParams) returns (PreTrialParams) {}
rpc Version(VersionRequest) returns (VersionInfo) {}
}

OnPreTrial()

Called before a trial is started to set or modify the parameters for the trial.

Metadata:

  • trial-id: Identifier of the new trial that will be started.
  • user-id: Identifier of the user that started the trial.

Version()

Called to request version data.

Metadata: None

Directory API

This API is defined in directory.proto. It is implemented by the Directory application using the gRPC server API.

Service DirectorySP

service DirectorySP {
rpc Register(stream RegisterRequest) returns (stream RegisterReply) {}
rpc Deregister(stream DeregisterRequest) returns (stream DeregisterReply) {}
rpc Inquire(InquireRequest) returns (stream InquireReply) {}
rpc Version(VersionRequest) returns (VersionInfo) {}
}

Register()

Called to register (add) services to the directory.

Metadata:

  • authentication_token: (Optional) Token of the services being registered. This will be registered with the services and must match when inquiring or deregistering a service.

Deregister()

Called to deregister (remove) previously registered services to the directory.

Metadata:

  • authentication_token: (Optional) Token to authenticate services. This must match the token of the registered services.

Inquire()

Called to inquire (search) the directory for registered services.

Metadata:

  • authentication_token: (Optional) Token to identify the services. This must match the token of the inquired services.

Version()

Called to request version data.

Metadata: None

ServiceType

Type of service registered. This serves to know how to test for health.

enum ServiceType {
UNKNOWN_SERVICE = 0;
TRIAL_LIFE_CYCLE_SERVICE = 1;
CLIENT_ACTOR_CONNECTION_SERVICE = 2;
ACTOR_SERVICE = 3;
ENVIRONMENT_SERVICE = 4;
PRE_HOOK_SERVICE = 5;
DATALOG_SERVICE = 6;
DATASTORE_SERVICE = 7;
MODEL_REGISTRY_SERVICE = 8;
DIRECTORY_SERVICE = 9;
OTHER_SERVICE = 100;
}
  • UNKNOWN_SERVICE: Should not be used (it's a requirement of protobuf enums to have a 0 default value).
  • TRIAL_LIFE_CYCLE_SERVICE: Cogment service accessed with gRPC service TrialLifecycleSP.
  • CLIENT_ACTOR_CONNECTION_SERVICE: Cogment service accessed with gRPC service ClientActorSP.
  • ACTOR_SERVICE: Cogment service accessed with gRPC service ServiceActorSP.
  • ENVIRONMENT_SERVICE: Cogment service accessed with gRPC service EnvironmentSP.
  • PRE_HOOK_SERVICE: Cogment service accessed with gRPC service TrialHooksSP.
  • DATALOG_SERVICE: Cogment service accessed with gRPC service DatalogSP.
  • DATASTORE_SERVICE: Cogment service accessed with gRPC service TrialDatastoreSP.
  • MODEL_REGISTRY_SERVICE: Cogment service accessed with gRPC service ModelRegistrySP.
  • DIRECTORY_SERVICE: Cogment service accessed with gRPC service DirectorySP.
  • OTHER_SERVICE: This is for services not provided by Cogment or that do not have a dedicated service type. The properties registered in the directory should provide the necessary information, but this is left to the users to manage, and no health checking is performed.

ServiceDetails

Message containing registration details of a service.

message ServiceDetails {
ServiceType type = 1;
map<string, string> properties = 2;
}
  • type: The type of service.
  • properties: Properties associated with the service, in a map (property name : property value).

ServiceEndpoint

Message containing endpoint (connection) details for a service.

message ServiceEndpoint {
enum Protocol {
UNKNOWN = 0;
GRPC = 1;
GRPC_SSL = 2;
COGMENT = 3;
}

Protocol protocol = 1;
string host = 2;
uint32 port = 3;
}
  • Protocol: The communication protocol for the service.
    • UNKNOWN: Should not be used (it's a requirement of protobuf enums to have a 0 default value).
    • GRPC: The service connection is using gRPC and does not require encryption (SSL).
    • GRPC_SSL: The service connection is using gRPC and is expecting encryption (SSL).
    • COGMENT: This is a protocol specific to Cogment. The host will provide more details.
  • host: For gRPC, this is a network accessible hostname or IP address. For Cogment, this can only be client, which indicates that the service is not really a service, but a client, and will connect and not be connected to.
  • port: For gRPC, this is the TCP port to connect to. For Cogment, this is not used.

RegisterRequest

Request message for the Register procedure.

message RegisterRequest {
// URL where to connect to the service.
ServiceEndpoint endpoint = 1;
ServiceDetails details = 2;
}
  • endpoint: The connection endpoint of the service to be registered.
  • details: The service details to be registered for the service.

RegisterReply

Reply message for the Register procedure.

message RegisterReply {
enum Status {
UNKNOWN = 0;
OK = 1;
FAILED = 2;
}
Status status = 1;
string error_msg = 2;
uint64 service_id = 3;
string secret = 4;
}
  • Status: The result status.
    • UNKNOWN: Should not be used (it's a requirement of protobuf enums to have a 0 default value).
    • OK: Registration succeeded and the data is valid.
    • FAILED: Registration failed, the data is invalid (more details may be available in the error message).
  • status: The status of the corresponding registration request.
  • error_msg: Any extra details about the failure of the registration (if status == FAILED).
  • service_id: The ID that the service was given when it was registered in the Directory.
  • secret: This is a string that must be provided to deregister the service, and cannot be inquired.

DeregisterRequest

Request message for the Deregister procedure.

message DeregisterRequest {
uint64 service_id = 1;
string secret = 2;
}
  • service_id: The ID of the service.
  • secret: The string that was given when the service was registered.

DeregisterReply

Reply message for the Deregister procedure.

message DeregisterReply {
enum Status {
UNKNOWN = 0;
OK = 1;
FAILED = 2;
}
Status status = 1;
string error_msg = 2;
}
  • Status: The result status.
    • UNKNOWN: Should not be used (it's a requirement of protobuf enums to have a 0 default value).
    • OK: Deregistration succeeded.
    • FAILED: Deregistration failed (more details may be available in the error message).
  • status: The status of the corresponding deregistration request.
  • error_msg: Any extra details about the failure to deregister the service (if status == FAILED).

InquireRequest

Request message for the Inquire procedure. Requires either a service ID, or details of services to find.

message InquireRequest {
oneof inquiry {
uint64 service_id = 1;
ServiceDetails details = 2;
}
}
  • service_id: The ID of the service.
  • details: The details of services to find.

InquireReply

Reply message for the Inquire procedure.

message FullServiceData {
ServiceEndpoint endpoint = 1;
uint64 service_id = 2;
ServiceDetails details = 3;
}

message InquireReply {
FullServiceData data = 1;
}
  • endpoint: The connection endpoint of the service.
  • service_id: The ID of the service.
  • details: The details of the service.

Model Registry API

This API is defined in model_registry.proto. It is implemented by cogment-model-registry.

Service ModelRegistrySP

This gRPC API defines a service able to store models, e.g. neural network architecture, weights and any additional parameters.

service ModelRegistrySP {
rpc CreateOrUpdateModel(CreateOrUpdateModelRequest) returns (CreateOrUpdateModelReply) {}
rpc DeleteModel(DeleteModelRequest) returns (DeleteModelReply) {}
rpc RetrieveModels(RetrieveModelsRequest) returns (RetrieveModelsReply) {}

rpc CreateVersion(stream CreateVersionRequestChunk) returns (CreateVersionReply) {}
rpc RetrieveVersionInfos(RetrieveVersionInfosRequest) returns (RetrieveVersionInfosReply) {}
rpc RetrieveVersionData(RetrieveVersionDataRequest) returns (stream RetrieveVersionDataReplyChunk) {}

rpc Version(VersionRequest) returns (VersionInfo) {}
}

CreateOrUpdateModel()

Create or update a model in the registry having the given unique (within the registry) model_id.

DeleteModel()

Delete a given model and all its iterations from the registry.

RetrieveModels()

Retrieve all or selected models. This procedure supports paginated requests.

CreateVersion()

Create a new iteration of a given model. Because of their potential large size, model iteration data are uploaded as a stream.

RetrieveVersionInfos()

Retrieve the information for all or selected iterations of a given model.

RetrieveVersionData()

Retrieve the data for a specific iteration of the model. Because of their potential large size, data are retrieved as a stream.

CreateOrUpdateModelRequest

Request for ModelRegistrySP.CreateOrUpdateModel()

message CreateOrUpdateModelRequest {
ModelInfo model_info = 1;
}
  • model_info: Defines the unique model identifier within the registry and the user_data to use to create or update the model.

CreateOrUpdateModelReply

Reply for ModelRegistrySP.CreateOrUpdateModel()

message CreateOrUpdateModelReply {}

DeleteModelRequest

Request for ModelRegistrySP.DeleteModel()

message DeleteModelRequest {
string model_id = 1;
}
  • model_ids: Identifier of the model to be deleted.

DeleteModelReply

Reply for ModelRegistrySP.DeleteModel()

message DeleteModelReply {}

RetrieveModelsRequest

Request for ModelRegistrySP.RetrieveModel().

message RetrieveModelsRequest {
repeated string model_ids = 1;
uint32 models_count = 3;
string model_handle = 4;
}
  • model_ids: List of the identifiers of the desired models, leave empty to retrieve all models.
  • models_count: (optional) The desired number of models to be retrieved, leave empty (or set to 0) to retrieve all models matching the request.
  • model_handle: (optional) Leave empty for the initial request, use previously provided RetrieveModelsReply.next_model_handle on the next calls to retrieve the next models.

RetrieveModelsReply

Reply for ModelRegistrySP.RetrieveModel().

message RetrieveModelsReply {
repeated ModelInfo model_infos = 1;
string next_model_handle = 2;
}
  • model_infos: At most RetrieveModelsRequest.models_count models.
  • next_model_handle: Opaque handle to be used to retrieve the next models matching the request.

CreateVersionRequestChunk

Part of the request stream for ModelRegistrySP.CreateVersion().

message CreateVersionRequestChunk {
message Header {
ModelVersionInfo version_info = 1;
}
message Body {
bytes data_chunk = 1;
}
oneof msg {
Header header = 1;
Body body = 2;
}
}

The first message in the stream should define header:

  • version_info: Information regarding the model iteration to create, version_number will be ignored. data_hash and data_size should be computed from the total final data and will be used by the server to validate it.

The following messages should define body:

  • data_chunk: A chunk of the iteration data, all the chunks in the stream will be concatenated.

CreateVersionReply

Reply for ModelRegistrySP.CreateVersion().

message CreateVersionReply {
ModelVersionInfo version_info = 1;
}
  • version_info: The information relative to the created model iteration, in particular the defined version_number.

RetrieveVersionInfosRequest

Request for ModelRegistrySP.RetrieveVersionInfos().

message RetrieveVersionInfosRequest {
string model_id = 1;
repeated int32 version_numbers = 2;
uint32 versions_count = 3;
string version_handle = 4;
}
  • model_id: Identifier of the model we want to retrieve iterations from.
  • version_numbers: List of desired iteration number (or -1 to denote the latest iteration). Leave empty to retrieve all iterations of the given model.
  • versions_count: (optional) The desired number of iterations to be retrieved, leave empty (or set to 0) to retrieve all the iterations matching the request.
  • version_handle: (optional) Leave empty for the initial request, use previously provided RetrieveVersionInfosReply.next_version_handle on the next calls to retrieve the next iterations.

RetrieveVersionInfosReply

Reply for ModelRegistrySP.RetrieveVersionInfos().

message RetrieveVersionInfosReply {
repeated ModelVersionInfo version_infos = 1;
string next_version_handle = 2;
}
  • version_infos: At most RetrieveVersionInfosRequest.versions_count iterations.
  • next_version_handle: Opaque handle to be used to retrieve the next iterations matching the request.

RetrieveVersionDataRequest

Request for ModelRegistrySP.RetrieveVersionData().

message RetrieveVersionDataRequest {
string model_id = 1;
int32 version_number = 2;
}
  • model_id: Identifier of the model we want to retrieve iteration from.
  • version_numbers: Number of the desired iteration.

RetrieveVersionDataReplyChunk

Part of the reply stream of ModelRegistrySP.RetrieveVersionData().

message RetrieveVersionDataReplyChunk {
bytes data_chunk = 1;
}
  • data_chunk: A chunk of the iteration data. All the chunks in the stream need to be concatenated. The completeness and validity of the received data can be checked using the iteration's data_size and data_hash respectively.

ModelInfo

Defines a model identifier and associated user data.

message ModelInfo {
string model_id = 1;
map<string, string> user_data = 2;
}
  • model_id: Unique model identifier.
  • user_data: Key/value user data associated with the model.

ModelVersionInfo

Defines a model iteration and associated user data.

message ModelVersionInfo {
string model_id = 1;
uint32 version_number = 2;
fixed64 creation_timestamp = 3;
bool archived = 4;
string data_hash = 5;
fixed64 data_size = 6;
map<string, string> user_data = 7;
}
  • model_id: Unique identifier, within the registry, of this iteration's model.
  • version_number: Unique iteration number, assigned incrementally at creation by the model registry.
  • creation_timestamp: When the model was created as nanosecond Unix epoch time.
  • archived: If true, this iteration is archived and should be stored in a long-term storage. If false, this iteration is not archived and can be evicted after a while. Non-archived iterations should be used to broadcast an update of the model during training.
  • data_hash: SHA 256 hash (encoded in base64 with standard 64 characters with padding) of this iteration's data, can be used to validate the data and for caching purposes.
  • data_size: Size (in bytes) of this iteration's data.
  • user_data: Key/value user data associated with the model, in particular it can be used to provide information required for the deserialization of the data.

Version()

Called to request iteration data.

Metadata: None

Trial Datastore API

This API is defined in trial_datastore.proto. It is implemented by cogment-trial-datastore.

Service TrialDatastoreSP

This gRPC API defines a service to manage and access data generated by trials.

service TrialDatastoreSP {
rpc RetrieveTrials(RetrieveTrialsRequest) returns (RetrieveTrialsReply) {}
rpc RetrieveSamples(RetrieveSamplesRequest) returns (stream RetrieveSampleReply) {}

rpc AddTrial(AddTrialRequest) returns (AddTrialReply) {}
rpc AddSample(stream AddSampleRequest) returns (AddSamplesReply) {}
rpc DeleteTrials(DeleteTrialsRequest) returns (DeleteTrialsReply) {}

rpc Version(VersionRequest) returns (VersionInfo) {}
}

RetrieveTrials()

Retrieve stored trials matching the given request.

RetrieveSamples()

Retrieve samples from matching trials, trials can be ongoing.

AddTrial()

Add a trial to the activity logger, as soon as a trial is added, samples can be retrieved using RetrieveSamples().

AddSample()

Add samples to a trial in the activity logger as a stream, as soon as a sample is added it is pushed to the matching ongoing RetrieveSamples() requests.

DeleteTrials()

Delete the trials matching the given request, on failure no trial is deleted.

StoredTrialInfo

Defines a information about a stored trial

message StoredTrialInfo {
string trial_id = 1;
TrialState last_state = 2;
string user_id = 3;
uint32 samples_count = 4;
TrialParams params = 5;
}
  • trial_id: Unique identifier of the trial.
  • last_state: Last known trial state.
  • user_id: The id of the user that has started the trial.
  • samples_count: The number samples that are stored for this trial.
  • params: Parameters of the trial.

StoredTrialSample

Represents a sample generated by a trial at a given tick.

message StoredTrialSample {
string user_id = 1;
string trial_id = 2;
uint64 tick_id = 3;
fixed64 timestamp = 4;
TrialState state = 5;
repeated StoredTrialActorSample actor_samples = 6;
repeated bytes payloads = 7;
}
  • user_id: The identifier of the user that has started the trial.
  • trial_id: Unique identifier of the trial.
  • tick_id: Tick of this sample.
  • timestamp: Time of the sample.
  • state: Trial state of the sample.
  • actor_samples: Sample data related to each actor.
  • payloads: Serialized payload for the actors observations, actions, rewards and messages during this sample.

StoredTrialActorSample

Represents a sample generated by an actor in a trial at a given tick, only makes sense as a part of a StoredTrialSample.

Actors are referenced by their index in the trial params TrialParams.actors field. Where it make sense, the actor index can be set to -1 to reference the trial's environment.

Payloads (ie observations data, actions data, reward user data and messages payloads) are grouped in the payloads field of StoredTrialSample and referenced by their index in this field.

message StoredTrialActorSample {
uint32 actor = 1;
optional uint32 observation = 2;
optional uint32 action = 3;
optional float reward = 4;
repeated StoredTrialActorSampleReward received_rewards = 6;
repeated StoredTrialActorSampleReward sent_rewards = 7;
repeated StoredTrialActorSampleMessage received_messages = 8;
repeated StoredTrialActorSampleMessage sent_messages = 9;
}
  • actor: The index of the actor.
  • observation: Observation received by the actor at the current tick, as an index of the observation payload in the parent StoredTrialSample.
  • action: Action performed by the actor at the current tick, as an index of the action payload in the parent StoredTrialSample
  • reward: Aggregated value of the rewards received by the actor for the current tick.
  • received_rewards: List of the rewards received by the actor for the current tick.
  • sent_rewards: List of the rewards sent by the actor for the current tick.
  • received_messages: List of the messages received by the actor between the current tick and the next.
  • sent_messages: List of the messages sent by the actor between the current tick and the next.

StoredTrialActorSampleReward

Represents a reward sent or received by an actor, only makes sense as a part of a StoredTrialActorSample.

message StoredTrialActorSampleReward {
int32 sender = 1;
int32 receiver = 2;
float reward = 4;
float confidence = 5;
optional uint32 user_data = 6;
}
  • sender: Index of the actor, -1 for the environment, ignored for sent rewards.
  • receiver: Index of the actor, -1 for the environment, received for sent rewards.
  • reward: The numerical value of the provided reward.
  • confidence: The weight of this reward in computing the final (aggregated) reward.
  • user_data: User data attached to the reward, as an index of the payload in the parent StoredTrialSample.

StoredTrialActorSampleMessage

Represents a message sent or received by an actor, only makes sense as a part of a StoredTrialActorSample.

message StoredTrialActorSampleMessage {
int32 sender = 1;
int32 receiver = 2;
uint32 payload = 3;
}
  • sender: Index of the actor, -1 for the environment, ignored for sent messages.
  • receiver: Index of the actor, -1 for the environment, received for sent messages.
  • payload: Payload of the message, as an index of the payload in the parent StoredTrialSample.

StoredTrialSampleField

Enums representing the fields available in a StoredTrialSample. Used to filter desired fields.

enum StoredTrialSampleField {
STORED_TRIAL_SAMPLE_FIELD_UNKNOWN = 0;
STORED_TRIAL_SAMPLE_FIELD_OBSERVATION = 1;
STORED_TRIAL_SAMPLE_FIELD_ACTION = 2;
STORED_TRIAL_SAMPLE_FIELD_REWARD = 3;
STORED_TRIAL_SAMPLE_FIELD_RECEIVED_REWARDS = 4;
STORED_TRIAL_SAMPLE_FIELD_SENT_REWARDS = 5;
STORED_TRIAL_SAMPLE_FIELD_RECEIVED_MESSAGES = 6;
STORED_TRIAL_SAMPLE_FIELD_SENT_MESSAGES = 7;
}

RetrieveTrialsRequest

Request for TrialDatastoreSP.RetrieveTrials().

message RetrieveTrialsRequest {
repeated string trial_ids = 1;
uint32 timeout = 2;
uint32 trials_count = 3;
string trial_handle = 4;
}
  • trial_ids: List of desired trial identifiers, if empty all trials are returned.
  • timeout: (optional - in ms) Wait for trials that might be created within this duration.
  • trials_count: (optional) The desired number of trials to be retrieved, leave empty (or set to 0) for no limit.
  • trial_handle: (optional) Leave empty for the initial request, use previously provided RetrieveTrialsReply.next_trial_handle on the next calls to retrieve the next versions.

RetrieveTrialsReply

Reply for TrialDatastoreSP.RetrieveTrials().

message RetrieveTrialsReply {
repeated StoredTrialInfo trial_infos = 1;
string next_trial_handle = 2;
}
  • version_infos: At most RetrieveVersionInfosRequest.versions_count versions.
  • next_version_handle: Opaque handle to be used to retrieve the next versions matching the request.

RetrieveSamplesRequest

Request for TrialDatastoreSP.RetrieveSamples().

message RetrieveSamplesRequest {
repeated string trial_ids = 1;
repeated string actor_names = 2;
repeated string actor_classes = 3;
repeated string actor_implementations = 4;
repeated StoredTrialSampleField selected_sample_fields = 5;
}
  • trial_ids: List of desired trial ids, if empty no data will be returned.
  • actor_names: List of desired actor names, if empty all actor samples will be returned.
  • actor_classes: List of desired actor names, if empty all actor samples will be returned.
  • actor_implementations: List of desired actor classes, if empty all actor samples will be returned.
  • selected_sample_fields: (optional) Which fields of StoredTrialSample.ActorSample should be returned, if empty all fields are returned.

RetrieveSampleReply

Part of the reply stream of TrialDatastoreSP.RetrieveSamples().

message RetrieveSampleReply {
StoredTrialSample trial_sample = 1;
}
  • trial_sample: One trial sample matching the requested trial_ids and filtered according to the desired actors and fields.

AddTrialRequest

Request for TrialDatastoreSP.AddTrial().

message AddTrialRequest {
string user_id = 1;
TrialParams trial_params = 2;
}

AddTrialReply

Reply for TrialDatastoreSP.AddTrial().

message AddTrialReply {}

AddSampleRequest

Part of the request stream of TrialDatastoreSP.AddSample().

message AddSampleRequest {
StoredTrialSample trial_sample = 1;
}
  • trial_sample: One trial sample that should match the parameters of the target trial.

AddSamplesReply

Reply for TrialDatastoreSP.AddSample().

message AddSamplesReply {}

DeleteTrialsRequest

Request for TrialDatastoreSP.DeleteTrials().

message DeleteTrialsRequest {
repeated string trial_ids = 1;
}
  • trial_ids: List of the trial ids to delete, if empty no trial is deleted.

DeleteTrialsReply

Reply for TrialDatastoreSP.DeleteTrials().

message DeleteTrialsReply {}

TrialSamplesFileHeader

Header for the trial samples file that can be exported using cogment client export.

message TrialSamplesFileHeader {
VersionInfo version_info = 1;
fixed64 export_timestamp = 2;
map<string, TrialParams> trial_params = 3;
}
  • version_info: (cogmentAPI.VersionInfo) Version information for the used Cogment CLI.
  • export_timestamp: (fixed64) The wall-clock time in nanoseconds since 00:00:00UTC January 1, 1970 (Unix Epoch time) at export.
  • trial_params: (map<string, cogmentAPI.TrialParams>) Parameters of the trials exported in the file referenced by their ID.

Version()

Called to request version data.

Metadata: None

- - + + \ No newline at end of file diff --git a/docs/reference/javascript.html b/docs/reference/javascript.html index 4bb4e2d..430a10b 100644 --- a/docs/reference/javascript.html +++ b/docs/reference/javascript.html @@ -3,20 +3,23 @@ -Javascript SDK | Cogment +Javascript SDK | Cogment - - - + + + + + +
-

Javascript SDK

Repository Latest release

Installation

The simplest way to install the Javascript SDK is to just install it using npm: +

Javascript SDK

Repository Latest release

Installation

The simplest way to install the Javascript SDK is to just install it using npm: npm install @cogment/cogment-js-sdk

General usage

The spec file

The specifications of a trial type are contained in a spec file and the imported files defined in the spec. This file is typically named cogment.yaml.

For example, an actor class is defined by its required observation space and action space.

These "spaces" are defined by using protobuf message types (from the imported files). Observations and actions will simply be instances of the appropriate type.

Messages and feedback user data don't have a set type, they can be any type as long as the receiver can manage that type. The type is determined by the provided message from the originator.

They will mostly arrive as an instance of cogment.MessageBase and have fields according to their definition in your proto files.

Trial Parameters

The trial parameters can come from the default parameters provided to the Orchestrator on startup, or from the pre-trial hooks (themselves provided to the Orchestrator on startup).

The parameters are mostly indepedent of the spec file (cogment.yaml), except that the active actors listed in the parameters must have their actor class match an actor class defined in the spec file.

Below, when we refer to the trial parameters, we mean the final parameters after any pre-trial hooks.

Compiling the spec file

In order to use the specification found in the spec file within Javascript scripts, it needs to be compiled into Javascript modules. This is done by a tool called "cogment-js-sdk-generate".

CogSettings.js

All API entry points require a cogment specification object. This specification object can be determined from the content of a project's spec file. As such, it should be generated using the cogment-js-sdk-generate tool

npx cogment-js-sdk-generate config.yaml

This will generate both a CogSettings.js file, as well as any required compiled protocol buffer files.

Imports

Whether a script implements an actor or environment, it should import both the cogment module (generic Javascript SDK for Cogment) and the cogSettings module (project specific definitions created from the spec file).

import { cogSettings } from './CogSettings';
import * as cogment from '@cogment/cogment-js-sdk'

class cogment.Context

Class to setup and run all the different aspects of trials.

constructor(userId, cogSettings)

Parameters:

  • userId: string - Identifier for the user of this context.
  • cogSettings: cogment.CogSettings - Settings module associated with trials that will be run (cogSettings namespace).

getController(endpoint)

Method to get a controller instance to manage trials (start, stop, inquire, etc).

Parameters:

  • endpoint: string - URL of the connection to the Orchestrator.

Return: Controller - An instance of the Controller class used to manage trials.

async joinTrial(trialId, endpoint, actorName)

Method for an actor to asynchronously join an existing trial. This task will normally end after the user implementation has exited.

Parameters:

  • trialId: string - The UUID of the trial to join.
  • endpoint: string - URL of the connection to the Orchestrator.
  • actorName: string - Name of the actor joining the trial.

Return: void

registerActor(impl, actorName, actorClass)

Method to register the asynchronous callback function that will run an actor for a trial.

Parameters:

  • impl: async function(ActorSession instance) - Callback function to be registered.
  • actorName: string - Name for the actor implementation being run by the given callback function.
  • actorClass: string - The actor class name that can be run by the given callback function. The possible names are specified in spec file under section actorClasses:name. If the list is empty, this implementation can run any actor class.

Return: void

class Controller

Class containing data and methods to control and manage trials.

async startTrial(trialConfig = undefined, trialIdRequested = undefined)

Method to start a new trial. The parameters of the trial will be set by the pre-trial hooks (registered in cogment.Context), and the hooks will receive the provided trial config.

Parameters:

  • trialConfig: cogment.MessageBase - Configuration for the trial. The type is specified in the spec file under the section trial:config_type. Can be undefined if no configuration is provided. This is provided to the first pre-trial hook.
  • trialIdRequested: string - The trial identifier requested for the new trial. It must be unique among all active trials and a limited set of the latest ended trials (this list of trials can be retrieved with getTrialInfo or watchTrial). If provided, the Orchestrator will try to use this trialId, otherwise, a UUID will be created.

Return: string - The newly started trial ID.

terminateTrial(trialIds, hard = false)

Method to request the end of a trial.

Parameters:

  • trialIds: string[] - The trial ID(s) to request to terminate. There must be at least one ID.
  • hard: boolean - If true, the termination will be forced and not wait for any action or observation. If false, the trial will wait for the next tick, to end gracefully (i.e. wait for the next full set of actions and response observations).

Return: void

async getTrialInfo(trialIds)

Method to get information about a trial.

Parameters:

  • trialIds: string[] - The trial ID(s) from which to request information. If no ID is provided, returns information about all trials. Note that ended trials may only appear for a short time in this list after they have ended.

Return: TrialInfo[] - List of trial information, one per trial. Can be empty if no trial matches.

async watchTrials(trialStateFilters=[])

Generator method to iterate, in real-time, through all trial states matching the filters. When called, it will first iterate over the current states matching the filters, for all trials. Afterwards, it will iterate in real-time over the matching states as they change.

Parameters:

  • trialStateFilters: cogment.TrialState[] - List of enum values from cogment.TrialState for which we are interested in receiving state changes.

Return: generator(TrialInfo instance) - A generator for the state changes that arrive. The TrialInfo received here only contains the trial ID and the state.

async getActors(trialId)

Method to get the list of configured actors in a trial.

Parameters:

  • trialId: string - The trial ID from which to request the list of actors.

Return: ActorInfo[] - List of actors configured in this trial.

async getRemoteVersions()

Method to get the versions from the remote Orchestrator.

Parameters: None

Return: {[key: string]: string} - The key of the object is the name of the component (string), and the value is the version (string).

class Session

Abstract class that manages aspects of a trial. Contains data and methods common to all sessions .

getTrialId()

Method to get the UUID of the trial managed by this session.

Parameters: None

Return: string - UUID of the trial.

getTickId()

Method to get the current tick id of the trial (i.e. time step).

Parameters: None

Return: number - The current tick id.

isTrialOver()

Method to inquire if the current trial has ended.

Parameters: None

Return: boolean - True if the trial has ended, false otherwise.

sendingDone()

Method to notify the Orchestrator that all data for the trial, from this session, has been sent. This can be called only when the session is ending. When starting the session (see ActorSession), if the autoDoneSending parameter is True, this method should not be called, and if the parameter is False, it MUST be called to end the trial properly.

Parameters: None

Return: void

class ActorSession extends Session

start(autoDoneSending=True)

Method to start the actor. This method should be called before any other method in the session.

Parameters:

  • autoDoneSending: boolean - Controls when to notify the Orchestrator that all data has been sent. If True, the session will automatically send the notification after receiving the last observation. If False, the user MUST call sendingDone to end the trial properly.

Return: void

async *eventLoop()

Generator method to iterate over all events (observations, rewards, messages) as they are received. This will block and wait for an event. When this generator exits, the callback function (registered with registerActor) should return to end the trial cleanly. -The generator will exit for various reasons indicating the end of the trial, a loss of communication with the orchestrator, or if the generator is sent "False".

Parameters: None

Return: AsyncGenerator<RecvEvent> - A generator for the events that arrive. The RecvEvent instances received from this generator will not contain actions. When receiving an observation in the event, the this.doAction method is normally used to "reply" (if the event type is EventType.ACTIVE).

doAction(action)

Method to send actions to the environment.

Parameters:

  • action: ActionT - An instance of the action space class specified in the corresponding section actorClasses:action:space of the spec file. If undefined, then no action space is sent (empty content) and the environment will receive a default initialized action space of the appropriate type.

Return: void

sendMessage(payload, to)

Method to send a message related to the current time step (tick id).

Parameters:

  • payload: cogment.MessageBase - The message data to be sent. The class can be any protobuf class. It is the responsibility of the receiving actor to manage the class received.
  • to: string[] - Targets of feedback. Each value could be the name of an actor in the trial, or the name of the environment (from this.envName). Or it could represent a set of actors (with wildcards); A set of actors can be represented with the wildcard character "*" for all actors (of all classes), or "actorClass.*" for all actors of a specific class (the actorClass must match one of the classes listed in the trial parameters). Note that the wildcard does not include the environment.

Return: void

enum cogment.TrialState

Enum representing the various states of trials.

  • UNKNOWN: Should not be used.
  • INITIALIZING: The trial is in the process of starting.
  • PENDING: The trial is waiting for its final parameters, before running.
  • RUNNING: The trial is running.
  • TERMINATING: The trial is in the process of terminating (either a request to terminate has been received or the last observation has been received).
  • ENDED: The trial has ended. Only a set number of ended trials will be kept (configured in the Orchestrator).

For further information on trial lifetime, check the dedicated section.

class TrialInfo

Class enclosing the details of a trial.

trialId: string - The trial ID to which the details pertain.

state: cogment.TrialState - The current state of the trial.

envName: string - The name of the environment running the trial.

tickId: number - The time step that the information relates to. Only provided from a call to getTrialInfo.

duration: number - The time (in nanoseconds) that the trial has run. Only provided from a call to getTrialInfo.

class RecvEvent

Class representing a received event (for environments and actors). It can contain any combination of data according to the receiver needs, or even be empty, but it will always have a type.

type: EventType - Type of event the enclosed data represents.

observation: ObservationT - Observation data. This can only be received by actors. undefined if not present.

actions: ActionT - Action data from actors. This can only be received by the environment. The list is empty if not present.

rewards: Reward[] - Reward values and data. This can only be received by actors. The list is empty if not present.

messages: MessageBase[] - Message data. The list is empty if not present.

enum cogment.EventType

Enum representing the type of an event.

  • EventType.NONE: Empty event. This kind of event should never be received.

  • EventType.ACTIVE: Normal event from an active trial. Most events will be of this type.

  • EventType.ENDING: Events from a trial in the process of ending. For the environment, this means that these events contain the last actions from the actors, and the trial is awaiting a final observation. For the actors, this means that the trial is ending and no action can/need to be sent in response. Note that because of network timing, there may be ACTIVE events (e.g. rewards or messages) arriving after some ENDING events, but the trial is ending regardless.

  • EventType.FINAL: Final event for the trial. This does not contain data. The event loop will exit after this event is delivered. This event can be ignored if nothing needs to be done before exiting the loop.

For further information on trial lifetime, check the dedicated section.

type ObservationT

Type containing the details of an actor's observation. This will be different depending on what the ActionSpace defined in your spec file contains

type ActionT

Type containing the details of an action from an actor. This will be different depending on what the ActionSpace defined in your spec file contains

class MessageBase

Base Class of all messages, this will contain different fields depending on what fields are in the specific message you are receiving (defined in proto files)

type Reward

type containing the details of a received reward.

tickId: number - The tick id (time step) for which the reward should be applied.

receiverName: string - Name of the receiver for the reward (the name of an actor, or wildcard string).

value: float - Value of the reward (aggregated from the sources)

sources: IRewardSource[] - List of sources that gave this reward

interface IRewardSource

senderName: string - Name of the reward sender;

value: number - Value of the reward;

confidence: number - Confidence of this reward;

userData: google.protobuf.IAny - Extra data;

- - +The generator will exit for various reasons indicating the end of the trial, a loss of communication with the orchestrator, or if the generator is sent "False".

Parameters: None

Return: AsyncGenerator<RecvEvent> - A generator for the events that arrive. The RecvEvent instances received from this generator will not contain actions. When receiving an observation in the event, the this.doAction method is normally used to "reply" (if the event type is EventType.ACTIVE).

doAction(action)

Method to send actions to the environment.

Parameters:

  • action: ActionT - An instance of the action space class specified in the corresponding section actorClasses:action:space of the spec file. If undefined, then no action space is sent (empty content) and the environment will receive a default initialized action space of the appropriate type.

Return: void

sendMessage(payload, to)

Method to send a message related to the current time step (tick id).

Parameters:

  • payload: cogment.MessageBase - The message data to be sent. The class can be any protobuf class. It is the responsibility of the receiving actor to manage the class received.
  • to: string[] - Targets of feedback. Each value could be the name of an actor in the trial, or the name of the environment (from this.envName). Or it could represent a set of actors (with wildcards); A set of actors can be represented with the wildcard character "*" for all actors (of all classes), or "actorClass.*" for all actors of a specific class (the actorClass must match one of the classes listed in the trial parameters). Note that the wildcard does not include the environment.

Return: void

enum cogment.TrialState

Enum representing the various states of trials.

  • UNKNOWN: Should not be used.
  • INITIALIZING: The trial is in the process of starting.
  • PENDING: The trial is waiting for its final parameters, before running.
  • RUNNING: The trial is running.
  • TERMINATING: The trial is in the process of terminating (either a request to terminate has been received or the last observation has been received).
  • ENDED: The trial has ended. Only a set number of ended trials will be kept (configured in the Orchestrator).

For further information on trial lifetime, check the dedicated section.

class TrialInfo

Class enclosing the details of a trial.

trialId: string - The trial ID to which the details pertain.

state: cogment.TrialState - The current state of the trial.

envName: string - The name of the environment running the trial.

tickId: number - The time step that the information relates to. Only provided from a call to getTrialInfo.

duration: number - The time (in nanoseconds) that the trial has run. Only provided from a call to getTrialInfo.

class RecvEvent

Class representing a received event (for environments and actors). It can contain any combination of data according to the receiver needs, or even be empty, but it will always have a type.

type: EventType - Type of event the enclosed data represents.

observation: ObservationT - Observation data. This can only be received by actors. undefined if not present.

actions: ActionT - Action data from actors. This can only be received by the environment. The list is empty if not present.

rewards: Reward[] - Reward values and data. This can only be received by actors. The list is empty if not present.

messages: MessageBase[] - Message data. The list is empty if not present.

enum cogment.EventType

Enum representing the type of an event.

  • EventType.NONE: Empty event. This kind of event should never be received.

  • EventType.ACTIVE: Normal event from an active trial. Most events will be of this type.

  • EventType.ENDING: Events from a trial in the process of ending. For the environment, this means that these events contain the last actions from the actors, and the trial is awaiting a final observation. For the actors, this means that the trial is ending and no action can/need to be sent in response. Note that because of network timing, there may be ACTIVE events (e.g. rewards or messages) arriving after some ENDING events, but the trial is ending regardless.

  • EventType.FINAL: Final event for the trial. This does not contain data. The event loop will exit after this event is delivered. This event can be ignored if nothing needs to be done before exiting the loop.

For further information on trial lifetime, check the dedicated section.

type ObservationT

Type containing the details of an actor's observation. This will be different depending on what the ActionSpace defined in your spec file contains

type ActionT

Type containing the details of an action from an actor. This will be different depending on what the ActionSpace defined in your spec file contains

class MessageBase

Base Class of all messages, this will contain different fields depending on what fields are in the specific message you are receiving (defined in proto files)

type Reward

type containing the details of a received reward.

tickId: number - The tick id (time step) for which the reward should be applied.

receiverName: string - Name of the receiver for the reward (the name of an actor, or wildcard string).

value: float - Value of the reward (aggregated from the sources)

sources: IRewardSource[] - List of sources that gave this reward

interface IRewardSource

senderName: string - Name of the reward sender;

value: number - Value of the reward;

confidence: number - Confidence of this reward;

userData: google.protobuf.IAny - Extra data;

+ + \ No newline at end of file diff --git a/docs/reference/parameters.html b/docs/reference/parameters.html index ed1bd7d..f181056 100644 --- a/docs/reference/parameters.html +++ b/docs/reference/parameters.html @@ -3,15 +3,18 @@ -Trial Parameters | Cogment +Trial Parameters | Cogment - - - + + + + + +
-

Trial Parameters

The trial parameters are a set of parameters that define the details of a trial. +

Trial Parameters

The trial parameters are a set of parameters that define the details of a trial. They may be generated from the default parameters provided to the Orchestrator (see Parameter File), and updated by the pre-trial hooks (see TrialParameters and register_pre_trial_hook). Or they can be provided whole to the trial start call (see start_trial).

In the parameters, are optional config messages for the trial, environment and actors. The trial config is only used by the pre-trial hooks, whereas the other configs are sent to their respective destination at the start of the trial. @@ -40,7 +43,7 @@ Which properties are acceptable depends on the directory (and how the services are registered in the directory).

The query in the discovery endpoint must follow these guidelines:

  • Entries are separated by the ampersand (&)
  • Property name and associated value are separated by an equal sign (=)
  • Property names and values must be composed of only these characters: A-Z, a-z, 0-9, underscore (_), dash (-), dot (.)
  • Property values are optional
  • Property names starting with a double underscore (__) are reserved. E.g __authentication-token

E.g.:

cogment://discover/actor?__implementation=d3qn
cogment://discover/environment?__implementation=fqdn3&type=fast-2x&ping=low
cogment://discover/datalog?name=high&open&color=green_blue
Reserved query properties

Some endpoint query properties are reserved for Cogment use. They may be interpreted by other services than the directory, and thus may not correspond to directory properties that participate in service discovery. Some of these names may not be used as properties to inquire from (or register in) the directory. They may be used for special purposes that differ for each name.

  • __actor_class: This is a property name implicitly used by Cogment. It is registered in the Directory for services that were implicitly registered by Cogment or a Cogment SDK. It is also used by Cogment to inquire for context discovery endpoints.
  • __authentication-token: This query property is not a directory property. It is used to provide authentication to the directory. The value (and need) depends on the directory implementation and/or how the registration of the service is made in the directory. This is not registered as a property in the Directory.
  • __id: This query property is not a directory property. It is used to provide a service ID for inquiry to the directory for a specific service. This is not registered as a property in the Directory.
  • __implementation: This is a property name implicitly used by Cogment. It is registered in the Directory for services that were implicitly registered by Cogment or a Cogment SDK. It is also used by Cogment to inquire for context discovery endpoints.
- - + + \ No newline at end of file diff --git a/docs/reference/python-enterprise/installation.html b/docs/reference/python-enterprise/installation.html index fb4ce1b..a5fc857 100644 --- a/docs/reference/python-enterprise/installation.html +++ b/docs/reference/python-enterprise/installation.html @@ -3,16 +3,19 @@ -Installation | Cogment +Installation | Cogment - - - + + + + + + - - +
+ + \ No newline at end of file diff --git a/docs/reference/python-enterprise/runner.html b/docs/reference/python-enterprise/runner.html index 1c72fa8..22161a2 100644 --- a/docs/reference/python-enterprise/runner.html +++ b/docs/reference/python-enterprise/runner.html @@ -3,15 +3,18 @@ -Runner | Cogment +Runner | Cogment - - - + + + + + +
-

Runner

Cogment Enterprise

This is part of the Cogment Enterprise, AI Redefined's commercial offering.

General usage

asyncio

The use of this module requires Cogment Python SDK >= 2.8.0. It uses Python's asyncio library and as such should be run in an asyncio.Task. +

Runner

Cogment Enterprise

This is part of the Cogment Enterprise, AI Redefined's commercial offering.

General usage

asyncio

The use of this module requires Cogment Python SDK >= 2.8.0. It uses Python's asyncio library and as such should be run in an asyncio.Task. This documentation assumes some familiarity with the asyncio library of Python (see Python documentation).

E.g.

import asyncio

asyncio.run(MyMainFunction())

Logging

This module uses the cogment.enterprise logger, and the default log level is INFO. E.g. to change the log level to WARNING:

import cogment_enterprise
import logging

logging.getLogger("cogment.enterprise").setLevel(logging.WARNING)

Or set the environment variable COGMENT_ENTERPRISE_LOG_LEVEL to one of the values: off, error, warning, info, debug, trace. The logging works the same as Cogment Python SDK logging (see Cogment Python SDK documentation).

Trial Specifications

This module is designed to work without any trial specifications (i.e. cog_settings), but is easier to use if the specification are available.

If the specifications are not provided, some internal object deserializations will not happen (e.g. sample.observation), and special serialized versions will have to be used (e.g. sample.observation_serialized). Helper functions are provided for deserializing the various defined objects in the specifications (see below).

Objects normally received as google.protobuf.Any will still be deserialized to such an object as it does not depend on the specification of the trial.

Top-level import

The main module of the Runner SDK is cogment_enterprise.runner, and most enterprise scripts will start with a cogment_enterprise.runner.TrialRunner.

Utilities and Constants

cogment_enterprise.runner.BATCH_ID_PROPERTY

This is the name of the trial property where the batch ID is stored. @@ -42,7 +45,7 @@ It is an asyncio coroutine.

e.g.:

async def my_sampler_callback(sample, trial_parameters, model_registry):
# ... Train model

Parameters Received:

  • sample: cogment.DatastoreSample instance - Trial sample received.
  • trial_parameters: cogment.TrialParameters instance - Parameters of the trial from which the sample came from.
  • model_registry: cogment.ModelRegistry instance - Common model registry for the whole batch being trained. The TrialRunner argument model_registry_endpoint is used to retrieve this model registry.

Expected Return: None or bool - If None or True, the training will continue normally. If a bool and False, the sampler callback will stop being called, and the BatchTrainer will stop.

In case of exceptions: If the callback raises an exception, the BatchTrainer will stop at the next sample.

Trial Callback

This function is passed to the TrialRunner.run_simple_trial_trainer method and will be called for each trial of the batch. This is asynchronous with the actual running of the trials and uses the Cogment Datastore to retrieve the trial data and samples. It is an asyncio coroutine.

e.g.:

async def my_trial_callback(session):
async for sample in session.all_samples():
# ... process sample

Parameters Received:

  • session: TrainerTrialSession instance - The session for the trial.

Expected Return: None or bool - If None or True, continue processing the batch. If a bool and False, stop the BatchTrainer.

In case of exceptions: If the callback raises an exception, the BatchTrainer will stop immediately.

- - + + \ No newline at end of file diff --git a/docs/reference/python.html b/docs/reference/python.html index 774310b..ab3b30b 100644 --- a/docs/reference/python.html +++ b/docs/reference/python.html @@ -3,15 +3,18 @@ -Python SDK | Cogment +Python SDK | Cogment - - - + + + + + +
-

Python SDK

Repository Latest release

Installation

The simplest way to install the python SDK is to just install it using pip: pip install cogment.

To install the generator (for cog_settings.py) it is done similarly with pip: pip install cogment[generate]. If both are needed, installing the generator will install the Python SDK.

The basic requirement is Python 3.7.

General usage

asyncio

The Python SDK is designed to run concurrently and asynchronously using the Python asyncio library. As such, it should be run in an asyncio.Task.

E.g.

asyncio.run(MyMainFunction())

Logging

The Python SDK uses the cogment.sdk logger, and the default log level is INFO. E.g. to change the log level to WARNING:

import cogment
import logging

logging.getLogger("cogment.sdk").setLevel(logging.WARNING)

Or set the environment variable COGMENT_LOG_LEVEL to one of the values: off, error, warning, info, debug, trace (which match the respective Python levels logging.CRITICAL, logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG). +

Python SDK

Repository Latest release

Installation

The simplest way to install the python SDK is to just install it using pip: pip install cogment.

To install the generator (for cog_settings.py) it is done similarly with pip: pip install cogment[generate]. If both are needed, installing the generator will install the Python SDK.

The basic requirement is Python 3.7.

General usage

asyncio

The Python SDK is designed to run concurrently and asynchronously using the Python asyncio library. As such, it should be run in an asyncio.Task.

E.g.

asyncio.run(MyMainFunction())

Logging

The Python SDK uses the cogment.sdk logger, and the default log level is INFO. E.g. to change the log level to WARNING:

import cogment
import logging

logging.getLogger("cogment.sdk").setLevel(logging.WARNING)

Or set the environment variable COGMENT_LOG_LEVEL to one of the values: off, error, warning, info, debug, trace (which match the respective Python levels logging.CRITICAL, logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG). Since the Cogment Python SDK does not output any critical logs, the logging.CRITICAL level effectively turns logging off. The trace level does not match a standard Python logging level and is mostly for internal use with a level lower than logging.DEBUG.

The Cogment logger does not define a handler, and the handler management is left to the application (as is standard for a library in Python). Thus the Python logging.lastResort handler will be used if no explicit handler is defined by the application (i.e. only warnings and errors will be output to stderr, with no formatting). @@ -44,7 +47,7 @@ A sample starts and ends with the arrival of new observations from the environment. The last sample will end after all components have acknowledged the end of the trial (the state of that sample will then be TrialState.ENDED).

Note that some of the data may not be available (None) if it was excluded from the sample (see datalog parameters TrialParameters.datalog_exclude_fields).

out_of_sync: bool - False if it is a normal/full sample. True if it is an out-of-sync/partial sample. Out-of-sync samples do not follow the normal time step progression of the trial, they represent isolated data (typically a reward) for steps that have already past. Out-of-sync samples will be produced according to the trial parameter nb_buffered_ticks.

tick_id: int - The time step that the sample data relates to.

state: cogment.TrialState - The state of the trial at the end of the sample period. Undefined for out-of-sync samples.

timestamp: int - Unix style Epoch timestamp in nanoseconds (time since 00:00:00 UTC Jan 1, 1970) at the beginning of the sample period. For out-of-sync samples, this is the time the data in the sample was received.

events: str - Description of special events that happened during the time frame of the sample. For out-of-sync samples, it may contain an explanation of the data.

__init__(self, params)

Parameters:

  • params: LogParams instance - The parameters of the trial.

get_serialization_type(self)

Returns the type of serial data produced by serialize and accepted by deserialize. The type represents an ID dependent on DatalogSample defined in the low level gRPC API.

Parameters: None

Return: int - The type of the serialization string data. This is the type of string that is returned by serialize, and the only type accepted by deserialize; it is undefined behavior to try to deserialize the wrong type of data. This value is strictly larger than 1.

serialize(self)

Returns a binary string equivalent of the sample.

Parameters: None

Return: str - Serialized sample.

deserialize(self, raw_string)

Takes a serialized sample string and sets the LogSample instance.

Parameters:

  • raw_string: str - Binary string representing a serialized LogSample of the same type.

all_actor_names(self)

Generator method to iterate over all actors in the trial. This information can also be retrieved from the parameters of the trial.

Parameters: None

Return: generator(str) - A generator for the names of the actors in the trial.

get_action(self, actor)

Retrieves the action from the actor in the sample.

Parameters:

  • actor: str or int - The name or index of the actor for which to retrieve the action. The number, index and name of actors can be retrieved from the parameters of the trial.

Return: RecvAction instance - The action of the actor in the sample.

get_observation(self, actor)

Retrieve the observation destined for the actor in the sample. Can be None (specifically for out-of-sync samples).

Parameters:

  • actor: str or int - The name or index of the actor for which to retrieve the observation. The number, index and name of actors can be retrieved from the parameters of the trial.

Return: RecvObservation instance - The observation of the actor in the sample. Can be None (specifically for out-of-sync samples).

all_rewards(self)

Generator method to iterate over all the rewards in the sample.

Parameters: None

Return: generator(RecvReward instance) - A generator for the rewards in the sample.

all_messages(self)

Generator method to iterate over all the messages in the sample.

Parameters: None

Return: generator(RecvMessage instance) - A generator for the messages in the sample.

class ModelInfo

Class containing information about a model name stored in the ModelRegistry.

name: str - The model name.

properties: dict{str:str} - Custom information associated with the model name (not specific to any iteration).

class ModelIterationInfo

Class containing information specific to a model iteration stored in the Model Registry.

model_name: str - The name of the model.

iteration: int - The iteration number.

timestamp: int - When the iteration was stored in the Model Registry. Unix epoch time in nanoseconds.

hash: str - SHA 256 hash (encoded in base64 with standard 64 characters with padding) of the iteration's data.

size: int - Size (in bytes) of the iteration's data.

stored: bool - Whether the model is stored, as opposed to just being published (and therefore transient).

properties: dict{str:str} - Custom information associated with the iteration.

class LatestModel

Class making the latest model iteration, from the Model Registry, available on-demand.

name: str - The name of the model.

async get(self)

Method to return the latest iteration that has been downloaded in the background. This method may wait for the first iteration to be available. Once an iteration is available, this method will not be blocking.

Subsequent calls to this method may return different results according to the availability of new data.

Parameters: None

Return: tuple(data, ModelIterationInfo instance) - The data can either be a bytes string or a user object depending on is_deserialized(). The second tuple item is a ModelIterationInfo instance containing the information of the iteration represented by the data.

is_deserialized(self)

Method to check if the model iteration is deserialized automatically.

Parameters: None

Return: bool - True if the model is deserialized automatically in the background, in which case the data (returned by get) is a user object. This user object is derived by calling deserialize_func (parameter of ModelRegistry.track_latest_model) with the raw bytes from the Model Registry. False if the data (returned by get) is the raw bytes retrieved from the Model Registry.

is_available(self)

Method to check if an iteration is available.

Parameters: None

Returns: bool - True if an iteration is available, an thus get will not block. False otherwise.

async wait_for_available(self)

Method to wait for an iteration to be available.

Parameters: None

Returns: None

async wait_for_newer(self, iteration)

Method to wait for a newer iteration to be available. Once this method returns, the newer iteration can be retrieved with get.

Parameters:

  • iteration: int - Strict lower bound for awaited model iteration. I.e. the method will wait for a model iteration that is newer, and not equal, to this.

Returns: None

class cogment.DatastoreFields(enum.Enum)

Enum representing the various data in a DatastoreActorData instance

  • UNKNOWN: Should not be used.
  • OBSERVATION: The observation.
  • ACTION: The action.
  • REWARD: The aggregated reward.
  • RECEIVED_REWARDS: All the individual rewards received by the actor (all_received_rewards method)
  • SENT_REWARDS: All the individual rewards sent by the actor (all_sent_rewards method)
  • RECEIVED_MESSAGES: All the messages received by the actor (all_received_messages method)
  • SENT_MESSAGES: All the messages sent by the actor (all_received_messages method)

class DatastoreTrialInfo

Class containing the information of a trial stored in the Datastore.

trial_id: str - The trial id for this trial.

user_id: str - The user ID for the trial (provided on trial start).

trial_state: cogment.TrialState instance - The last (or current) state of the trial. This will change over time if not TrialState.ENDED.

sample_count: int - The number of samples currently stored for this trial. This will change over time if the trial state is not TrialState.ENDED.

parameters: cogment.TrialParameters instance - The parameters for the trial.

has_specs(self)

Parameters: None

Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs.

class DatastoreSample

Class containing the data of a trial sample (typically representing all the data during a trial tick).

trial_id: str - The id of the trial the data in the sample relates to.

trial_state: cogment.TrialState instance - The state of the trial at the end of the sample period. Note that the last sample (when trial_state is TrialState.ENDED) may have None data (e.g. observation, action, etc) if the trial ended on an error or was hard terminated.

tick_id: int - The step/tick at which the data in the sample was obtained.

timestamp: int - Unix style Epoch timestamp of the start of the step/tick (in nanoseconds since 00:00:00 UTC Jan 1, 1970).

actors_data: dict{str:DatastoreActorData instance} - Dictionary of all actors data included in the sample, indexed by actor name.

has_specs(self)

Parameters: None

Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs.

class DatastoreActorData

Class containing the data related to an actor in a sample.

name: str - Name of the actor.

observation: protobuf class instance - Observation received by the actor. The class of the observation is defined as observation space for the actor class. This is specified in section actor_classes:observation:space in the spec file for the appropriate actor class. Can be None if there is no data.

observation_serialized: bytes - Observation received by the actor in serialized (class independent) form. This can be retrieved even without specs (see has_specs()). Can be None if there is no data.

action: protobuf class instance - Action from the actor. The class of the action is defined as action space for the specific actor in the section actor_classes:action:space in the spec file for the appropriate actor class. Can be None if there is no data.

action_serialized: bytes - Action from the actor in serialized (class independent) form. This can be retrieved even without specs (see has_specs()). Can be None if there is no data.

reward: float - The aggregated reward received by the actor in the sample.

has_specs(self)

Parameters: None

Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs.

all_received_rewards(self)

Generator method to iterate over all the individual rewards received by the actor in the sample. The aggregated reward is calculated from these.

Parameters: None

Return: generator(DatastoreReward instance) - A generator for the individual actor rewards received.

all_sent_rewards(self)

Generator method to iterate over all the individual rewards sent by the actor in the sample.

Parameters: None

Return: generator(DatastoreReward instance) - A generator for the individual actor rewards sent.

all_received_messages(self)

Generator method to iterate over all the messages received by the actor in the sample.

Parameters: None

Return: generator(DatastoreMessage instance) - A generator for the messages received.

all_sent_messages(self)

Generator method to iterate over all the messages sent by the actor in the sample.

Parameters: None

Return: generator(DatastoreMessage instance) - A generator for the messages sent.

class DatastoreReward

Class containing the data for an individual reward in the Datastore.

value: float - Value of the reward.

confidence: float - Confidence level of the reward value.

sender: str - Name of the sender of the reward.

receiver: str - Name of the receiver of the reward. The string could contain wildcard characters to represent multiple receivers intended by the sender.

user_data: google.protobuf.Any instance - Data for a user-specific reward format. Can be None if no specific data was provided. The class enclosed in google.protobuf.Any is of the type set by the sender; it is the responsibility of the receiver to manage the data received (i.e. determine the type and unpack the data).

class DatastoreMessage

Class containing the data of a message in the Datastore.

sender: str - Name of the sender of the message.

receiver: str - Name of the receiver of the message. The string could contain wildcard characters to represent multiple receivers intended by the sender.

payload: google.protobuf.Any instance - Data for a received message. The class enclosed in google.protobuf.Any is of the type set by the sender; It is the responsibility of the receiver to manage the data received (i.e. determine the type and unpack the data). Can be None if there is no data.

- - + + \ No newline at end of file diff --git a/index.html b/index.html index 1c20b8e..4567870 100644 --- a/index.html +++ b/index.html @@ -3,16 +3,19 @@ -Cogment | Cogment +Cogment | Cogment - - - + + + + + +
-

Build, train, and operate AI agents in simulated or real environments shared with humans.

Cogment is the first open source platform designed to address the challenges of continuously training humans and AI together.

Why Cogment

Continuously train AIs & humans together

Continuously train AIs &amp; humans together

  • Less data required
  • Real-time adaptation
  • Faster training
  • Fostering of trust

Orchestrate intelligence ecosystems

Orchestrate intelligence ecosystems

  • Best of human & AI capabilities
  • Human supervision when it matters
  • Hybrid AI: Compliance & high performance
  • Modular approach: reduce compute usage & faciliate validation

Iterate smoothly from sim to real

Iterate smoothly from sim to real

  • Safe and simple design and training in simulation
  • Progressive deployment to real environment
  • Real environments, digital twins, numerical simulations, etc.

Compatible with your existing tools

logo for PyTorch
logo for Open AI Gym
logo for Petting Zoo
logo for Tensorflow

They're already using Cogment

logo for Thales
logo for The Chandar Research Lab at MILA
logo for The Intelligent Robot Learning Laboratory at University of Alberta
logo for Alberta Machine Intelligence Institute

Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source Cogment platform for environments following the OpenAI Gym mold, making it easy to get started.

Simply clone the repo and start training.

Atari Double Dunk - From Petting ZooGo - From Petting ZooAtari Montezuma's Revenge - From Open AI GymLunar Lander - From Open AI Gym

Key features

Multi-actor

Allow multiple agents and multiple human users (all "actors") to exist, train, and work together within the same environment, interacting with one another and their environment. They can be part of collaborative or competitive setups, with heterogeneous roles.

Multi-method

Train agents in various ways using Reinforcement learning (on policy, off policy, Q learning, etc.), Imitation Learning (behavior cloning), Curriculum Learning…

Tech stack agnostic

Develop tech-heterogeneous components working together regardless of the tech stacks used to develop them. Use Pytorch, Keras, or Tensorflow frameworks, with Unity, OpenAI Gym, Petting Zoo or any environments or digital twin simulations.

Multi-experience learning

Run multiple instances of the same agent in multiple and distributed trials / experiences. The accumulated data can be used in a centralized way to contribute to the training of a single agent, or in a decentralized way to train a population of specialized agents.

Implementation swapping

Swap actors in and out from one implementation of an agent to another, from a human user to another, or from a human user to a trained or untrained agent, and vice-versa. Bootstrap training with pseudo-humans or rule-based agents.

Multi-source and retroactive rewards

Multiple Reinforcement Learning (RL) agents can use any number of reward sources; environment (real or simulated), users, other agents. Delays in the evaluation are supported while maintaining live training capabilities.

Hybrid AI

Mix different kind of agents: expert systems, doctrines, search, planners, neural networks…

Optimized for minimal discontinuity between development and deployment

There is virtually no difference between developed and productionized versions of a Cogment project. Develop in an iterative way, with any part of a project being live-developed so iteration cycles between simulated and real environments can happen as quickly as possible.

- - +

Build, train, and operate AI agents in simulated or real environments shared with humans.

Cogment is the first open source platform designed to address the challenges of continuously training humans and AI together.

Why Cogment

Continuously train AIs & humans together

Continuously train AIs &amp; humans together

  • Less data required
  • Real-time adaptation
  • Faster training
  • Fostering of trust

Orchestrate intelligence ecosystems

Orchestrate intelligence ecosystems

  • Best of human & AI capabilities
  • Human supervision when it matters
  • Hybrid AI: Compliance & high performance
  • Modular approach: reduce compute usage & faciliate validation

Iterate smoothly from sim to real

Iterate smoothly from sim to real

  • Safe and simple design and training in simulation
  • Progressive deployment to real environment
  • Real environments, digital twins, numerical simulations, etc.

Compatible with your existing tools

logo for PyTorch
logo for Open AI Gym
logo for Petting Zoo
logo for Tensorflow

They're already using Cogment

logo for Thales
logo for The Chandar Research Lab at MILA
logo for The Intelligent Robot Learning Laboratory at University of Alberta
logo for Alberta Machine Intelligence Institute

Cogment Verse is a SDK helping researchers and developers in the fields of human-in-the-loop learning (HILL) and multi-agent reinforcement learning (MARL) train and validate their agents at scale. Cogment Verse instantiates the open-source Cogment platform for environments following the OpenAI Gym mold, making it easy to get started.

Simply clone the repo and start training.

Atari Double Dunk - From Petting ZooGo - From Petting ZooAtari Montezuma's Revenge - From Open AI GymLunar Lander - From Open AI Gym

Key features

Multi-actor

Allow multiple agents and multiple human users (all "actors") to exist, train, and work together within the same environment, interacting with one another and their environment. They can be part of collaborative or competitive setups, with heterogeneous roles.

Multi-method

Train agents in various ways using Reinforcement learning (on policy, off policy, Q learning, etc.), Imitation Learning (behavior cloning), Curriculum Learning…

Tech stack agnostic

Develop tech-heterogeneous components working together regardless of the tech stacks used to develop them. Use Pytorch, Keras, or Tensorflow frameworks, with Unity, OpenAI Gym, Petting Zoo or any environments or digital twin simulations.

Multi-experience learning

Run multiple instances of the same agent in multiple and distributed trials / experiences. The accumulated data can be used in a centralized way to contribute to the training of a single agent, or in a decentralized way to train a population of specialized agents.

Implementation swapping

Swap actors in and out from one implementation of an agent to another, from a human user to another, or from a human user to a trained or untrained agent, and vice-versa. Bootstrap training with pseudo-humans or rule-based agents.

Multi-source and retroactive rewards

Multiple Reinforcement Learning (RL) agents can use any number of reward sources; environment (real or simulated), users, other agents. Delays in the evaluation are supported while maintaining live training capabilities.

Hybrid AI

Mix different kind of agents: expert systems, doctrines, search, planners, neural networks…

Optimized for minimal discontinuity between development and deployment

There is virtually no difference between developed and productionized versions of a Cogment project. Develop in an iterative way, with any part of a project being live-developed so iteration cycles between simulated and real environments can happen as quickly as possible.

+ + \ No newline at end of file diff --git a/opensearch.xml b/opensearch.xml new file mode 100644 index 0000000..389bb65 --- /dev/null +++ b/opensearch.xml @@ -0,0 +1,11 @@ + + + Cogment + Search Cogment + UTF-8 + https://cogment.ai/img/favicon.png + + + https://cogment.ai/ + \ No newline at end of file diff --git a/search-index.json b/search-index.json deleted file mode 100644 index f67fa88..0000000 --- a/search-index.json +++ /dev/null @@ -1 +0,0 @@ -[{"documents":[{"i":1,"t":"Community","u":"/docs/community-channels","b":["Documentation"]},{"i":11,"t":"Core Concepts","u":"/docs/guide/core-concepts","b":["Documentation","Guide"]},{"i":47,"t":"Development guide","u":"/docs/guide/development-guide","b":["Documentation","Guide"]},{"i":89,"t":"Fully configure a trial from a Controller","u":"/docs/guide/implementation-recipes/configure-trial-from-controller","b":["Documentation","Guide","Implementation Recipes"]},{"i":91,"t":"Migrate from Cogment v1 to v2","u":"/docs/guide/implementation-recipes/v2-migration-guide","b":["Documentation","Guide","Implementation Recipes"]},{"i":121,"t":"Actors: Players of RPS","u":"/docs/guide/tutorial/actors-in-cogment","b":["Documentation","Guide","Tutorial"]},{"i":139,"t":"Improve Operational Efficiency with a Cogment Directory for Service Discovery","u":"/docs/guide/tutorial/advanced-tutorials/directory","b":["Documentation","Guide","Tutorial","Advanced Tutorials"]},{"i":153,"t":"Add a Human Player in the Loop","u":"/docs/guide/tutorial/advanced-tutorials/human-player","b":["Documentation","Guide","Tutorial","Advanced Tutorials"]},{"i":159,"t":"Add a Web Client for the Human Player","u":"/docs/guide/tutorial/advanced-tutorials/web-client","b":["Documentation","Guide","Tutorial","Advanced Tutorials"]},{"i":185,"t":"Making Decisions with Feedback","u":"/docs/guide/tutorial/decision-making","b":["Documentation","Guide","Tutorial"]},{"i":195,"t":"The Environment: A Game of RPS","u":"/docs/guide/tutorial/environment-in-cogment","b":["Documentation","Guide","Tutorial"]},{"i":217,"t":"Set Up the Code & Test a Trial","u":"/docs/guide/tutorial/setup","b":["Documentation","Guide","Tutorial"]},{"i":236,"t":"Apache License","u":"/docs/license","b":["Documentation"]},{"i":240,"t":"Directory Client","u":"/docs/reference/cli/directory/directory-client","b":["Documentation","Reference","CLI","Directory"]},{"i":270,"t":"Directory Server","u":"/docs/reference/cli/directory/directory-server","b":["Documentation","Reference","CLI","Directory"]},{"i":299,"t":"Launch","u":"/docs/reference/cli/launch","b":["Documentation","Reference","CLI"]},{"i":311,"t":"Model Registry","u":"/docs/reference/cli/model-registry","b":["Documentation","Reference","CLI"]},{"i":353,"t":"Orchestrator","u":"/docs/reference/cli/orchestrator","b":["Documentation","Reference","CLI"]},{"i":395,"t":"Status","u":"/docs/reference/cli/status","b":["Documentation","Reference","CLI"]},{"i":410,"t":"Trial Datastore Client","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","b":["Documentation","Reference","CLI","Trial Datastore"]},{"i":422,"t":"Trial Datastore Server","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","b":["Documentation","Reference","CLI","Trial Datastore"]},{"i":446,"t":"Web Proxy","u":"/docs/reference/cli/web-proxy","b":["Documentation","Reference","CLI"]},{"i":481,"t":"Cogment 2.0","u":"/docs/reference/cogment-v2-changes","b":["Documentation","Reference"]},{"i":509,"t":"Specifications File","u":"/docs/reference/cogment-yaml","b":["Documentation","Reference"]},{"i":521,"t":"gRPC API","u":"/docs/reference/grpc","b":["Documentation","Reference"]},{"i":725,"t":"Javascript SDK","u":"/docs/reference/javascript","b":["Documentation","Reference"]},{"i":798,"t":"Trial Parameters","u":"/docs/reference/parameters","b":["Documentation","Reference"]},{"i":812,"t":"Python SDK","u":"/docs/reference/python","b":["Documentation","Reference"]},{"i":1068,"t":"Installation","u":"/docs/reference/python-enterprise/installation","b":["Documentation","Reference","Enterprise Python SDK"]},{"i":1070,"t":"Runner","u":"/docs/reference/python-enterprise/runner","b":["Documentation","Reference","Enterprise Python SDK"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,4.036]],["t/11",[1,3.329,2,3.329]],["t/47",[3,3.329,4,3.329]],["t/89",[5,2.465,6,2.465,7,1.408,8,2.465]],["t/91",[9,2.465,10,1.776,11,2.465,12,2.465]],["t/121",[13,2.833,14,2.04,15,2.355]],["t/139",[10,1.278,16,1.775,17,1.775,18,1.775,19,1.278,20,1.775,21,1.775]],["t/153",[14,1.776,22,2.049,23,2.049,24,2.465]],["t/159",[14,1.572,22,1.814,23,1.814,25,1.814,26,1.572]],["t/185",[27,2.833,28,2.833,29,2.833]],["t/195",[15,2.355,30,2.833,31,2.833]],["t/217",[7,1.118,32,1.957,33,1.957,34,1.957,35,1.957,36,1.957]],["t/236",[37,3.329,38,3.329]],["t/240",[19,2.398,26,2.398]],["t/270",[19,2.398,39,2.768]],["t/299",[40,4.036]],["t/311",[41,3.329,42,3.329]],["t/353",[43,4.036]],["t/395",[44,4.036]],["t/410",[7,1.618,26,2.04,45,2.355]],["t/422",[7,1.618,39,2.355,45,2.355]],["t/446",[25,2.768,46,3.329]],["t/481",[10,2.398,47,3.329]],["t/509",[48,3.329,49,3.329]],["t/521",[50,3.329,51,3.329]],["t/725",[52,3.329,53,2.768]],["t/798",[7,1.901,54,3.329]],["t/812",[53,2.768,55,3.329]],["t/1068",[56,4.036]],["t/1070",[57,4.036]]],"invertedIndex":[["",{"_index":35,"t":{"217":{"position":[[16,1]]}}}],["2.0",{"_index":47,"t":{"481":{"position":[[8,3]]}}}],["actor",{"_index":13,"t":{"121":{"position":[[0,7]]}}}],["add",{"_index":22,"t":{"153":{"position":[[0,3]]},"159":{"position":[[0,3]]}}}],["apach",{"_index":37,"t":{"236":{"position":[[0,6]]}}}],["api",{"_index":51,"t":{"521":{"position":[[5,3]]}}}],["client",{"_index":26,"t":{"159":{"position":[[10,6]]},"240":{"position":[[10,6]]},"410":{"position":[[16,6]]}}}],["code",{"_index":34,"t":{"217":{"position":[[11,4]]}}}],["cogment",{"_index":10,"t":{"91":{"position":[[13,7]]},"139":{"position":[[38,7]]},"481":{"position":[[0,7]]}}}],["commun",{"_index":0,"t":{"1":{"position":[[0,9]]}}}],["concept",{"_index":2,"t":{"11":{"position":[[5,8]]}}}],["configur",{"_index":6,"t":{"89":{"position":[[6,9]]}}}],["control",{"_index":8,"t":{"89":{"position":[[31,10]]}}}],["core",{"_index":1,"t":{"11":{"position":[[0,4]]}}}],["datastor",{"_index":45,"t":{"410":{"position":[[6,9]]},"422":{"position":[[6,9]]}}}],["decis",{"_index":28,"t":{"185":{"position":[[7,9]]}}}],["develop",{"_index":3,"t":{"47":{"position":[[0,11]]}}}],["directori",{"_index":19,"t":{"139":{"position":[[46,9]]},"240":{"position":[[0,9]]},"270":{"position":[[0,9]]}}}],["discoveri",{"_index":21,"t":{"139":{"position":[[68,9]]}}}],["effici",{"_index":18,"t":{"139":{"position":[[20,10]]}}}],["environ",{"_index":30,"t":{"195":{"position":[[4,12]]}}}],["feedback",{"_index":29,"t":{"185":{"position":[[22,8]]}}}],["file",{"_index":49,"t":{"509":{"position":[[15,4]]}}}],["fulli",{"_index":5,"t":{"89":{"position":[[0,5]]}}}],["game",{"_index":31,"t":{"195":{"position":[[19,4]]}}}],["grpc",{"_index":50,"t":{"521":{"position":[[0,4]]}}}],["guid",{"_index":4,"t":{"47":{"position":[[12,5]]}}}],["human",{"_index":23,"t":{"153":{"position":[[6,5]]},"159":{"position":[[25,5]]}}}],["improv",{"_index":16,"t":{"139":{"position":[[0,7]]}}}],["instal",{"_index":56,"t":{"1068":{"position":[[0,12]]}}}],["javascript",{"_index":52,"t":{"725":{"position":[[0,10]]}}}],["launch",{"_index":40,"t":{"299":{"position":[[0,6]]}}}],["licens",{"_index":38,"t":{"236":{"position":[[7,7]]}}}],["loop",{"_index":24,"t":{"153":{"position":[[26,4]]}}}],["make",{"_index":27,"t":{"185":{"position":[[0,6]]}}}],["migrat",{"_index":9,"t":{"91":{"position":[[0,7]]}}}],["model",{"_index":41,"t":{"311":{"position":[[0,5]]}}}],["oper",{"_index":17,"t":{"139":{"position":[[8,11]]}}}],["orchestr",{"_index":43,"t":{"353":{"position":[[0,12]]}}}],["paramet",{"_index":54,"t":{"798":{"position":[[6,10]]}}}],["player",{"_index":14,"t":{"121":{"position":[[8,7]]},"153":{"position":[[12,6]]},"159":{"position":[[31,6]]}}}],["proxi",{"_index":46,"t":{"446":{"position":[[4,5]]}}}],["python",{"_index":55,"t":{"812":{"position":[[0,6]]}}}],["registri",{"_index":42,"t":{"311":{"position":[[6,8]]}}}],["rp",{"_index":15,"t":{"121":{"position":[[19,3]]},"195":{"position":[[27,3]]}}}],["runner",{"_index":57,"t":{"1070":{"position":[[0,6]]}}}],["sdk",{"_index":53,"t":{"725":{"position":[[11,3]]},"812":{"position":[[7,3]]}}}],["server",{"_index":39,"t":{"270":{"position":[[10,6]]},"422":{"position":[[16,6]]}}}],["servic",{"_index":20,"t":{"139":{"position":[[60,7]]}}}],["set",{"_index":32,"t":{"217":{"position":[[0,3]]}}}],["specif",{"_index":48,"t":{"509":{"position":[[0,14]]}}}],["statu",{"_index":44,"t":{"395":{"position":[[0,6]]}}}],["test",{"_index":36,"t":{"217":{"position":[[18,4]]}}}],["trial",{"_index":7,"t":{"89":{"position":[[18,5]]},"217":{"position":[[25,5]]},"410":{"position":[[0,5]]},"422":{"position":[[0,5]]},"798":{"position":[[0,5]]}}}],["up",{"_index":33,"t":{"217":{"position":[[4,2]]}}}],["v1",{"_index":11,"t":{"91":{"position":[[21,2]]}}}],["v2",{"_index":12,"t":{"91":{"position":[[27,2]]}}}],["web",{"_index":25,"t":{"159":{"position":[[6,3]]},"446":{"position":[[0,3]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"Interact with Us","u":"/docs/community-channels","h":"#interact-with-us","p":1},{"i":5,"t":"Reporting Bugs","u":"/docs/community-channels","h":"#reporting-bugs","p":1},{"i":7,"t":"Security Disclosures","u":"/docs/community-channels","h":"#security-disclosures","p":1},{"i":9,"t":"Participate in Cogment Open Source","u":"/docs/community-channels","h":"#participate-in-cogment-open-source","p":1},{"i":13,"t":"Environment","u":"/docs/guide/core-concepts","h":"#environment","p":11},{"i":15,"t":"State and Observation Spaces","u":"/docs/guide/core-concepts","h":"#state-and-observation-spaces","p":11},{"i":17,"t":"How the Environment works in Cogment","u":"/docs/guide/core-concepts","h":"#how-the-environment-works-in-cogment","p":11},{"i":19,"t":"Actors","u":"/docs/guide/core-concepts","h":"#actors","p":11},{"i":21,"t":"Action Space","u":"/docs/guide/core-concepts","h":"#action-space","p":11},{"i":23,"t":"How Actors work in Cogment","u":"/docs/guide/core-concepts","h":"#how-actors-work-in-cogment","p":11},{"i":25,"t":"Interactions between Actors and the Environment","u":"/docs/guide/core-concepts","h":"#interactions-between-actors-and-the-environment","p":11},{"i":27,"t":"Trials","u":"/docs/guide/core-concepts","h":"#trials","p":11},{"i":29,"t":"How Trials work in Cogment","u":"/docs/guide/core-concepts","h":"#how-trials-work-in-cogment","p":11},{"i":31,"t":"Cogment Architecture","u":"/docs/guide/core-concepts","h":"#cogment-architecture","p":11},{"i":33,"t":"Context","u":"/docs/guide/core-concepts","h":"#context","p":11},{"i":35,"t":"Orchestrator","u":"/docs/guide/core-concepts","h":"#orchestrator","p":11},{"i":37,"t":"Controller","u":"/docs/guide/core-concepts","h":"#controller","p":11},{"i":39,"t":"Environment","u":"/docs/guide/core-concepts","h":"#environment-1","p":11},{"i":41,"t":"Actors","u":"/docs/guide/core-concepts","h":"#actors-1","p":11},{"i":43,"t":"Additional components","u":"/docs/guide/core-concepts","h":"#additional-components","p":11},{"i":45,"t":"Components availability summary","u":"/docs/guide/core-concepts","h":"#components-availability-summary","p":11},{"i":49,"t":"The spec file","u":"/docs/guide/development-guide","h":"#the-spec-file","p":47},{"i":51,"t":"Compiling the spec file","u":"/docs/guide/development-guide","h":"#compiling-the-spec-file","p":47},{"i":53,"t":"Environment","u":"/docs/guide/development-guide","h":"#environment","p":47},{"i":55,"t":"Sending observations","u":"/docs/guide/development-guide","h":"#sending-observations","p":47},{"i":57,"t":"Actor","u":"/docs/guide/development-guide","h":"#actor","p":47},{"i":59,"t":"Service actor / Client actor","u":"/docs/guide/development-guide","h":"#service-actor--client-actor","p":47},{"i":61,"t":"Actor Availability","u":"/docs/guide/development-guide","h":"#actor-availability","p":47},{"i":63,"t":"Controller","u":"/docs/guide/development-guide","h":"#controller","p":47},{"i":65,"t":"Start and terminate trials","u":"/docs/guide/development-guide","h":"#start-and-terminate-trials","p":47},{"i":67,"t":"Watch trials","u":"/docs/guide/development-guide","h":"#watch-trials","p":47},{"i":69,"t":"Rewards","u":"/docs/guide/development-guide","h":"#rewards","p":47},{"i":70,"t":"Creating","u":"/docs/guide/development-guide","h":"#creating","p":47},{"i":72,"t":"Consuming","u":"/docs/guide/development-guide","h":"#consuming","p":47},{"i":74,"t":"Messages","u":"/docs/guide/development-guide","h":"#messages","p":47},{"i":75,"t":"Creating","u":"/docs/guide/development-guide","h":"#creating-1","p":47},{"i":77,"t":"Consuming","u":"/docs/guide/development-guide","h":"#consuming-1","p":47},{"i":79,"t":"Pre-trial hook","u":"/docs/guide/development-guide","h":"#pre-trial-hook","p":47},{"i":81,"t":"Trial lifetime","u":"/docs/guide/development-guide","h":"#trial-lifetime","p":47},{"i":83,"t":"Trial start","u":"/docs/guide/development-guide","h":"#trial-start","p":47},{"i":85,"t":"Trial run","u":"/docs/guide/development-guide","h":"#trial-run","p":47},{"i":87,"t":"Trial end","u":"/docs/guide/development-guide","h":"#trial-end","p":47},{"i":93,"t":"Updating components","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#updating-components","p":91},{"i":95,"t":"cogment.yaml split in a spec file and a parameters file","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#cogmentyaml-split-in-a-spec-file-and-a-parameters-file","p":91},{"i":97,"t":"pre-trial hooks definition moved to an orchestrator configuration","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#pre-trial-hooks-definition-moved-to-an-orchestrator-configuration","p":91},{"i":99,"t":"Datalog definition now part of each trial's parameters","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#datalog-definition-now-part-of-each-trials-parameters","p":91},{"i":101,"t":"Datalog API has changed, and now has a python wrapper","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#datalog-api-has-changed-and-now-has-a-python-wrapper","p":91},{"i":103,"t":"Default trial parameters no longer support definition user configuration for trials, environments and actors","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#default-trial-parameters-no-longer-support-definition-user-configuration-for-trials-environments-and-actors","p":91},{"i":105,"t":"Prefer using full URL for endpoints","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#prefer-using-full-url-for-endpoints","p":91},{"i":107,"t":"Support for \"delta\" observations discontinued","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#support-for-delta-observations-discontinued","p":91},{"i":109,"t":"New code generation workflow","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#new-code-generation-workflow","p":91},{"i":111,"t":"Orchestrator environment variables namespaced","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#orchestrator-environment-variables-namespaced","p":91},{"i":113,"t":"Trials' environments can be named","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#trials-environments-can-be-named","p":91},{"i":115,"t":"Python SDK","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#python-sdk","p":91},{"i":117,"t":"Javascript SDK","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#javascript-sdk","p":91},{"i":119,"t":"Troubleshooting","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#troubleshooting","p":91},{"i":123,"t":"What does Cogment need to know about an Actor?","u":"/docs/guide/tutorial/actors-in-cogment","h":"#what-does-cogment-need-to-know-about-an-actor","p":121},{"i":125,"t":"Defining the Actor Service","u":"/docs/guide/tutorial/actors-in-cogment","h":"#defining-the-actor-service","p":121},{"i":127,"t":"Defining the Actor Class","u":"/docs/guide/tutorial/actors-in-cogment","h":"#defining-the-actor-class","p":121},{"i":129,"t":"Action Space","u":"/docs/guide/tutorial/actors-in-cogment","h":"#action-space","p":121},{"i":131,"t":"Observation Space","u":"/docs/guide/tutorial/actors-in-cogment","h":"#observation-space","p":121},{"i":133,"t":"Defining the Actor Implementation","u":"/docs/guide/tutorial/actors-in-cogment","h":"#defining-the-actor-implementation","p":121},{"i":135,"t":"Completing the random_agent Actor Implementation","u":"/docs/guide/tutorial/actors-in-cogment","h":"#completing-the-random_agent-actor-implementation","p":121},{"i":137,"t":"Specifying which Actors participate in the Trial","u":"/docs/guide/tutorial/actors-in-cogment","h":"#specifying-which-actors-participate-in-the-trial","p":121},{"i":141,"t":"Adding the Directory service","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#adding-the-directory-service","p":139},{"i":143,"t":"Registering services to the Directory","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#registering-services-to-the-directory","p":139},{"i":145,"t":"Discovering services from the Directory","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#discovering-services-from-the-directory","p":139},{"i":147,"t":"Special case for Client Actors","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#special-case-for-client-actors","p":139},{"i":149,"t":"Authentication Token","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#authentication-token","p":139},{"i":151,"t":"Step 8.5: Using Cogment environment variables","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"","p":139},{"i":155,"t":"Client actor implementation","u":"/docs/guide/tutorial/advanced-tutorials/human-player","h":"#client-actor-implementation","p":153},{"i":157,"t":"Interactive prompt to let Humans play RPS","u":"/docs/guide/tutorial/advanced-tutorials/human-player","h":"#interactive-prompt-to-let-humans-play-rps","p":153},{"i":161,"t":"Prerequisites","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#prerequisites","p":159},{"i":163,"t":"The web client","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#the-web-client","p":159},{"i":165,"t":"Creating a React app","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#creating-a-react-app","p":159},{"i":167,"t":"Adding Material UI","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#adding-material-ui","p":159},{"i":169,"t":"Update the run script","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#update-the-run-script","p":159},{"i":171,"t":"The parameters file","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#the-parameters-file","p":159},{"i":173,"t":"Adding Cogment to our web client","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#adding-cogment-to-our-web-client","p":159},{"i":175,"t":"CODE","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"","p":159},{"i":177,"t":"index.js / index.css","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#indexjs--indexcss","p":159},{"i":179,"t":"App.js","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#appjs","p":159},{"i":181,"t":"hooks/useActions.js","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#hooksuseactionsjs","p":159},{"i":183,"t":"Making it look good","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#making-it-look-good","p":159},{"i":187,"t":"Sending Rewards to the Actors","u":"/docs/guide/tutorial/decision-making","h":"#sending-rewards-to-the-actors","p":185},{"i":189,"t":"Enabling Actors to Make Use of Information from the Environment","u":"/docs/guide/tutorial/decision-making","h":"#enabling-actors-to-make-use-of-information-from-the-environment","p":185},{"i":191,"t":"Registering a new Actor with Cogment","u":"/docs/guide/tutorial/decision-making","h":"#registering-a-new-actor-with-cogment","p":185},{"i":193,"t":"Modifying Bob","u":"/docs/guide/tutorial/decision-making","h":"","p":185},{"i":197,"t":"What does Cogment need to know about the Environment?","u":"/docs/guide/tutorial/environment-in-cogment","h":"#what-does-cogment-need-to-know-about-the-environment","p":195},{"i":199,"t":"Defining the Environment Service","u":"/docs/guide/tutorial/environment-in-cogment","h":"#defining-the-environment-service","p":195},{"i":201,"t":"Defining the Environment Implementation","u":"/docs/guide/tutorial/environment-in-cogment","h":"#defining-the-environment-implementation","p":195},{"i":203,"t":"Implementing the rules of the game","u":"/docs/guide/tutorial/environment-in-cogment","h":"#implementing-the-rules-of-the-game","p":195},{"i":205,"t":"The Initialization Block: Creating the First Observations for Each Player","u":"/docs/guide/tutorial/environment-in-cogment","h":"#the-initialization-block-creating-the-first-observations-for-each-player","p":195},{"i":207,"t":"The Event Loop: Creating New Observations in Response to Player Actions","u":"/docs/guide/tutorial/environment-in-cogment","h":"#the-event-loop-creating-new-observations-in-response-to-player-actions","p":195},{"i":209,"t":"The termination block: reporting on what happened in the game","u":"/docs/guide/tutorial/environment-in-cogment","h":"#the-termination-block-reporting-on-what-happened-in-the-game","p":195},{"i":211,"t":"Configuring the Environment: How many successful rounds to win the game?","u":"/docs/guide/tutorial/environment-in-cogment","h":"","p":195},{"i":213,"t":"Modifying the Environment Implementation to end the game","u":"/docs/guide/tutorial/environment-in-cogment","h":"#modifying-the-environment-implementation-to-end-the-game","p":195},{"i":215,"t":"Modifying the Trial Runner to receive the termination signal from the Environment","u":"/docs/guide/tutorial/environment-in-cogment","h":"#modifying-the-trial-runner-to-receive-the-termination-signal-from-the-environment","p":195},{"i":219,"t":"Getting Set Up","u":"/docs/guide/tutorial/setup","h":"#getting-set-up","p":217},{"i":221,"t":"Cloning the RPS Source Code","u":"/docs/guide/tutorial/setup","h":"#cloning-the-rps-source-code","p":217},{"i":223,"t":"Creating your development directory","u":"/docs/guide/tutorial/setup","h":"#creating-your-development-directory","p":217},{"i":225,"t":"What's in this directory?","u":"/docs/guide/tutorial/setup","h":"#whats-in-this-directory","p":217},{"i":226,"t":"Service Directories","u":"/docs/guide/tutorial/setup","h":"#service-directories","p":217},{"i":228,"t":"Configuration & Execution Files","u":"/docs/guide/tutorial/setup","h":"#configuration--execution-files","p":217},{"i":230,"t":"Building the Application","u":"/docs/guide/tutorial/setup","h":"#building-the-application","p":217},{"i":232,"t":"What exactly is happening in the install?","u":"/docs/guide/tutorial/setup","h":"#what-exactly-is-happening-in-the-install","p":217},{"i":234,"t":"Running the Application","u":"/docs/guide/tutorial/setup","h":"#running-the-application","p":217},{"i":238,"t":"Terms and Conditions for use, reproduction, and distribution","u":"/docs/license","h":"#terms-and-conditions-for-use-reproduction-and-distribution","p":236},{"i":242,"t":"Common Options","u":"/docs/reference/cli/directory/directory-client","h":"#common-options","p":240},{"i":244,"t":"timeout","u":"/docs/reference/cli/directory/directory-client","h":"#timeout","p":240},{"i":246,"t":"directory_endpoint","u":"/docs/reference/cli/directory/directory-client","h":"#directory_endpoint","p":240},{"i":248,"t":"directory_authentication_token","u":"/docs/reference/cli/directory/directory-client","h":"#directory_authentication_token","p":240},{"i":250,"t":"Directory Client Register","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-register","p":240},{"i":252,"t":"Output","u":"/docs/reference/cli/directory/directory-client","h":"#output","p":240},{"i":254,"t":"Command line","u":"/docs/reference/cli/directory/directory-client","h":"#command-line","p":240},{"i":256,"t":"Directory Client Deregister","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-deregister","p":240},{"i":258,"t":"Output","u":"/docs/reference/cli/directory/directory-client","h":"#output-1","p":240},{"i":260,"t":"Command line","u":"/docs/reference/cli/directory/directory-client","h":"#command-line-1","p":240},{"i":262,"t":"Directory Client Inquire","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-inquire","p":240},{"i":264,"t":"Output","u":"/docs/reference/cli/directory/directory-client","h":"#output-2","p":240},{"i":266,"t":"Command line","u":"/docs/reference/cli/directory/directory-client","h":"#command-line-2","p":240},{"i":268,"t":"Directory Client WaitForReady","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-waitforready","p":240},{"i":272,"t":"Command line","u":"/docs/reference/cli/directory/directory-server","h":"#command-line","p":270},{"i":274,"t":"Options","u":"/docs/reference/cli/directory/directory-server","h":"#options","p":270},{"i":275,"t":"port","u":"/docs/reference/cli/directory/directory-server","h":"#port","p":270},{"i":277,"t":"grpc_reflection","u":"/docs/reference/cli/directory/directory-server","h":"#grpc_reflection","p":270},{"i":279,"t":"log_level","u":"/docs/reference/cli/directory/directory-server","h":"#log_level","p":270},{"i":281,"t":"log_file","u":"/docs/reference/cli/directory/directory-server","h":"#log_file","p":270},{"i":283,"t":"registration_lag","u":"/docs/reference/cli/directory/directory-server","h":"#registration_lag","p":270},{"i":285,"t":"persistence_file","u":"/docs/reference/cli/directory/directory-server","h":"#persistence_file","p":270},{"i":287,"t":"load_balancing","u":"/docs/reference/cli/directory/directory-server","h":"#load_balancing","p":270},{"i":289,"t":"check_on_inquire","u":"/docs/reference/cli/directory/directory-server","h":"#check_on_inquire","p":270},{"i":291,"t":"Operation","u":"/docs/reference/cli/directory/directory-server","h":"#operation","p":270},{"i":293,"t":"Health Checking","u":"/docs/reference/cli/directory/directory-server","h":"#health-checking","p":270},{"i":295,"t":"Load Balancing","u":"/docs/reference/cli/directory/directory-server","h":"#load-balancing","p":270},{"i":297,"t":"Data","u":"/docs/reference/cli/directory/directory-server","h":"#data","p":270},{"i":301,"t":"Command line","u":"/docs/reference/cli/launch","h":"#command-line","p":299},{"i":303,"t":"definition file","u":"/docs/reference/cli/launch","h":"#definition-file","p":299},{"i":305,"t":"Nodes","u":"/docs/reference/cli/launch","h":"#nodes","p":299},{"i":307,"t":"Variable substitution","u":"/docs/reference/cli/launch","h":"#variable-substitution","p":299},{"i":309,"t":"File Example","u":"/docs/reference/cli/launch","h":"#file-example","p":299},{"i":313,"t":"Command line","u":"/docs/reference/cli/model-registry","h":"#command-line","p":311},{"i":315,"t":"Configuration","u":"/docs/reference/cli/model-registry","h":"#configuration","p":311},{"i":317,"t":"port","u":"/docs/reference/cli/model-registry","h":"#port","p":311},{"i":319,"t":"grpc_reflection","u":"/docs/reference/cli/model-registry","h":"#grpc_reflection","p":311},{"i":321,"t":"archive_dir","u":"/docs/reference/cli/model-registry","h":"#archive_dir","p":311},{"i":323,"t":"cache_max_items","u":"/docs/reference/cli/model-registry","h":"#cache_max_items","p":311},{"i":325,"t":"sent_version_chunk_size","u":"/docs/reference/cli/model-registry","h":"#sent_version_chunk_size","p":311},{"i":327,"t":"log_level","u":"/docs/reference/cli/model-registry","h":"#log_level","p":311},{"i":329,"t":"log_file","u":"/docs/reference/cli/model-registry","h":"#log_file","p":311},{"i":331,"t":"directory_endpoint","u":"/docs/reference/cli/model-registry","h":"#directory_endpoint","p":311},{"i":333,"t":"directory_authentication_token","u":"/docs/reference/cli/model-registry","h":"#directory_authentication_token","p":311},{"i":335,"t":"directory_registration_host","u":"/docs/reference/cli/model-registry","h":"#directory_registration_host","p":311},{"i":337,"t":"directory_registration_properties","u":"/docs/reference/cli/model-registry","h":"#directory_registration_properties","p":311},{"i":339,"t":"API usage examples","u":"/docs/reference/cli/model-registry","h":"#api-usage-examples","p":311},{"i":341,"t":"Create or update a model - cogmentAPI.ModelRegistrySP/CreateOrUpdateModel( .cogmentAPI.CreateOrUpdateModelRequest ) returns ( .cogmentAPI.CreateOrUpdateModelReply );","u":"/docs/reference/cli/model-registry","h":"#create-or-update-a-model---cogmentapimodelregistryspcreateorupdatemodel-cogmentapicreateorupdatemodelrequest--returns--cogmentapicreateorupdatemodelreply-","p":311},{"i":343,"t":"Delete a model - cogmentAPI.ModelRegistrySP/DeleteModel( .cogmentAPI.DeleteModelRequest ) returns ( .cogmentAPI.DeleteModelReply );","u":"/docs/reference/cli/model-registry","h":"#delete-a-model---cogmentapimodelregistryspdeletemodel-cogmentapideletemodelrequest--returns--cogmentapideletemodelreply-","p":311},{"i":345,"t":"Retrieve models - cogmentAPI.ModelRegistrySP/RetrieveModels( .cogmentAPI.RetrieveModelsRequest ) returns ( .cogmentAPI.RetrieveModelsReply );","u":"/docs/reference/cli/model-registry","h":"#retrieve-models---cogmentapimodelregistryspretrievemodels-cogmentapiretrievemodelsrequest--returns--cogmentapiretrievemodelsreply-","p":311},{"i":347,"t":"Create a model iteration - cogmentAPI.ModelRegistrySP/CreateVersion( stream .cogmentAPI.CreateVersionRequestChunk ) returns ( .cogmentAPI.CreateVersionReply );","u":"/docs/reference/cli/model-registry","h":"#create-a-model-iteration---cogmentapimodelregistryspcreateversion-stream-cogmentapicreateversionrequestchunk--returns--cogmentapicreateversionreply-","p":311},{"i":349,"t":"Retrieve model iteration infos - cogmentAPI.ModelRegistrySP/RetrieveVersionInfos ( .cogmentAPI.RetrieveVersionInfosRequest ) returns ( .cogmentAPI.RetrieveVersionInfosReply );","u":"/docs/reference/cli/model-registry","h":"#retrieve-model-iteration-infos---cogmentapimodelregistryspretrieveversioninfos--cogmentapiretrieveversioninfosrequest--returns--cogmentapiretrieveversioninfosreply-","p":311},{"i":351,"t":"Retrieve given iteration data - cogmentAPI.ModelRegistrySP/RetrieveVersionData ( .cogmentAPI.RetrieveVersionDataRequest ) returns ( stream .cogmentAPI.RetrieveVersionDataReplyChunk );","u":"/docs/reference/cli/model-registry","h":"#retrieve-given-iteration-data---cogmentapimodelregistryspretrieveversiondata--cogmentapiretrieveversiondatarequest--returns--stream-cogmentapiretrieveversiondatareplychunk-","p":311},{"i":355,"t":"Command line","u":"/docs/reference/cli/orchestrator","h":"#command-line","p":353},{"i":357,"t":"Configuration","u":"/docs/reference/cli/orchestrator","h":"#configuration","p":353},{"i":359,"t":"lifecycle_port","u":"/docs/reference/cli/orchestrator","h":"#lifecycle_port","p":353},{"i":361,"t":"actor_port","u":"/docs/reference/cli/orchestrator","h":"#actor_port","p":353},{"i":363,"t":"actor_web_port","u":"/docs/reference/cli/orchestrator","h":"#actor_web_port","p":353},{"i":365,"t":"params","u":"/docs/reference/cli/orchestrator","h":"#params","p":353},{"i":367,"t":"directory_endpoint","u":"/docs/reference/cli/orchestrator","h":"#directory_endpoint","p":353},{"i":369,"t":"directory_authentication_token","u":"/docs/reference/cli/orchestrator","h":"#directory_authentication_token","p":353},{"i":371,"t":"directory_auto_register","u":"/docs/reference/cli/orchestrator","h":"#directory_auto_register","p":353},{"i":373,"t":"directory_registration_host","u":"/docs/reference/cli/orchestrator","h":"#directory_registration_host","p":353},{"i":375,"t":"directory_registration_properties","u":"/docs/reference/cli/orchestrator","h":"#directory_registration_properties","p":353},{"i":377,"t":"pre_trial_hooks","u":"/docs/reference/cli/orchestrator","h":"#pre_trial_hooks","p":353},{"i":379,"t":"prometheus_port","u":"/docs/reference/cli/orchestrator","h":"#prometheus_port","p":353},{"i":381,"t":"status_file","u":"/docs/reference/cli/orchestrator","h":"#status_file","p":353},{"i":383,"t":"private_key","u":"/docs/reference/cli/orchestrator","h":"#private_key","p":353},{"i":385,"t":"root_cert","u":"/docs/reference/cli/orchestrator","h":"#root_cert","p":353},{"i":387,"t":"trust_chain","u":"/docs/reference/cli/orchestrator","h":"#trust_chain","p":353},{"i":389,"t":"gc_frequency","u":"/docs/reference/cli/orchestrator","h":"#gc_frequency","p":353},{"i":391,"t":"log_level","u":"/docs/reference/cli/orchestrator","h":"#log_level","p":353},{"i":393,"t":"log_file","u":"/docs/reference/cli/orchestrator","h":"#log_file","p":353},{"i":397,"t":"Common","u":"/docs/reference/cli/status","h":"#common","p":395},{"i":398,"t":"directory_endpoint","u":"/docs/reference/cli/status","h":"#directory_endpoint","p":395},{"i":400,"t":"directory_authentication_token","u":"/docs/reference/cli/status","h":"#directory_authentication_token","p":395},{"i":402,"t":"verbose","u":"/docs/reference/cli/status","h":"#verbose","p":395},{"i":404,"t":"endpoint","u":"/docs/reference/cli/status","h":"#endpoint","p":395},{"i":406,"t":"type","u":"/docs/reference/cli/status","h":"#type","p":395},{"i":408,"t":"Statuses","u":"/docs/reference/cli/status","h":"#statuses","p":395},{"i":412,"t":"Common options","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#common-options","p":410},{"i":414,"t":"list_trials command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#list_trials-command","p":410},{"i":416,"t":"delete_trials command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#delete_trials-command","p":410},{"i":418,"t":"export command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#export-command","p":410},{"i":420,"t":"import command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#import-command","p":410},{"i":424,"t":"Configuration","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#configuration","p":422},{"i":426,"t":"port","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#port","p":422},{"i":428,"t":"grpc_reflection","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#grpc_reflection","p":422},{"i":430,"t":"memory_storage_max_samples_size","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#memory_storage_max_samples_size","p":422},{"i":432,"t":"file_storage","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#file_storage","p":422},{"i":434,"t":"log_level","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#log_level","p":422},{"i":436,"t":"log_file","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#log_file","p":422},{"i":438,"t":"directory_endpoint","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_endpoint","p":422},{"i":440,"t":"directory_authentication_token","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_authentication_token","p":422},{"i":442,"t":"directory_registration_host","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_registration_host","p":422},{"i":444,"t":"directory_registration_properties","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_registration_properties","p":422},{"i":448,"t":"Command line","u":"/docs/reference/cli/web-proxy","h":"#command-line","p":446},{"i":450,"t":"Configuration","u":"/docs/reference/cli/web-proxy","h":"#configuration","p":446},{"i":452,"t":"web_port","u":"/docs/reference/cli/web-proxy","h":"#web_port","p":446},{"i":454,"t":"orchestrator_endpoint","u":"/docs/reference/cli/web-proxy","h":"#orchestrator_endpoint","p":446},{"i":456,"t":"port","u":"/docs/reference/cli/web-proxy","h":"#port","p":446},{"i":458,"t":"spec_file","u":"/docs/reference/cli/web-proxy","h":"#spec_file","p":446},{"i":460,"t":"implementation","u":"/docs/reference/cli/web-proxy","h":"#implementation","p":446},{"i":462,"t":"secret","u":"/docs/reference/cli/web-proxy","h":"#secret","p":446},{"i":464,"t":"log_level","u":"/docs/reference/cli/web-proxy","h":"#log_level","p":446},{"i":466,"t":"log_file","u":"/docs/reference/cli/web-proxy","h":"#log_file","p":446},{"i":468,"t":"directory_endpoint","u":"/docs/reference/cli/web-proxy","h":"#directory_endpoint","p":446},{"i":470,"t":"directory_authentication_token","u":"/docs/reference/cli/web-proxy","h":"#directory_authentication_token","p":446},{"i":472,"t":"directory_registration_host","u":"/docs/reference/cli/web-proxy","h":"#directory_registration_host","p":446},{"i":474,"t":"directory_registration_properties","u":"/docs/reference/cli/web-proxy","h":"#directory_registration_properties","p":446},{"i":476,"t":"HTTP API","u":"/docs/reference/cli/web-proxy","h":"#http-api","p":446},{"i":477,"t":"Controller","u":"/docs/reference/cli/web-proxy","h":"#controller","p":446},{"i":479,"t":"Actor","u":"/docs/reference/cli/web-proxy","h":"#actor","p":446},{"i":483,"t":"Breaking changes","u":"/docs/reference/cogment-v2-changes","h":"#breaking-changes","p":481},{"i":485,"t":"Cogment.yaml","u":"/docs/reference/cogment-v2-changes","h":"#cogmentyaml","p":481},{"i":487,"t":"Python SDK","u":"/docs/reference/cogment-v2-changes","h":"#python-sdk","p":481},{"i":489,"t":"Javascript SDK","u":"/docs/reference/cogment-v2-changes","h":"#javascript-sdk","p":481},{"i":491,"t":"Datalog sample","u":"/docs/reference/cogment-v2-changes","h":"#datalog-sample","p":481},{"i":493,"t":"Orchestrator","u":"/docs/reference/cogment-v2-changes","h":"#orchestrator","p":481},{"i":495,"t":"Deprecated Behaviors","u":"/docs/reference/cogment-v2-changes","h":"#deprecated-behaviors","p":481},{"i":497,"t":"Cogment.yaml","u":"/docs/reference/cogment-v2-changes","h":"#cogmentyaml-1","p":481},{"i":499,"t":"Orchestrator","u":"/docs/reference/cogment-v2-changes","h":"#orchestrator-1","p":481},{"i":501,"t":"Python SDK","u":"/docs/reference/cogment-v2-changes","h":"#python-sdk-1","p":481},{"i":503,"t":"New Functionalities","u":"/docs/reference/cogment-v2-changes","h":"#new-functionalities","p":481},{"i":505,"t":"Parameters","u":"/docs/reference/cogment-v2-changes","h":"#parameters","p":481},{"i":507,"t":"Python SDK","u":"/docs/reference/cogment-v2-changes","h":"#python-sdk-2","p":481},{"i":511,"t":"Import","u":"/docs/reference/cogment-yaml","h":"#import","p":509},{"i":513,"t":"Commands","u":"/docs/reference/cogment-yaml","h":"#commands","p":509},{"i":515,"t":"Trial","u":"/docs/reference/cogment-yaml","h":"#trial","p":509},{"i":517,"t":"Environment","u":"/docs/reference/cogment-yaml","h":"#environment","p":509},{"i":519,"t":"Actor Classes","u":"/docs/reference/cogment-yaml","h":"#actor-classes","p":509},{"i":523,"t":"General","u":"/docs/reference/grpc","h":"#general","p":521},{"i":525,"t":"Limitations","u":"/docs/reference/grpc","h":"#limitations","p":521},{"i":527,"t":"Common types","u":"/docs/reference/grpc","h":"#common-types","p":521},{"i":529,"t":"Common Values","u":"/docs/reference/grpc","h":"#common-values","p":521},{"i":531,"t":"VersionRequest","u":"/docs/reference/grpc","h":"#versionrequest","p":521},{"i":533,"t":"VersionInfo","u":"/docs/reference/grpc","h":"#versioninfo","p":521},{"i":535,"t":"StatusRequest","u":"/docs/reference/grpc","h":"#statusrequest","p":521},{"i":537,"t":"StatusReply","u":"/docs/reference/grpc","h":"#statusreply","p":521},{"i":539,"t":"TrialParams","u":"/docs/reference/grpc","h":"#trialparams","p":521},{"i":541,"t":"DatalogParams","u":"/docs/reference/grpc","h":"#datalogparams","p":521},{"i":543,"t":"EnvironmentParams","u":"/docs/reference/grpc","h":"#environmentparams","p":521},{"i":545,"t":"ActorParams","u":"/docs/reference/grpc","h":"#actorparams","p":521},{"i":547,"t":"SerializedMessage","u":"/docs/reference/grpc","h":"#serializedmessage","p":521},{"i":549,"t":"TrialActor","u":"/docs/reference/grpc","h":"#trialactor","p":521},{"i":551,"t":"Observation","u":"/docs/reference/grpc","h":"#observation","p":521},{"i":553,"t":"Action","u":"/docs/reference/grpc","h":"#action","p":521},{"i":555,"t":"Message","u":"/docs/reference/grpc","h":"#message","p":521},{"i":557,"t":"RewardSource","u":"/docs/reference/grpc","h":"#rewardsource","p":521},{"i":559,"t":"Reward","u":"/docs/reference/grpc","h":"#reward","p":521},{"i":561,"t":"ObservationSet","u":"/docs/reference/grpc","h":"#observationset","p":521},{"i":563,"t":"ActionSet","u":"/docs/reference/grpc","h":"#actionset","p":521},{"i":565,"t":"TrialState","u":"/docs/reference/grpc","h":"#trialstate","p":521},{"i":567,"t":"CommunicationState","u":"/docs/reference/grpc","h":"#communicationstate","p":521},{"i":569,"t":"Control API","u":"/docs/reference/grpc","h":"#control-api","p":521},{"i":571,"t":"Service TrialLifecycleSP","u":"/docs/reference/grpc","h":"#service-triallifecyclesp","p":521},{"i":573,"t":"TrialStartRequest","u":"/docs/reference/grpc","h":"#trialstartrequest","p":521},{"i":575,"t":"TrialStartReply","u":"/docs/reference/grpc","h":"#trialstartreply","p":521},{"i":577,"t":"TerminateTrialRequest","u":"/docs/reference/grpc","h":"#terminatetrialrequest","p":521},{"i":579,"t":"TerminateTrialReply","u":"/docs/reference/grpc","h":"#terminatetrialreply","p":521},{"i":581,"t":"TrialInfoRequest","u":"/docs/reference/grpc","h":"#trialinforequest","p":521},{"i":583,"t":"TrialInfoReply","u":"/docs/reference/grpc","h":"#trialinforeply","p":521},{"i":585,"t":"TrialInfo","u":"/docs/reference/grpc","h":"#trialinfo","p":521},{"i":587,"t":"TrialListRequest","u":"/docs/reference/grpc","h":"#triallistrequest","p":521},{"i":589,"t":"TrialListEntry","u":"/docs/reference/grpc","h":"#triallistentry","p":521},{"i":591,"t":"Actor API","u":"/docs/reference/grpc","h":"#actor-api","p":521},{"i":593,"t":"Service Actor API","u":"/docs/reference/grpc","h":"#service-actor-api","p":521},{"i":595,"t":"Client Actor API","u":"/docs/reference/grpc","h":"#client-actor-api","p":521},{"i":597,"t":"RunTrial()","u":"/docs/reference/grpc","h":"#runtrial","p":521},{"i":599,"t":"Version()","u":"/docs/reference/grpc","h":"#version-1","p":521},{"i":601,"t":"ActorRunTrialInput","u":"/docs/reference/grpc","h":"#actorruntrialinput","p":521},{"i":603,"t":"ActorRunTrialOutput","u":"/docs/reference/grpc","h":"#actorruntrialoutput","p":521},{"i":605,"t":"ActorInitialInput","u":"/docs/reference/grpc","h":"#actorinitialinput","p":521},{"i":607,"t":"ActorInitialOutput","u":"/docs/reference/grpc","h":"#actorinitialoutput","p":521},{"i":609,"t":"Environment API","u":"/docs/reference/grpc","h":"#environment-api","p":521},{"i":611,"t":"Service EnvironmentSP","u":"/docs/reference/grpc","h":"#service-environmentsp","p":521},{"i":613,"t":"EnvrRunTrialInput","u":"/docs/reference/grpc","h":"#envrruntrialinput","p":521},{"i":615,"t":"EnvRunTrialOutput","u":"/docs/reference/grpc","h":"#envruntrialoutput","p":521},{"i":617,"t":"EnvInitialInput","u":"/docs/reference/grpc","h":"#envinitialinput","p":521},{"i":619,"t":"EnvInitialOutput","u":"/docs/reference/grpc","h":"#envinitialoutput","p":521},{"i":621,"t":"Data/Log API","u":"/docs/reference/grpc","h":"#datalog-api","p":521},{"i":623,"t":"Service LogExporterSP","u":"/docs/reference/grpc","h":"#service-logexportersp","p":521},{"i":625,"t":"LogExporterSampleRequest","u":"/docs/reference/grpc","h":"#logexportersamplerequest","p":521},{"i":627,"t":"LogExporterSampleReply","u":"/docs/reference/grpc","h":"#logexportersamplereply","p":521},{"i":629,"t":"Hook API","u":"/docs/reference/grpc","h":"#hook-api","p":521},{"i":631,"t":"Service TrialHooksSP","u":"/docs/reference/grpc","h":"#service-trialhookssp","p":521},{"i":633,"t":"Directory API","u":"/docs/reference/grpc","h":"#directory-api","p":521},{"i":635,"t":"Service DirectorySP","u":"/docs/reference/grpc","h":"#service-directorysp","p":521},{"i":637,"t":"ServiceType","u":"/docs/reference/grpc","h":"#servicetype","p":521},{"i":639,"t":"ServiceDetails","u":"/docs/reference/grpc","h":"#servicedetails","p":521},{"i":641,"t":"ServiceEndpoint","u":"/docs/reference/grpc","h":"#serviceendpoint","p":521},{"i":643,"t":"RegisterRequest","u":"/docs/reference/grpc","h":"#registerrequest","p":521},{"i":645,"t":"RegisterReply","u":"/docs/reference/grpc","h":"#registerreply","p":521},{"i":647,"t":"DeregisterRequest","u":"/docs/reference/grpc","h":"#deregisterrequest","p":521},{"i":649,"t":"DeregisterReply","u":"/docs/reference/grpc","h":"#deregisterreply","p":521},{"i":651,"t":"InquireRequest","u":"/docs/reference/grpc","h":"#inquirerequest","p":521},{"i":653,"t":"InquireReply","u":"/docs/reference/grpc","h":"#inquirereply","p":521},{"i":655,"t":"Model Registry API","u":"/docs/reference/grpc","h":"#model-registry-api","p":521},{"i":657,"t":"Service ModelRegistrySP","u":"/docs/reference/grpc","h":"#service-modelregistrysp","p":521},{"i":659,"t":"CreateOrUpdateModelRequest","u":"/docs/reference/grpc","h":"#createorupdatemodelrequest","p":521},{"i":661,"t":"CreateOrUpdateModelReply","u":"/docs/reference/grpc","h":"#createorupdatemodelreply","p":521},{"i":663,"t":"DeleteModelRequest","u":"/docs/reference/grpc","h":"#deletemodelrequest","p":521},{"i":665,"t":"DeleteModelReply","u":"/docs/reference/grpc","h":"#deletemodelreply","p":521},{"i":667,"t":"RetrieveModelsRequest","u":"/docs/reference/grpc","h":"#retrievemodelsrequest","p":521},{"i":669,"t":"RetrieveModelsReply","u":"/docs/reference/grpc","h":"#retrievemodelsreply","p":521},{"i":671,"t":"CreateVersionRequestChunk","u":"/docs/reference/grpc","h":"#createversionrequestchunk","p":521},{"i":673,"t":"CreateVersionReply","u":"/docs/reference/grpc","h":"#createversionreply","p":521},{"i":675,"t":"RetrieveVersionInfosRequest","u":"/docs/reference/grpc","h":"#retrieveversioninfosrequest","p":521},{"i":677,"t":"RetrieveVersionInfosReply","u":"/docs/reference/grpc","h":"#retrieveversioninfosreply","p":521},{"i":679,"t":"RetrieveVersionDataRequest","u":"/docs/reference/grpc","h":"#retrieveversiondatarequest","p":521},{"i":681,"t":"RetrieveVersionDataReplyChunk","u":"/docs/reference/grpc","h":"#retrieveversiondatareplychunk","p":521},{"i":683,"t":"ModelInfo","u":"/docs/reference/grpc","h":"#modelinfo","p":521},{"i":685,"t":"ModelVersionInfo","u":"/docs/reference/grpc","h":"#modelversioninfo","p":521},{"i":687,"t":"Trial Datastore API","u":"/docs/reference/grpc","h":"#trial-datastore-api","p":521},{"i":689,"t":"Service TrialDatastoreSP","u":"/docs/reference/grpc","h":"#service-trialdatastoresp","p":521},{"i":691,"t":"StoredTrialInfo","u":"/docs/reference/grpc","h":"#storedtrialinfo","p":521},{"i":693,"t":"StoredTrialSample","u":"/docs/reference/grpc","h":"#storedtrialsample","p":521},{"i":695,"t":"StoredTrialActorSample","u":"/docs/reference/grpc","h":"#storedtrialactorsample","p":521},{"i":697,"t":"StoredTrialActorSampleReward","u":"/docs/reference/grpc","h":"#storedtrialactorsamplereward","p":521},{"i":699,"t":"StoredTrialActorSampleMessage","u":"/docs/reference/grpc","h":"#storedtrialactorsamplemessage","p":521},{"i":701,"t":"StoredTrialSampleField","u":"/docs/reference/grpc","h":"#storedtrialsamplefield","p":521},{"i":703,"t":"RetrieveTrialsRequest","u":"/docs/reference/grpc","h":"#retrievetrialsrequest","p":521},{"i":705,"t":"RetrieveTrialsReply","u":"/docs/reference/grpc","h":"#retrievetrialsreply","p":521},{"i":707,"t":"RetrieveSamplesRequest","u":"/docs/reference/grpc","h":"#retrievesamplesrequest","p":521},{"i":709,"t":"RetrieveSampleReply","u":"/docs/reference/grpc","h":"#retrievesamplereply","p":521},{"i":711,"t":"AddTrialRequest","u":"/docs/reference/grpc","h":"#addtrialrequest","p":521},{"i":713,"t":"AddTrialReply","u":"/docs/reference/grpc","h":"#addtrialreply","p":521},{"i":715,"t":"AddSampleRequest","u":"/docs/reference/grpc","h":"#addsamplerequest","p":521},{"i":717,"t":"AddSamplesReply","u":"/docs/reference/grpc","h":"#addsamplesreply","p":521},{"i":719,"t":"DeleteTrialsRequest","u":"/docs/reference/grpc","h":"#deletetrialsrequest","p":521},{"i":721,"t":"DeleteTrialsReply","u":"/docs/reference/grpc","h":"#deletetrialsreply","p":521},{"i":723,"t":"TrialSamplesFileHeader","u":"/docs/reference/grpc","h":"#trialsamplesfileheader","p":521},{"i":726,"t":"Installation","u":"/docs/reference/javascript","h":"#installation","p":725},{"i":728,"t":"General usage","u":"/docs/reference/javascript","h":"#general-usage","p":725},{"i":729,"t":"The spec file","u":"/docs/reference/javascript","h":"#the-spec-file","p":725},{"i":731,"t":"Trial Parameters","u":"/docs/reference/javascript","h":"#trial-parameters","p":725},{"i":733,"t":"CogSettings.js","u":"/docs/reference/javascript","h":"#cogsettingsjs","p":725},{"i":735,"t":"Imports","u":"/docs/reference/javascript","h":"#imports","p":725},{"i":737,"t":"class cogment.Context","u":"/docs/reference/javascript","h":"#class-cogmentcontext","p":725},{"i":739,"t":"constructor(userId, cogSettings)","u":"/docs/reference/javascript","h":"#constructoruserid-cogsettings","p":725},{"i":741,"t":"getController(endpoint)","u":"/docs/reference/javascript","h":"#getcontrollerendpoint","p":725},{"i":743,"t":"async joinTrial(trialId, endpoint, actorName)","u":"/docs/reference/javascript","h":"#async-jointrialtrialid-endpoint-actorname","p":725},{"i":745,"t":"registerActor(impl, actorName, actorClass)","u":"/docs/reference/javascript","h":"#registeractorimpl-actorname-actorclass","p":725},{"i":747,"t":"class Controller","u":"/docs/reference/javascript","h":"#class-controller","p":725},{"i":749,"t":"async startTrial(trialConfig = undefined, trialIdRequested = undefined)","u":"/docs/reference/javascript","h":"#async-starttrialtrialconfig--undefined-trialidrequested--undefined","p":725},{"i":751,"t":"terminateTrial(trialIds, hard = false)","u":"/docs/reference/javascript","h":"#terminatetrialtrialids-hard--false","p":725},{"i":753,"t":"async getTrialInfo(trialIds)","u":"/docs/reference/javascript","h":"#async-gettrialinfotrialids","p":725},{"i":755,"t":"async watchTrials(trialStateFilters=[])","u":"/docs/reference/javascript","h":"#async-watchtrialstrialstatefilters","p":725},{"i":757,"t":"async getActors(trialId)","u":"/docs/reference/javascript","h":"#async-getactorstrialid","p":725},{"i":759,"t":"async getRemoteVersions()","u":"/docs/reference/javascript","h":"#async-getremoteversions","p":725},{"i":761,"t":"class Session","u":"/docs/reference/javascript","h":"#class-session","p":725},{"i":763,"t":"getTrialId()","u":"/docs/reference/javascript","h":"#gettrialid","p":725},{"i":765,"t":"getTickId()","u":"/docs/reference/javascript","h":"#gettickid","p":725},{"i":767,"t":"isTrialOver()","u":"/docs/reference/javascript","h":"#istrialover","p":725},{"i":769,"t":"sendingDone()","u":"/docs/reference/javascript","h":"#sendingdone","p":725},{"i":771,"t":"class ActorSession extends Session","u":"/docs/reference/javascript","h":"#class-actorsession-extends-session","p":725},{"i":772,"t":"start(autoDoneSending=True)","u":"/docs/reference/javascript","h":"#startautodonesendingtrue","p":725},{"i":774,"t":"async *eventLoop()","u":"/docs/reference/javascript","h":"#async-eventloop","p":725},{"i":776,"t":"doAction(action)","u":"/docs/reference/javascript","h":"#doactionaction","p":725},{"i":778,"t":"sendMessage(payload, to)","u":"/docs/reference/javascript","h":"#sendmessagepayload-to","p":725},{"i":780,"t":"enum cogment.TrialState","u":"/docs/reference/javascript","h":"#enum-cogmenttrialstate","p":725},{"i":782,"t":"class TrialInfo","u":"/docs/reference/javascript","h":"#class-trialinfo","p":725},{"i":784,"t":"class RecvEvent","u":"/docs/reference/javascript","h":"#class-recvevent","p":725},{"i":786,"t":"enum cogment.EventType","u":"/docs/reference/javascript","h":"#enum-cogmenteventtype","p":725},{"i":788,"t":"type ObservationT","u":"/docs/reference/javascript","h":"#type-observationt","p":725},{"i":790,"t":"type ActionT","u":"/docs/reference/javascript","h":"#type-actiont","p":725},{"i":792,"t":"class MessageBase","u":"/docs/reference/javascript","h":"#class-messagebase","p":725},{"i":794,"t":"type Reward","u":"/docs/reference/javascript","h":"#type-reward","p":725},{"i":796,"t":"interface IRewardSource","u":"/docs/reference/javascript","h":"#interface-irewardsource","p":725},{"i":800,"t":"Parameters reference","u":"/docs/reference/parameters","h":"#parameters-reference","p":798},{"i":802,"t":"Parameter file","u":"/docs/reference/parameters","h":"#parameter-file","p":798},{"i":804,"t":"Parameters and pre-trial hooks","u":"/docs/reference/parameters","h":"#parameters-and-pre-trial-hooks","p":798},{"i":806,"t":"Cogment endpoints","u":"/docs/reference/parameters","h":"#cogment-endpoints","p":798},{"i":808,"t":"grpc scheme","u":"/docs/reference/parameters","h":"#grpc-scheme","p":798},{"i":810,"t":"cogment scheme","u":"/docs/reference/parameters","h":"#cogment-scheme","p":798},{"i":813,"t":"Installation","u":"/docs/reference/python","h":"#installation","p":812},{"i":815,"t":"General usage","u":"/docs/reference/python","h":"#general-usage","p":812},{"i":816,"t":"asyncio","u":"/docs/reference/python","h":"#asyncio","p":812},{"i":818,"t":"Logging","u":"/docs/reference/python","h":"#logging","p":812},{"i":820,"t":"Trial Specifications","u":"/docs/reference/python","h":"#trial-specifications","p":812},{"i":822,"t":"Trial Parameters","u":"/docs/reference/python","h":"#trial-parameters","p":812},{"i":824,"t":"Compiling the spec file into cog_settings.py","u":"/docs/reference/python","h":"#compiling-the-spec-file-into-cog_settingspy","p":812},{"i":826,"t":"Top-level import","u":"/docs/reference/python","h":"#top-level-import","p":812},{"i":828,"t":"class cogment.Context","u":"/docs/reference/python","h":"#class-cogmentcontext","p":812},{"i":830,"t":"__init__(self, user_id, cog_settings, asyncio_loop=None, prometheus_registry=prometheus_client.core.REGISTRY, directory_endpoint=None, directory_auth_token=None)","u":"/docs/reference/python","h":"#__init__self-user_id-cog_settings-asyncio_loopnone-prometheus_registryprometheus_clientcoreregistry-directory_endpointnone-directory_auth_tokennone","p":812},{"i":832,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself","p":812},{"i":834,"t":"async serve_all_registered(self, served_endpoint=ServedEndpoint(), prometheus_port=None, directory_registration_host=None)","u":"/docs/reference/python","h":"#async-serve_all_registeredself-served_endpointservedendpoint-prometheus_portnone-directory_registration_hostnone","p":812},{"i":836,"t":"async get_controller(self, endpoint=Endpoint())","u":"/docs/reference/python","h":"#async-get_controllerself-endpointendpoint","p":812},{"i":838,"t":"async get_datastore(self, endpoint=Endpoint())","u":"/docs/reference/python","h":"#async-get_datastoreself-endpointendpoint","p":812},{"i":840,"t":"async get_model_registry_v2(self, endpoint=Endpoint())","u":"/docs/reference/python","h":"#async-get_model_registry_v2self-endpointendpoint","p":812},{"i":842,"t":"async join_trial(self, trial_id, endpoint=Endpoint(), impl_name=None, actor_name=None, actor_class=None)","u":"/docs/reference/python","h":"#async-join_trialself-trial_id-endpointendpoint-impl_namenone-actor_namenone-actor_classnone","p":812},{"i":844,"t":"register_environment(self, impl, impl_name, properties={})","u":"/docs/reference/python","h":"#register_environmentself-impl-impl_name-properties","p":812},{"i":846,"t":"register_actor(self, impl, impl_name, actor_classes=[], properties={})","u":"/docs/reference/python","h":"#register_actorself-impl-impl_name-actor_classes-properties","p":812},{"i":848,"t":"register_pre_trial_hook(self, impl, properties={})","u":"/docs/reference/python","h":"#register_pre_trial_hookself-impl-properties","p":812},{"i":850,"t":"register_datalog(self, impl, properties={})","u":"/docs/reference/python","h":"#register_datalogself-impl-properties","p":812},{"i":852,"t":"class Controller","u":"/docs/reference/python","h":"#class-controller","p":812},{"i":854,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-1","p":812},{"i":856,"t":"async start_trial(self, trial_config=None, trial_id_requested=None, trial_params=None)","u":"/docs/reference/python","h":"#async-start_trialself-trial_confignone-trial_id_requestednone-trial_paramsnone","p":812},{"i":858,"t":"async terminate_trial(self, trial_ids, hard=False)","u":"/docs/reference/python","h":"#async-terminate_trialself-trial_ids-hardfalse","p":812},{"i":860,"t":"async get_trial_info(self, trial_ids)","u":"/docs/reference/python","h":"#async-get_trial_infoself-trial_ids","p":812},{"i":862,"t":"async watch_trials(self, trial_state_filters=[], full_info=False)","u":"/docs/reference/python","h":"#async-watch_trialsself-trial_state_filters-full_infofalse","p":812},{"i":864,"t":"async get_actors(self, trial_id)","u":"/docs/reference/python","h":"#async-get_actorsself-trial_id","p":812},{"i":866,"t":"async get_remote_versions(self)","u":"/docs/reference/python","h":"#async-get_remote_versionsself","p":812},{"i":868,"t":"class Datastore","u":"/docs/reference/python","h":"#class-datastore","p":812},{"i":870,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-2","p":812},{"i":872,"t":"async get_trials(self, ids=[], properties={})","u":"/docs/reference/python","h":"#async-get_trialsself-ids-properties","p":812},{"i":874,"t":"async all_trials(self, bundle_size=1, wait_for_trials=0, properties={}, ids=[])","u":"/docs/reference/python","h":"#async-all_trialsself-bundle_size1-wait_for_trials0-properties-ids","p":812},{"i":876,"t":"async delete_trials(self, ids)","u":"/docs/reference/python","h":"#async-delete_trialsself-ids","p":812},{"i":878,"t":"async all_samples(self, trial_infos, actor_names=[], actor_classes=[], actor_implementations=[], fields=[])","u":"/docs/reference/python","h":"#async-all_samplesself-trial_infos-actor_names-actor_classes-actor_implementations-fields","p":812},{"i":880,"t":"class ModelRegistry","u":"/docs/reference/python","h":"#class-modelregistry","p":812},{"i":882,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-3","p":812},{"i":884,"t":"async store_model(self, name, model, iteration_properties=None)","u":"/docs/reference/python","h":"#async-store_modelself-name-model-iteration_propertiesnone","p":812},{"i":886,"t":"async publish_model(self, name, model, iteration_properties=None)","u":"/docs/reference/python","h":"#async-publish_modelself-name-model-iteration_propertiesnone","p":812},{"i":888,"t":"async retrieve_model(self, name, iteration=-1)","u":"/docs/reference/python","h":"#async-retrieve_modelself-name-iteration-1","p":812},{"i":890,"t":"async remove_model(self, name)","u":"/docs/reference/python","h":"#async-remove_modelself-name","p":812},{"i":892,"t":"async list_models(self)","u":"/docs/reference/python","h":"#async-list_modelsself","p":812},{"i":894,"t":"async list_iterations(self, model_name)","u":"/docs/reference/python","h":"#async-list_iterationsself-model_name","p":812},{"i":896,"t":"async get_iteration_info(self, name, iteration)","u":"/docs/reference/python","h":"#async-get_iteration_infoself-name-iteration","p":812},{"i":898,"t":"async update_model_info(self, name, properties)","u":"/docs/reference/python","h":"#async-update_model_infoself-name-properties","p":812},{"i":900,"t":"async get_model_info(self, name)","u":"/docs/reference/python","h":"#async-get_model_infoself-name","p":812},{"i":902,"t":"async iteration_updates(self, model_name)","u":"/docs/reference/python","h":"#async-iteration_updatesself-model_name","p":812},{"i":904,"t":"async track_latest_model(self, name, deserialize_func=None, initial_wait=0)","u":"/docs/reference/python","h":"#async-track_latest_modelself-name-deserialize_funcnone-initial_wait0","p":812},{"i":906,"t":"class Session","u":"/docs/reference/python","h":"#class-session","p":812},{"i":908,"t":"get_trial_id(self)","u":"/docs/reference/python","h":"#get_trial_idself","p":812},{"i":910,"t":"get_tick_id(self)","u":"/docs/reference/python","h":"#get_tick_idself","p":812},{"i":912,"t":"is_trial_over(self)","u":"/docs/reference/python","h":"#is_trial_overself","p":812},{"i":914,"t":"sending_done(self)","u":"/docs/reference/python","h":"#sending_doneself","p":812},{"i":916,"t":"add_reward(self, value, confidence, to, tick_id=-1, user_data=None)","u":"/docs/reference/python","h":"#add_rewardself-value-confidence-to-tick_id-1-user_datanone","p":812},{"i":918,"t":"class EnvironmentSession(Session)","u":"/docs/reference/python","h":"#class-environmentsessionsession","p":812},{"i":920,"t":"start(self, observations = None, auto_done_sending=True)","u":"/docs/reference/python","h":"#startself-observations--none-auto_done_sendingtrue","p":812},{"i":922,"t":"async all_events(self)","u":"/docs/reference/python","h":"#async-all_eventsself","p":812},{"i":924,"t":"produce_observations(self, observations)","u":"/docs/reference/python","h":"#produce_observationsself-observations","p":812},{"i":926,"t":"end(self, final_observations)","u":"/docs/reference/python","h":"#endself-final_observations","p":812},{"i":928,"t":"get_active_actors(self)","u":"/docs/reference/python","h":"#get_active_actorsself","p":812},{"i":930,"t":"send_message(self, payload, to)","u":"/docs/reference/python","h":"#send_messageself-payload-to","p":812},{"i":932,"t":"class ActorSession(Session)","u":"/docs/reference/python","h":"#class-actorsessionsession","p":812},{"i":934,"t":"start(self, auto_done_sending=True)","u":"/docs/reference/python","h":"#startself-auto_done_sendingtrue","p":812},{"i":936,"t":"async all_events(self)","u":"/docs/reference/python","h":"#async-all_eventsself-1","p":812},{"i":938,"t":"do_action(self, action)","u":"/docs/reference/python","h":"#do_actionself-action","p":812},{"i":940,"t":"send_message(self, payload, to)","u":"/docs/reference/python","h":"#send_messageself-payload-to-1","p":812},{"i":942,"t":"class PrehookSession","u":"/docs/reference/python","h":"#class-prehooksession","p":812},{"i":944,"t":"get_trial_id(self)","u":"/docs/reference/python","h":"#get_trial_idself-1","p":812},{"i":946,"t":"get_user_id(self)","u":"/docs/reference/python","h":"#get_user_idself","p":812},{"i":948,"t":"class DatalogSession","u":"/docs/reference/python","h":"#class-datalogsession","p":812},{"i":950,"t":"start(self)","u":"/docs/reference/python","h":"#startself","p":812},{"i":952,"t":"all_samples(self)","u":"/docs/reference/python","h":"#all_samplesself","p":812},{"i":954,"t":"class cogment.Endpoint","u":"/docs/reference/python","h":"#class-cogmentendpoint","p":812},{"i":956,"t":"__init__(self, url=\"cogment://discover\")","u":"/docs/reference/python","h":"#__init__self-urlcogmentdiscover","p":812},{"i":958,"t":"class cogment.ServedEndpoint","u":"/docs/reference/python","h":"#class-cogmentservedendpoint","p":812},{"i":960,"t":"__init__(self, port=0)","u":"/docs/reference/python","h":"#__init__self-port0","p":812},{"i":962,"t":"class cogment.TrialState(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmenttrialstateenumenum","p":812},{"i":964,"t":"class TrialInfo","u":"/docs/reference/python","h":"#class-trialinfo","p":812},{"i":966,"t":"class ActorInfo","u":"/docs/reference/python","h":"#class-actorinfo","p":812},{"i":968,"t":"class RecvEvent","u":"/docs/reference/python","h":"#class-recvevent","p":812},{"i":970,"t":"class cogment.EventType(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmenteventtypeenumenum","p":812},{"i":972,"t":"class RecvObservation","u":"/docs/reference/python","h":"#class-recvobservation","p":812},{"i":974,"t":"class cogment.ActorStatus(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmentactorstatusenumenum","p":812},{"i":976,"t":"class RecvAction","u":"/docs/reference/python","h":"#class-recvaction","p":812},{"i":978,"t":"class RecvMessage","u":"/docs/reference/python","h":"#class-recvmessage","p":812},{"i":980,"t":"class RecvReward","u":"/docs/reference/python","h":"#class-recvreward","p":812},{"i":982,"t":"get_nb_sources(self)","u":"/docs/reference/python","h":"#get_nb_sourcesself","p":812},{"i":984,"t":"all_sources(self)","u":"/docs/reference/python","h":"#all_sourcesself","p":812},{"i":986,"t":"class RecvRewardSource","u":"/docs/reference/python","h":"#class-recvrewardsource","p":812},{"i":988,"t":"class cogment.TrialParameters","u":"/docs/reference/python","h":"#class-cogmenttrialparameters","p":812},{"i":990,"t":"__init__(self, cog_settings, **kwargs)","u":"/docs/reference/python","h":"#__init__self-cog_settings-kwargs","p":812},{"i":992,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-4","p":812},{"i":994,"t":"get_serialization_type(self)","u":"/docs/reference/python","h":"#get_serialization_typeself","p":812},{"i":996,"t":"serialize(self)","u":"/docs/reference/python","h":"#serializeself","p":812},{"i":998,"t":"deserialize(self, raw_string, type=None)","u":"/docs/reference/python","h":"#deserializeself-raw_string-typenone","p":812},{"i":1000,"t":"class cogment.ActorParameters","u":"/docs/reference/python","h":"#class-cogmentactorparameters","p":812},{"i":1002,"t":"__init__(self, cog_settings, class_name, **kwargs)","u":"/docs/reference/python","h":"#__init__self-cog_settings-class_name-kwargs","p":812},{"i":1004,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-5","p":812},{"i":1006,"t":"class cogment.LogSample","u":"/docs/reference/python","h":"#class-cogmentlogsample","p":812},{"i":1008,"t":"__init__(self, params)","u":"/docs/reference/python","h":"#__init__self-params","p":812},{"i":1010,"t":"get_serialization_type(self)","u":"/docs/reference/python","h":"#get_serialization_typeself-1","p":812},{"i":1012,"t":"serialize(self)","u":"/docs/reference/python","h":"#serializeself-1","p":812},{"i":1014,"t":"deserialize(self, raw_string)","u":"/docs/reference/python","h":"#deserializeself-raw_string","p":812},{"i":1016,"t":"all_actor_names(self)","u":"/docs/reference/python","h":"#all_actor_namesself","p":812},{"i":1018,"t":"get_action(self, actor)","u":"/docs/reference/python","h":"#get_actionself-actor","p":812},{"i":1020,"t":"get_observation(self, actor)","u":"/docs/reference/python","h":"#get_observationself-actor","p":812},{"i":1022,"t":"all_rewards(self)","u":"/docs/reference/python","h":"#all_rewardsself","p":812},{"i":1024,"t":"all_messages(self)","u":"/docs/reference/python","h":"#all_messagesself","p":812},{"i":1026,"t":"class ModelInfo","u":"/docs/reference/python","h":"#class-modelinfo","p":812},{"i":1028,"t":"class ModelIterationInfo","u":"/docs/reference/python","h":"#class-modeliterationinfo","p":812},{"i":1030,"t":"class LatestModel","u":"/docs/reference/python","h":"#class-latestmodel","p":812},{"i":1032,"t":"async get(self)","u":"/docs/reference/python","h":"#async-getself","p":812},{"i":1034,"t":"is_deserialized(self)","u":"/docs/reference/python","h":"#is_deserializedself","p":812},{"i":1036,"t":"is_available(self)","u":"/docs/reference/python","h":"#is_availableself","p":812},{"i":1038,"t":"async wait_for_available(self)","u":"/docs/reference/python","h":"#async-wait_for_availableself","p":812},{"i":1040,"t":"async wait_for_newer(self, iteration)","u":"/docs/reference/python","h":"#async-wait_for_newerself-iteration","p":812},{"i":1042,"t":"class cogment.DatastoreFields(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmentdatastorefieldsenumenum","p":812},{"i":1044,"t":"class DatastoreTrialInfo","u":"/docs/reference/python","h":"#class-datastoretrialinfo","p":812},{"i":1046,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-6","p":812},{"i":1048,"t":"class DatastoreSample","u":"/docs/reference/python","h":"#class-datastoresample","p":812},{"i":1050,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-7","p":812},{"i":1052,"t":"class DatastoreActorData","u":"/docs/reference/python","h":"#class-datastoreactordata","p":812},{"i":1054,"t":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-8","p":812},{"i":1056,"t":"all_received_rewards(self)","u":"/docs/reference/python","h":"#all_received_rewardsself","p":812},{"i":1058,"t":"all_sent_rewards(self)","u":"/docs/reference/python","h":"#all_sent_rewardsself","p":812},{"i":1060,"t":"all_received_messages(self)","u":"/docs/reference/python","h":"#all_received_messagesself","p":812},{"i":1062,"t":"all_sent_messages(self)","u":"/docs/reference/python","h":"#all_sent_messagesself","p":812},{"i":1064,"t":"class DatastoreReward","u":"/docs/reference/python","h":"#class-datastorereward","p":812},{"i":1066,"t":"class DatastoreMessage","u":"/docs/reference/python","h":"#class-datastoremessage","p":812},{"i":1072,"t":"General usage","u":"/docs/reference/python-enterprise/runner","h":"#general-usage","p":1070},{"i":1073,"t":"asyncio","u":"/docs/reference/python-enterprise/runner","h":"#asyncio","p":1070},{"i":1075,"t":"Logging","u":"/docs/reference/python-enterprise/runner","h":"#logging","p":1070},{"i":1077,"t":"Trial Specifications","u":"/docs/reference/python-enterprise/runner","h":"#trial-specifications","p":1070},{"i":1079,"t":"Top-level import","u":"/docs/reference/python-enterprise/runner","h":"#top-level-import","p":1070},{"i":1081,"t":"Utilities and Constants","u":"/docs/reference/python-enterprise/runner","h":"#utilities-and-constants","p":1070},{"i":1082,"t":"cogment_enterprise.runner.BATCH_ID_PROPERTY","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerbatch_id_property","p":1070},{"i":1084,"t":"cogment_enterprise.runner.BATCH_TRIAL_INDEX_PROPERTY","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerbatch_trial_index_property","p":1070},{"i":1086,"t":"cogment_enterprise.runner.BATCH_LAST_TRIAL_PROPERTY","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerbatch_last_trial_property","p":1070},{"i":1088,"t":"cogment_enterprise.runner.deserialize_action(serialized_data, actor_class, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_actionserialized_data-actor_class-cog_settings","p":1070},{"i":1090,"t":"cogment_enterprise.runner.deserialize_actor_observation(serialized_data, actor_class, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_actor_observationserialized_data-actor_class-cog_settings","p":1070},{"i":1092,"t":"cogment_enterprise.runner.deserialize_actor_config(serialized_data, actor_class, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_actor_configserialized_data-actor_class-cog_settings","p":1070},{"i":1094,"t":"cogment_enterprise.runner.deserialize_environment_config(serialized_data, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_environment_configserialized_data-cog_settings","p":1070},{"i":1096,"t":"cogment_enterprise.runner.deserialize_trial_config(serialized_data, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_trial_configserialized_data-cog_settings","p":1070},{"i":1098,"t":"class cogment_enterprise.runner.TrialRunner","u":"/docs/reference/python-enterprise/runner","h":"#class-cogment_enterpriserunnertrialrunner","p":1070},{"i":1099,"t":"__init__(self, user_id, cog_settings=None, asyncio_loop=None, directory_endpoint=None, directory_auth_token=None, orchestrator_endpoint=None, datastore_endpoint=None, model_registry=None)","u":"/docs/reference/python-enterprise/runner","h":"#__init__self-user_id-cog_settingsnone-asyncio_loopnone-directory_endpointnone-directory_auth_tokennone-orchestrator_endpointnone-datastore_endpointnone-model_registrynone","p":1070},{"i":1101,"t":"async get_controller(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-get_controllerself","p":1070},{"i":1103,"t":"async get_datastore(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-get_datastoreself","p":1070},{"i":1105,"t":"async get_model_registry(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-get_model_registryself","p":1070},{"i":1107,"t":"async run_simple_batch(self, nb_trials, nb_parallel_trials=1, id=None, pre_trial_callback=None, post_trial_callback=None)","u":"/docs/reference/python-enterprise/runner","h":"#async-run_simple_batchself-nb_trials-nb_parallel_trials1-idnone-pre_trial_callbacknone-post_trial_callbacknone","p":1070},{"i":1109,"t":"async run_simple_training(self, batch, sampler_callback, actor_names=None, max_trial_wait=None)","u":"/docs/reference/python-enterprise/runner","h":"#async-run_simple_trainingself-batch-sampler_callback-actor_namesnone-max_trial_waitnone","p":1070},{"i":1111,"t":"async run_simple_trial_training(self, batch, trial_callback, actor_names=None, max_trial_wait=None)","u":"/docs/reference/python-enterprise/runner","h":"#async-run_simple_trial_trainingself-batch-trial_callback-actor_namesnone-max_trial_waitnone","p":1070},{"i":1113,"t":"class TrialBatch","u":"/docs/reference/python-enterprise/runner","h":"#class-trialbatch","p":1070},{"i":1115,"t":"init(self, id, controller, nb_trials, pre_trial_callback, post_trial_callback, datalog_endpoint)","u":"/docs/reference/python-enterprise/runner","h":"#initself-id-controller-nb_trials-pre_trial_callback-post_trial_callback-datalog_endpoint","p":1070},{"i":1117,"t":"start_trials(self, nb_trials)","u":"/docs/reference/python-enterprise/runner","h":"#start_trialsself-nb_trials","p":1070},{"i":1119,"t":"pause(self)","u":"/docs/reference/python-enterprise/runner","h":"#pauseself","p":1070},{"i":1121,"t":"resume(self)","u":"/docs/reference/python-enterprise/runner","h":"#resumeself","p":1070},{"i":1123,"t":"stop(self)","u":"/docs/reference/python-enterprise/runner","h":"#stopself","p":1070},{"i":1125,"t":"terminate(self, hard=False)","u":"/docs/reference/python-enterprise/runner","h":"#terminateself-hardfalse","p":1070},{"i":1127,"t":"is_running(self)","u":"/docs/reference/python-enterprise/runner","h":"#is_runningself","p":1070},{"i":1129,"t":"nb_trials_run(self)","u":"/docs/reference/python-enterprise/runner","h":"#nb_trials_runself","p":1070},{"i":1131,"t":"async wait(self, timeout)","u":"/docs/reference/python-enterprise/runner","h":"#async-waitself-timeout","p":1070},{"i":1133,"t":"class BatchTrainer","u":"/docs/reference/python-enterprise/runner","h":"#class-batchtrainer","p":1070},{"i":1135,"t":"__init__(self, batch_spec, datastore, model_registry, trial_callback, max_trial_wait)","u":"/docs/reference/python-enterprise/runner","h":"#__init__self-batch_spec-datastore-model_registry-trial_callback-max_trial_wait","p":1070},{"i":1137,"t":"start(self, actor_names=[], actor_classes=[], actor_implementations=[], fields=[])","u":"/docs/reference/python-enterprise/runner","h":"#startself-actor_names-actor_classes-actor_implementations-fields","p":1070},{"i":1139,"t":"terminate(self)","u":"/docs/reference/python-enterprise/runner","h":"#terminateself","p":1070},{"i":1141,"t":"async stop(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-stopself","p":1070},{"i":1143,"t":"is_running(self)","u":"/docs/reference/python-enterprise/runner","h":"#is_runningself-1","p":1070},{"i":1145,"t":"async wait(self, timeout)","u":"/docs/reference/python-enterprise/runner","h":"#async-waitself-timeout-1","p":1070},{"i":1147,"t":"set_nb_parallel_trials(self, nb_trials)","u":"/docs/reference/python-enterprise/runner","h":"#set_nb_parallel_trialsself-nb_trials","p":1070},{"i":1149,"t":"class BatchTrialInfo","u":"/docs/reference/python-enterprise/runner","h":"#class-batchtrialinfo","p":1070},{"i":1151,"t":"class TrainerTrialSession","u":"/docs/reference/python-enterprise/runner","h":"#class-trainertrialsession","p":1070},{"i":1153,"t":"async all_samples(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-all_samplesself","p":1070},{"i":1155,"t":"Callbacks","u":"/docs/reference/python-enterprise/runner","h":"#callbacks","p":1070},{"i":1156,"t":"Use","u":"/docs/reference/python-enterprise/runner","h":"#use","p":1070},{"i":1158,"t":"Pre-Trial Callback","u":"/docs/reference/python-enterprise/runner","h":"#pre-trial-callback","p":1070},{"i":1160,"t":"Post-Trial Callback","u":"/docs/reference/python-enterprise/runner","h":"#post-trial-callback","p":1070},{"i":1162,"t":"Sampler Callback","u":"/docs/reference/python-enterprise/runner","h":"#sampler-callback","p":1070},{"i":1164,"t":"Trial Callback","u":"/docs/reference/python-enterprise/runner","h":"#trial-callback","p":1070}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,6.476]],["t/5",[1,5.541,2,6.064]],["t/7",[3,6.064,4,6.064]],["t/9",[5,3.972,6,2.791,7,4.347,8,3.972]],["t/13",[9,4.352]],["t/15",[10,5.064,11,3.486,12,4.125]],["t/17",[6,3.252,9,2.916,13,4.34]],["t/19",[14,3.894]],["t/21",[12,4.94,15,4.734]],["t/23",[6,3.252,13,4.34,14,2.609]],["t/25",[0,3.725,9,2.503,14,2.24,16,4.347]],["t/27",[17,3.994]],["t/29",[6,3.252,13,4.34,17,2.676]],["t/31",[6,3.894,18,6.064]],["t/33",[19,7.557]],["t/35",[20,5.9]],["t/37",[21,5.504]],["t/39",[9,4.352]],["t/41",[14,3.894]],["t/43",[22,6.064,23,5.197]],["t/45",[23,4.34,24,4.627,25,5.064]],["t/49",[26,4.734,27,4.072]],["t/51",[26,3.953,27,3.401,28,4.627]],["t/53",[9,4.352]],["t/55",[11,4.175,29,5.541]],["t/57",[14,3.894]],["t/59",[14,3.037,30,2.307,31,2.445,32,2.557]],["t/61",[14,3.125,24,5.541]],["t/63",[21,5.504]],["t/65",[17,2.676,33,4.627,34,4.34]],["t/67",[17,3.205,35,6.064]],["t/69",[36,6.156]],["t/70",[37,5.345]],["t/72",[38,6.906]],["t/74",[39,6.906]],["t/75",[37,5.345]],["t/77",[38,6.906]],["t/79",[17,2.676,40,4.125,41,4.125]],["t/81",[17,3.205,42,6.064]],["t/83",[17,3.205,33,5.541]],["t/85",[17,3.205,43,5.197]],["t/87",[17,3.205,44,5.541]],["t/93",[23,5.197,45,5.197]],["t/95",[26,2.644,27,3.611,46,2.903,47,3.387,48,2.275]],["t/97",[17,1.612,20,2.382,40,2.485,41,2.485,49,2.485,50,3.051,51,2.157]],["t/99",[48,2.049,49,2.485,52,2.614,53,2.788,54,3.051,55,2.788,56,3.051]],["t/101",[52,2.903,53,3.095,57,2.131,58,3.095,59,2.644,60,3.387]],["t/103",[9,1.257,14,1.125,17,1.976,48,1.466,49,1.778,51,1.544,61,2.183,62,2.183,63,1.995,64,2.183]],["t/105",[65,3.808,66,2.973,67,3.808,68,3.808,69,3.101]],["t/107",[11,2.992,63,3.972,70,4.347,71,4.347]],["t/109",[72,3.541,73,3.725,74,3.393,75,4.347]],["t/111",[9,2.503,20,3.393,76,3.725,77,4.347]],["t/113",[9,2.916,17,2.676,78,3.486]],["t/115",[59,4.734,79,4.563]],["t/117",[79,4.563,80,5.541]],["t/119",[81,7.557]],["t/123",[6,2.791,14,2.24,82,3.972,83,3.972]],["t/125",[14,2.609,30,3.068,84,3.953]],["t/127",[14,2.609,84,3.953,85,2.093]],["t/129",[12,4.94,15,4.734]],["t/131",[11,4.175,12,4.94]],["t/133",[14,2.609,84,3.953,86,3.688]],["t/135",[14,2.24,86,3.166,87,4.347,88,4.347]],["t/137",[5,3.972,14,2.24,17,2.297,89,4.347]],["t/141",[30,3.068,90,4.34,91,3.323]],["t/143",[30,3.068,91,3.323,92,4.34]],["t/145",[30,3.068,91,3.323,93,5.064]],["t/147",[14,2.24,32,2.919,94,4.347,95,4.347]],["t/149",[96,6.064,97,6.064]],["t/151",[6,2.175,9,1.951,66,2.644,76,2.903,98,3.387,99,3.387]],["t/155",[14,2.609,32,3.401,86,3.688]],["t/157",[0,3.263,100,3.808,101,3.808,102,3.808,103,3.479]],["t/161",[104,7.557]],["t/163",[32,4.072,105,5.541]],["t/165",[37,3.581,106,5.064,107,5.064]],["t/167",[90,4.34,108,5.064,109,5.064]],["t/169",[43,4.34,45,4.34,110,5.064]],["t/171",[27,4.072,48,4.072]],["t/173",[6,2.791,32,2.919,90,3.725,105,3.972]],["t/175",[73,6.476]],["t/177",[31,3.252,111,5.064,112,5.064]],["t/179",[113,7.557]],["t/181",[114,7.557]],["t/183",[115,4.627,116,5.064,117,5.064]],["t/187",[14,2.609,29,4.627,36,4.125]],["t/189",[9,1.951,14,1.745,66,2.644,115,3.095,118,3.387,119,3.387]],["t/191",[6,2.791,14,2.24,72,3.541,92,3.725]],["t/193",[120,5.197,121,6.064]],["t/197",[6,2.791,9,2.503,82,3.972,83,3.972]],["t/199",[9,2.916,30,3.068,84,3.953]],["t/201",[9,2.916,84,3.953,86,3.688]],["t/203",[86,3.688,122,5.064,123,4.125]],["t/205",[11,2.1,37,2.157,55,2.788,124,3.051,125,2.788,126,3.051,127,2.788]],["t/207",[11,1.91,15,2.166,37,1.962,72,2.26,127,2.536,128,2.775,129,2.775,130,2.775]],["t/209",[1,3.479,34,3.263,123,3.101,125,3.479,131,3.479]],["t/211",[9,1.757,51,2.157,123,2.485,132,3.051,133,3.051,134,3.051,135,3.051]],["t/213",[9,2.193,44,3.479,86,2.773,120,3.263,123,3.101]],["t/215",[9,1.757,17,1.612,34,2.614,120,2.614,136,3.051,137,3.051,138,3.051]],["t/219",[139,5.064,140,5.064,141,5.064]],["t/221",[8,3.972,73,3.725,103,3.972,142,4.347]],["t/223",[37,3.581,91,3.323,143,5.064]],["t/225",[91,3.979,144,6.064]],["t/226",[30,3.674,91,3.979]],["t/228",[27,2.919,31,2.791,51,3.074,145,4.347]],["t/230",[146,6.064,147,5.541]],["t/232",[131,4.627,148,5.064,149,4.34]],["t/234",[43,5.197,147,5.541]],["t/238",[66,2.973,150,3.808,151,3.808,152,3.808,153,3.808]],["t/242",[154,4.734,155,5.197]],["t/244",[156,6.476]],["t/246",[157,5.687]],["t/248",[158,5.687]],["t/250",[32,3.401,91,3.323,92,4.34]],["t/252",[159,6.476]],["t/254",[160,3.815,161,4.289]],["t/256",[32,3.401,91,3.323,162,5.064]],["t/258",[159,6.476]],["t/260",[160,3.815,161,4.289]],["t/262",[32,3.401,91,3.323,163,5.064]],["t/264",[159,6.476]],["t/266",[160,3.815,161,4.289]],["t/268",[32,3.401,91,3.323,164,5.064]],["t/272",[160,3.815,161,4.289]],["t/274",[155,6.476]],["t/275",[165,6.156]],["t/277",[166,6.476]],["t/279",[167,5.9]],["t/281",[168,5.9]],["t/283",[169,7.557]],["t/285",[170,7.557]],["t/287",[171,7.557]],["t/289",[172,7.557]],["t/291",[173,7.557]],["t/293",[174,6.064,175,6.064]],["t/295",[176,6.064,177,6.064]],["t/297",[178,6.906]],["t/301",[160,3.815,161,4.289]],["t/303",[27,4.072,49,4.94]],["t/305",[179,7.557]],["t/307",[76,5.197,180,6.064]],["t/309",[27,4.072,181,5.541]],["t/313",[160,3.815,161,4.289]],["t/315",[51,5.345]],["t/317",[165,6.156]],["t/319",[166,6.476]],["t/321",[182,7.557]],["t/323",[183,7.557]],["t/325",[184,7.557]],["t/327",[167,5.9]],["t/329",[168,5.9]],["t/331",[157,5.687]],["t/333",[158,5.687]],["t/335",[185,6.156]],["t/337",[186,6.156]],["t/339",[57,3.186,181,4.627,187,4.125]],["t/341",[31,3.327,37,1.662,45,2.014,188,1.662,189,2.35,190,2.35,191,1.768,192,2.35]],["t/343",[31,3.525,188,1.8,191,1.915,193,2.545,194,2.545,195,2.545,196,2.545]],["t/345",[31,3.525,188,1.8,191,1.915,197,2.181,198,2.545,199,2.545,200,2.545]],["t/347",[31,3.15,37,1.544,188,1.544,191,1.643,201,1.643,202,2.183,203,1.995,204,2.183,205,2.183]],["t/349",[31,3.563,188,1.441,191,1.534,197,1.747,201,1.534,206,2.038,207,2.038,208,2.038,209,2.038]],["t/351",[31,3.409,178,1.746,191,1.438,197,1.638,201,1.438,203,1.746,210,1.911,211,1.911,212,1.911,213,1.911]],["t/355",[160,3.815,161,4.289]],["t/357",[51,5.345]],["t/359",[214,7.557]],["t/361",[215,7.557]],["t/363",[216,7.557]],["t/365",[217,6.906]],["t/367",[157,5.687]],["t/369",[158,5.687]],["t/371",[218,7.557]],["t/373",[185,6.156]],["t/375",[186,6.156]],["t/377",[219,7.557]],["t/379",[220,7.557]],["t/381",[221,7.557]],["t/383",[222,7.557]],["t/385",[223,7.557]],["t/387",[224,7.557]],["t/389",[225,7.557]],["t/391",[167,5.9]],["t/393",[168,5.9]],["t/397",[154,5.9]],["t/398",[157,5.687]],["t/400",[158,5.687]],["t/402",[226,7.557]],["t/404",[69,6.156]],["t/406",[227,5.9]],["t/408",[228,7.557]],["t/412",[154,4.734,155,5.197]],["t/414",[160,3.815,229,6.064]],["t/416",[160,3.815,230,6.064]],["t/418",[160,3.815,231,6.064]],["t/420",[160,3.815,232,4.734]],["t/424",[51,5.345]],["t/426",[165,6.156]],["t/428",[166,6.476]],["t/430",[233,7.557]],["t/432",[234,7.557]],["t/434",[167,5.9]],["t/436",[168,5.9]],["t/438",[157,5.687]],["t/440",[158,5.687]],["t/442",[185,6.156]],["t/444",[186,6.156]],["t/448",[160,3.815,161,4.289]],["t/450",[51,5.345]],["t/452",[235,7.557]],["t/454",[236,7.557]],["t/456",[165,6.156]],["t/458",[237,7.557]],["t/460",[86,5.504]],["t/462",[238,7.557]],["t/464",[167,5.9]],["t/466",[168,5.9]],["t/468",[157,5.687]],["t/470",[158,5.687]],["t/472",[185,6.156]],["t/474",[186,6.156]],["t/476",[57,3.815,239,6.064]],["t/477",[21,5.504]],["t/479",[14,3.894]],["t/483",[58,5.541,240,6.064]],["t/485",[46,6.476]],["t/487",[59,4.734,79,4.563]],["t/489",[79,4.563,80,5.541]],["t/491",[52,5.197,241,6.064]],["t/493",[20,5.9]],["t/495",[242,6.064,243,6.064]],["t/497",[46,6.476]],["t/499",[20,5.9]],["t/501",[59,4.734,79,4.563]],["t/503",[72,4.94,244,6.064]],["t/505",[48,5.075]],["t/507",[59,4.734,79,4.563]],["t/511",[232,5.9]],["t/513",[160,4.754]],["t/515",[17,3.994]],["t/517",[9,4.352]],["t/519",[14,3.125,85,2.506]],["t/523",[74,5.9]],["t/525",[245,7.557]],["t/527",[154,4.734,227,4.734]],["t/529",[154,4.734,246,5.541]],["t/531",[247,7.557]],["t/533",[248,7.557]],["t/535",[249,7.557]],["t/537",[250,7.557]],["t/539",[251,7.557]],["t/541",[252,7.557]],["t/543",[253,7.557]],["t/545",[254,7.557]],["t/547",[255,7.557]],["t/549",[256,7.557]],["t/551",[11,5.203]],["t/553",[15,5.9]],["t/555",[39,6.906]],["t/557",[257,7.557]],["t/559",[36,6.156]],["t/561",[258,7.557]],["t/563",[259,7.557]],["t/565",[260,7.557]],["t/567",[261,7.557]],["t/569",[21,4.417,57,3.815]],["t/571",[30,3.674,262,6.064]],["t/573",[263,7.557]],["t/575",[264,7.557]],["t/577",[265,7.557]],["t/579",[266,7.557]],["t/581",[267,7.557]],["t/583",[268,7.557]],["t/585",[269,6.476]],["t/587",[270,7.557]],["t/589",[271,7.557]],["t/591",[14,3.125,57,3.815]],["t/593",[14,2.609,30,3.068,57,3.186]],["t/595",[14,2.609,32,3.401,57,3.186]],["t/597",[272,7.557]],["t/599",[273,7.557]],["t/601",[274,7.557]],["t/603",[275,7.557]],["t/605",[276,7.557]],["t/607",[277,7.557]],["t/609",[9,3.493,57,3.815]],["t/611",[30,3.674,278,6.064]],["t/613",[279,7.557]],["t/615",[280,7.557]],["t/617",[281,7.557]],["t/619",[282,7.557]],["t/621",[57,3.815,283,6.064]],["t/623",[30,3.674,284,6.064]],["t/625",[285,7.557]],["t/627",[286,7.557]],["t/629",[41,4.94,57,3.815]],["t/631",[30,3.674,287,6.064]],["t/633",[57,3.815,91,3.979]],["t/635",[30,3.674,288,6.064]],["t/637",[289,7.557]],["t/639",[290,7.557]],["t/641",[291,7.557]],["t/643",[292,7.557]],["t/645",[293,7.557]],["t/647",[294,7.557]],["t/649",[295,7.557]],["t/651",[296,7.557]],["t/653",[297,7.557]],["t/655",[57,3.186,188,3.581,298,5.064]],["t/657",[30,3.674,299,6.064]],["t/659",[300,7.557]],["t/661",[301,7.557]],["t/663",[302,7.557]],["t/665",[303,7.557]],["t/667",[304,7.557]],["t/669",[305,7.557]],["t/671",[306,7.557]],["t/673",[307,7.557]],["t/675",[308,7.557]],["t/677",[309,7.557]],["t/679",[310,7.557]],["t/681",[311,7.557]],["t/683",[312,6.906]],["t/685",[313,7.557]],["t/687",[17,2.676,57,3.186,314,4.34]],["t/689",[30,3.674,315,6.064]],["t/691",[316,7.557]],["t/693",[317,7.557]],["t/695",[318,7.557]],["t/697",[319,7.557]],["t/699",[320,7.557]],["t/701",[321,7.557]],["t/703",[322,7.557]],["t/705",[323,7.557]],["t/707",[324,7.557]],["t/709",[325,7.557]],["t/711",[326,7.557]],["t/713",[327,7.557]],["t/715",[328,7.557]],["t/717",[329,7.557]],["t/719",[330,7.557]],["t/721",[331,7.557]],["t/723",[332,7.557]],["t/726",[149,6.476]],["t/728",[74,4.734,187,4.94]],["t/729",[26,4.734,27,4.072]],["t/731",[17,3.205,48,4.072]],["t/733",[333,7.557]],["t/735",[232,5.9]],["t/737",[85,2.506,334,5.541]],["t/739",[335,6.064,336,6.064]],["t/741",[337,7.557]],["t/743",[69,3.541,338,1.796,339,4.347,340,3.972]],["t/745",[340,4.627,341,5.064,342,5.064]],["t/747",[21,4.417,85,2.506]],["t/749",[31,3.175,338,1.261,343,3.051,344,4.944,345,3.051]],["t/751",[31,2.791,346,4.347,347,4.347,348,4.347]],["t/753",[338,2.506,349,6.064]],["t/755",[338,2.506,350,6.064]],["t/757",[338,2.506,351,6.064]],["t/759",[338,2.506,352,6.064]],["t/761",[85,2.506,353,5.197]],["t/763",[354,7.557]],["t/765",[355,7.557]],["t/767",[356,7.557]],["t/769",[357,7.557]],["t/771",[85,1.796,353,3.725,358,4.347,359,4.347]],["t/772",[360,7.557]],["t/774",[338,2.506,361,6.064]],["t/776",[362,7.557]],["t/778",[363,7.557]],["t/780",[364,5.541,365,6.064]],["t/782",[85,2.506,269,5.197]],["t/784",[85,2.506,366,5.541]],["t/786",[364,5.541,367,6.064]],["t/788",[227,4.734,368,6.064]],["t/790",[227,4.734,369,6.064]],["t/792",[85,2.506,370,6.064]],["t/794",[36,4.94,227,4.734]],["t/796",[371,6.064,372,6.064]],["t/800",[48,4.072,373,6.064]],["t/802",[27,4.072,48,4.072]],["t/804",[17,2.297,40,3.541,41,3.541,48,2.919]],["t/806",[6,3.894,69,4.94]],["t/808",[374,6.064,375,5.541]],["t/810",[6,3.894,375,5.541]],["t/813",[149,6.476]],["t/815",[74,4.734,187,4.94]],["t/816",[376,6.906]],["t/818",[377,6.906]],["t/820",[17,3.205,378,5.541]],["t/822",[17,3.205,48,4.072]],["t/824",[26,3.393,27,2.919,28,3.972,379,4.347]],["t/826",[232,3.953,380,4.627,381,4.627]],["t/828",[85,2.506,334,5.541]],["t/830",[382,2.157,383,2.788,384,2.157,385,2.788,386,3.051,387,2.788,388,2.788]],["t/832",[389,5.203]],["t/834",[338,1.573,390,3.808,391,3.808,392,3.808,393,3.808]],["t/836",[338,2.093,394,4.627,395,4.125]],["t/838",[338,2.093,395,4.125,396,4.627]],["t/840",[338,2.093,395,4.125,397,5.064]],["t/842",[338,1.261,395,2.485,398,3.051,399,2.485,400,3.051,401,3.051,402,3.051]],["t/844",[403,4.347,404,3.541,405,3.972,406,3.166]],["t/846",[404,3.101,405,3.479,406,2.773,407,3.808,408,2.865]],["t/848",[404,4.125,406,3.688,409,5.064]],["t/850",[404,4.125,406,3.688,410,5.064]],["t/852",[21,4.417,85,2.506]],["t/854",[389,5.203]],["t/856",[338,1.573,411,3.808,412,3.808,413,3.808,414,3.808]],["t/858",[338,1.796,399,3.541,415,4.347,416,3.972]],["t/860",[338,2.093,399,4.125,417,5.064]],["t/862",[338,1.796,418,4.347,419,4.347,420,4.347]],["t/864",[338,2.093,399,4.125,421,5.064]],["t/866",[338,2.506,422,6.064]],["t/868",[85,2.506,314,5.197]],["t/870",[389,5.203]],["t/872",[338,1.796,406,3.166,423,4.347,424,3.541]],["t/874",[338,1.4,406,2.467,424,2.759,425,3.387,426,3.387,427,3.387]],["t/876",[338,2.093,424,4.125,428,5.064]],["t/878",[338,1.261,408,2.296,429,2.614,430,3.051,431,2.788,432,2.788,433,2.788]],["t/880",[85,2.506,434,6.064]],["t/882",[389,5.203]],["t/884",[78,2.621,188,2.693,338,1.573,435,3.808,436,3.479]],["t/886",[78,2.621,188,2.693,338,1.573,436,3.479,437,3.808]],["t/888",[78,2.621,201,2.865,338,1.573,438,3.808,439,3.479]],["t/890",[78,3.486,338,2.093,440,5.064]],["t/892",[338,2.506,441,6.064]],["t/894",[338,2.093,442,5.064,443,4.627]],["t/896",[78,2.992,201,3.271,338,1.796,444,4.347]],["t/898",[78,2.992,338,1.796,406,3.166,445,4.347]],["t/900",[78,3.486,338,2.093,446,5.064]],["t/902",[338,2.093,443,4.627,447,5.064]],["t/904",[78,2.621,338,1.573,448,3.808,449,3.808,450,3.808]],["t/906",[85,2.506,353,5.197]],["t/908",[451,6.906]],["t/910",[452,7.557]],["t/912",[453,7.557]],["t/914",[454,7.557]],["t/916",[246,3.095,439,3.095,455,3.387,456,3.387,457,3.387,458,3.387]],["t/918",[85,2.506,459,6.064]],["t/920",[11,2.621,31,2.445,460,3.101,461,3.808,462,3.479]],["t/922",[338,2.506,463,5.541]],["t/924",[11,4.175,464,6.064]],["t/926",[465,6.064,466,6.064]],["t/928",[467,7.557]],["t/930",[468,5.541,469,5.541]],["t/932",[85,2.506,470,6.064]],["t/934",[460,4.94,462,5.541]],["t/936",[338,2.506,463,5.541]],["t/938",[15,4.734,471,6.064]],["t/940",[468,5.541,469,5.541]],["t/942",[85,2.506,472,6.064]],["t/944",[451,6.906]],["t/946",[473,7.557]],["t/948",[85,2.506,474,6.064]],["t/950",[460,6.156]],["t/952",[429,6.476]],["t/954",[85,2.506,475,6.064]],["t/956",[382,4.289,476,6.064]],["t/958",[85,2.506,477,6.064]],["t/960",[382,4.289,478,6.064]],["t/962",[85,2.506,479,6.064]],["t/964",[85,2.506,269,5.197]],["t/966",[85,2.506,480,6.064]],["t/968",[85,2.506,366,5.541]],["t/970",[85,2.506,481,6.064]],["t/972",[85,2.506,482,6.064]],["t/974",[85,2.506,483,6.064]],["t/976",[85,2.506,484,6.064]],["t/978",[85,2.506,485,6.064]],["t/980",[85,2.506,486,6.064]],["t/982",[487,7.557]],["t/984",[488,7.557]],["t/986",[85,2.506,489,6.064]],["t/988",[85,2.506,490,6.064]],["t/990",[382,3.581,384,3.581,491,4.627]],["t/992",[389,5.203]],["t/994",[492,6.906]],["t/996",[493,6.906]],["t/998",[494,4.627,495,4.627,496,5.064]],["t/1000",[85,2.506,497,6.064]],["t/1002",[382,3.074,384,3.074,491,3.972,498,4.347]],["t/1004",[389,5.203]],["t/1006",[85,2.506,499,6.064]],["t/1008",[217,5.541,382,4.289]],["t/1010",[492,6.906]],["t/1012",[493,6.906]],["t/1014",[494,5.541,495,5.541]],["t/1016",[500,7.557]],["t/1018",[14,3.125,501,6.064]],["t/1020",[14,3.125,502,6.064]],["t/1022",[503,7.557]],["t/1024",[504,7.557]],["t/1026",[85,2.506,312,5.541]],["t/1028",[85,2.506,505,6.064]],["t/1030",[85,2.506,506,6.064]],["t/1032",[338,2.506,507,6.064]],["t/1034",[508,7.557]],["t/1036",[509,7.557]],["t/1038",[338,2.506,510,6.064]],["t/1040",[201,3.81,338,2.093,511,5.064]],["t/1042",[85,2.506,512,6.064]],["t/1044",[85,2.506,513,6.064]],["t/1046",[389,5.203]],["t/1048",[85,2.506,514,6.064]],["t/1050",[389,5.203]],["t/1052",[85,2.506,515,6.064]],["t/1054",[389,5.203]],["t/1056",[516,7.557]],["t/1058",[517,7.557]],["t/1060",[518,7.557]],["t/1062",[519,7.557]],["t/1064",[85,2.506,520,6.064]],["t/1066",[85,2.506,521,6.064]],["t/1072",[74,4.734,187,4.94]],["t/1073",[376,6.906]],["t/1075",[377,6.906]],["t/1077",[17,3.205,378,5.541]],["t/1079",[232,3.953,380,4.627,381,4.627]],["t/1081",[522,6.064,523,6.064]],["t/1082",[524,7.557]],["t/1084",[525,7.557]],["t/1086",[526,7.557]],["t/1088",[384,3.581,408,3.81,527,5.064]],["t/1090",[384,3.581,408,3.81,528,5.064]],["t/1092",[384,3.581,408,3.81,529,5.064]],["t/1094",[384,4.289,530,6.064]],["t/1096",[384,4.289,531,6.064]],["t/1098",[85,2.506,532,6.064]],["t/1099",[382,1.8,383,2.325,385,2.325,387,2.325,388,2.325,533,2.545,534,2.545,535,2.545,536,2.545]],["t/1101",[338,2.506,394,5.541]],["t/1103",[338,2.506,396,5.541]],["t/1105",[338,2.506,537,6.064]],["t/1107",[338,1.261,538,3.051,539,2.485,540,3.051,541,3.051,542,3.051,543,3.051]],["t/1109",[338,1.4,544,3.387,545,3.095,546,3.387,547,3.095,548,3.095]],["t/1111",[338,1.4,545,3.095,547,3.095,548,3.095,549,3.387,550,3.095]],["t/1113",[85,2.506,551,6.064]],["t/1115",[21,2.222,424,2.485,539,2.485,552,3.051,553,3.051,554,3.051,555,3.051]],["t/1117",[539,4.94,556,6.064]],["t/1119",[557,7.557]],["t/1121",[558,7.557]],["t/1123",[559,6.906]],["t/1125",[416,5.541,560,5.541]],["t/1127",[561,6.906]],["t/1129",[562,7.557]],["t/1131",[156,4.34,338,2.093,563,4.627]],["t/1133",[85,2.506,564,6.064]],["t/1135",[314,2.903,382,2.396,550,3.095,565,3.387,566,3.387,567,3.387]],["t/1137",[408,2.865,431,3.479,432,3.479,433,3.479,460,3.101]],["t/1139",[560,6.906]],["t/1141",[338,2.506,559,5.541]],["t/1143",[561,6.906]],["t/1145",[156,4.34,338,2.093,563,4.627]],["t/1147",[539,4.94,568,6.064]],["t/1149",[85,2.506,569,6.064]],["t/1151",[85,2.506,570,6.064]],["t/1153",[338,2.506,429,5.197]],["t/1155",[571,5.9]],["t/1156",[66,5.9]],["t/1158",[17,2.676,40,4.125,571,3.953]],["t/1160",[17,2.676,571,3.953,572,5.064]],["t/1162",[571,4.734,573,6.064]],["t/1164",[17,3.205,571,4.734]]],"invertedIndex":[["",{"_index":31,"t":{"59":{"position":[[14,1]]},"177":{"position":[[9,1]]},"228":{"position":[[14,1]]},"341":{"position":[[114,1],[124,1],[163,2]]},"343":{"position":[[88,1],[98,1],[129,2]]},"345":{"position":[[95,1],[105,1],[139,2]]},"347":{"position":[[114,1],[124,1],[157,2]]},"349":{"position":[[81,1],[123,1],[133,1],[173,2]]},"351":{"position":[[79,1],[120,1],[130,1],[181,2]]},"749":{"position":[[29,1],[59,1]]},"751":{"position":[[30,1]]},"920":{"position":[[25,1]]}}}],["1",{"_index":439,"t":{"888":{"position":[[44,2]]},"916":{"position":[[49,2]]}}}],["8.5",{"_index":99,"t":{"151":{"position":[[5,4]]}}}],["__init__(self",{"_index":382,"t":{"830":{"position":[[0,14]]},"956":{"position":[[0,14]]},"960":{"position":[[0,14]]},"990":{"position":[[0,14]]},"1002":{"position":[[0,14]]},"1008":{"position":[[0,14]]},"1099":{"position":[[0,14]]},"1135":{"position":[[0,14]]}}}],["action",{"_index":15,"t":{"21":{"position":[[0,6]]},"129":{"position":[[0,6]]},"207":{"position":[[64,7]]},"553":{"position":[[0,6]]},"938":{"position":[[16,7]]}}}],["actionset",{"_index":259,"t":{"563":{"position":[[0,9]]}}}],["actiont",{"_index":369,"t":{"790":{"position":[[5,7]]}}}],["actor",{"_index":14,"t":{"19":{"position":[[0,6]]},"23":{"position":[[4,6]]},"25":{"position":[[21,6]]},"41":{"position":[[0,6]]},"57":{"position":[[0,5]]},"59":{"position":[[8,5],[23,5]]},"61":{"position":[[0,5]]},"103":{"position":[[102,6]]},"123":{"position":[[40,6]]},"125":{"position":[[13,5]]},"127":{"position":[[13,5]]},"133":{"position":[[13,5]]},"135":{"position":[[28,5]]},"137":{"position":[[17,6]]},"147":{"position":[[24,6]]},"155":{"position":[[7,5]]},"187":{"position":[[23,6]]},"189":{"position":[[9,6]]},"191":{"position":[[18,5]]},"479":{"position":[[0,5]]},"519":{"position":[[0,5]]},"591":{"position":[[0,5]]},"593":{"position":[[8,5]]},"595":{"position":[[7,5]]},"1018":{"position":[[17,6]]},"1020":{"position":[[22,6]]}}}],["actor_class",{"_index":408,"t":{"846":{"position":[[38,17]]},"878":{"position":[[53,17]]},"1088":{"position":[[62,12]]},"1090":{"position":[[73,12]]},"1092":{"position":[[68,12]]},"1137":{"position":[[28,17]]}}}],["actor_class=non",{"_index":402,"t":{"842":{"position":[[87,17]]}}}],["actor_implement",{"_index":432,"t":{"878":{"position":[[71,25]]},"1137":{"position":[[46,25]]}}}],["actor_nam",{"_index":431,"t":{"878":{"position":[[37,15]]},"1137":{"position":[[12,15]]}}}],["actor_name=non",{"_index":401,"t":{"842":{"position":[[70,16]]}}}],["actor_names=non",{"_index":547,"t":{"1109":{"position":[[57,17]]},"1111":{"position":[[61,17]]}}}],["actor_port",{"_index":215,"t":{"361":{"position":[[0,10]]}}}],["actor_web_port",{"_index":216,"t":{"363":{"position":[[0,14]]}}}],["actorclass",{"_index":342,"t":{"745":{"position":[[31,11]]}}}],["actorinfo",{"_index":480,"t":{"966":{"position":[[6,9]]}}}],["actorinitialinput",{"_index":276,"t":{"605":{"position":[[0,17]]}}}],["actorinitialoutput",{"_index":277,"t":{"607":{"position":[[0,18]]}}}],["actornam",{"_index":340,"t":{"743":{"position":[[35,10]]},"745":{"position":[[20,10]]}}}],["actorparam",{"_index":254,"t":{"545":{"position":[[0,11]]}}}],["actorruntrialinput",{"_index":274,"t":{"601":{"position":[[0,18]]}}}],["actorruntrialoutput",{"_index":275,"t":{"603":{"position":[[0,19]]}}}],["actorsess",{"_index":358,"t":{"771":{"position":[[6,12]]}}}],["actorsession(sess",{"_index":470,"t":{"932":{"position":[[6,21]]}}}],["ad",{"_index":90,"t":{"141":{"position":[[0,6]]},"167":{"position":[[0,6]]},"173":{"position":[[0,6]]}}}],["add_reward(self",{"_index":455,"t":{"916":{"position":[[0,16]]}}}],["addit",{"_index":22,"t":{"43":{"position":[[0,10]]}}}],["addsamplerequest",{"_index":328,"t":{"715":{"position":[[0,16]]}}}],["addsamplesrepli",{"_index":329,"t":{"717":{"position":[[0,15]]}}}],["addtrialrepli",{"_index":327,"t":{"713":{"position":[[0,13]]}}}],["addtrialrequest",{"_index":326,"t":{"711":{"position":[[0,15]]}}}],["all_actor_names(self",{"_index":500,"t":{"1016":{"position":[[0,21]]}}}],["all_events(self",{"_index":463,"t":{"922":{"position":[[6,16]]},"936":{"position":[[6,16]]}}}],["all_messages(self",{"_index":504,"t":{"1024":{"position":[[0,18]]}}}],["all_received_messages(self",{"_index":518,"t":{"1060":{"position":[[0,27]]}}}],["all_received_rewards(self",{"_index":516,"t":{"1056":{"position":[[0,26]]}}}],["all_rewards(self",{"_index":503,"t":{"1022":{"position":[[0,17]]}}}],["all_samples(self",{"_index":429,"t":{"878":{"position":[[6,17]]},"952":{"position":[[0,17]]},"1153":{"position":[[6,17]]}}}],["all_sent_messages(self",{"_index":519,"t":{"1062":{"position":[[0,23]]}}}],["all_sent_rewards(self",{"_index":517,"t":{"1058":{"position":[[0,22]]}}}],["all_sources(self",{"_index":488,"t":{"984":{"position":[[0,17]]}}}],["all_trials(self",{"_index":425,"t":{"874":{"position":[[6,16]]}}}],["api",{"_index":57,"t":{"101":{"position":[[8,3]]},"339":{"position":[[0,3]]},"476":{"position":[[5,3]]},"569":{"position":[[8,3]]},"591":{"position":[[6,3]]},"593":{"position":[[14,3]]},"595":{"position":[[13,3]]},"609":{"position":[[12,3]]},"621":{"position":[[9,3]]},"629":{"position":[[5,3]]},"633":{"position":[[10,3]]},"655":{"position":[[15,3]]},"687":{"position":[[16,3]]}}}],["app",{"_index":107,"t":{"165":{"position":[[17,3]]}}}],["app.j",{"_index":113,"t":{"179":{"position":[[0,6]]}}}],["applic",{"_index":147,"t":{"230":{"position":[[13,11]]},"234":{"position":[[12,11]]}}}],["architectur",{"_index":18,"t":{"31":{"position":[[8,12]]}}}],["archive_dir",{"_index":182,"t":{"321":{"position":[[0,11]]}}}],["async",{"_index":338,"t":{"743":{"position":[[0,5]]},"749":{"position":[[0,5]]},"753":{"position":[[0,5]]},"755":{"position":[[0,5]]},"757":{"position":[[0,5]]},"759":{"position":[[0,5]]},"774":{"position":[[0,5]]},"834":{"position":[[0,5]]},"836":{"position":[[0,5]]},"838":{"position":[[0,5]]},"840":{"position":[[0,5]]},"842":{"position":[[0,5]]},"856":{"position":[[0,5]]},"858":{"position":[[0,5]]},"860":{"position":[[0,5]]},"862":{"position":[[0,5]]},"864":{"position":[[0,5]]},"866":{"position":[[0,5]]},"872":{"position":[[0,5]]},"874":{"position":[[0,5]]},"876":{"position":[[0,5]]},"878":{"position":[[0,5]]},"884":{"position":[[0,5]]},"886":{"position":[[0,5]]},"888":{"position":[[0,5]]},"890":{"position":[[0,5]]},"892":{"position":[[0,5]]},"894":{"position":[[0,5]]},"896":{"position":[[0,5]]},"898":{"position":[[0,5]]},"900":{"position":[[0,5]]},"902":{"position":[[0,5]]},"904":{"position":[[0,5]]},"922":{"position":[[0,5]]},"936":{"position":[[0,5]]},"1032":{"position":[[0,5]]},"1038":{"position":[[0,5]]},"1040":{"position":[[0,5]]},"1101":{"position":[[0,5]]},"1103":{"position":[[0,5]]},"1105":{"position":[[0,5]]},"1107":{"position":[[0,5]]},"1109":{"position":[[0,5]]},"1111":{"position":[[0,5]]},"1131":{"position":[[0,5]]},"1141":{"position":[[0,5]]},"1145":{"position":[[0,5]]},"1153":{"position":[[0,5]]}}}],["asyncio",{"_index":376,"t":{"816":{"position":[[0,7]]},"1073":{"position":[[0,7]]}}}],["asyncio_loop=non",{"_index":385,"t":{"830":{"position":[[38,18]]},"1099":{"position":[[43,18]]}}}],["authent",{"_index":96,"t":{"149":{"position":[[0,14]]}}}],["auto_done_sending=tru",{"_index":462,"t":{"920":{"position":[[33,23]]},"934":{"position":[[12,23]]}}}],["avail",{"_index":24,"t":{"45":{"position":[[11,12]]},"61":{"position":[[6,12]]}}}],["balanc",{"_index":177,"t":{"295":{"position":[[5,9]]}}}],["batch",{"_index":545,"t":{"1109":{"position":[[32,6]]},"1111":{"position":[[38,6]]}}}],["batch_spec",{"_index":565,"t":{"1135":{"position":[[15,11]]}}}],["batchtrain",{"_index":564,"t":{"1133":{"position":[[6,12]]}}}],["batchtrialinfo",{"_index":569,"t":{"1149":{"position":[[6,14]]}}}],["behavior",{"_index":243,"t":{"495":{"position":[[11,9]]}}}],["between",{"_index":16,"t":{"25":{"position":[[13,7]]}}}],["block",{"_index":125,"t":{"205":{"position":[[19,6]]},"209":{"position":[[16,6]]}}}],["bob",{"_index":121,"t":{"193":{"position":[[10,3]]}}}],["break",{"_index":240,"t":{"483":{"position":[[0,8]]}}}],["bug",{"_index":2,"t":{"5":{"position":[[10,4]]}}}],["build",{"_index":146,"t":{"230":{"position":[[0,8]]}}}],["bundle_size=1",{"_index":426,"t":{"874":{"position":[[23,14]]}}}],["cache_max_item",{"_index":183,"t":{"323":{"position":[[0,15]]}}}],["callback",{"_index":571,"t":{"1155":{"position":[[0,9]]},"1158":{"position":[[10,8]]},"1160":{"position":[[11,8]]},"1162":{"position":[[8,8]]},"1164":{"position":[[6,8]]}}}],["case",{"_index":95,"t":{"147":{"position":[[8,4]]}}}],["chang",{"_index":58,"t":{"101":{"position":[[16,8]]},"483":{"position":[[9,7]]}}}],["check",{"_index":175,"t":{"293":{"position":[[7,8]]}}}],["check_on_inquir",{"_index":172,"t":{"289":{"position":[[0,16]]}}}],["class",{"_index":85,"t":{"127":{"position":[[19,5]]},"519":{"position":[[6,7]]},"737":{"position":[[0,5]]},"747":{"position":[[0,5]]},"761":{"position":[[0,5]]},"771":{"position":[[0,5]]},"782":{"position":[[0,5]]},"784":{"position":[[0,5]]},"792":{"position":[[0,5]]},"828":{"position":[[0,5]]},"852":{"position":[[0,5]]},"868":{"position":[[0,5]]},"880":{"position":[[0,5]]},"906":{"position":[[0,5]]},"918":{"position":[[0,5]]},"932":{"position":[[0,5]]},"942":{"position":[[0,5]]},"948":{"position":[[0,5]]},"954":{"position":[[0,5]]},"958":{"position":[[0,5]]},"962":{"position":[[0,5]]},"964":{"position":[[0,5]]},"966":{"position":[[0,5]]},"968":{"position":[[0,5]]},"970":{"position":[[0,5]]},"972":{"position":[[0,5]]},"974":{"position":[[0,5]]},"976":{"position":[[0,5]]},"978":{"position":[[0,5]]},"980":{"position":[[0,5]]},"986":{"position":[[0,5]]},"988":{"position":[[0,5]]},"1000":{"position":[[0,5]]},"1006":{"position":[[0,5]]},"1026":{"position":[[0,5]]},"1028":{"position":[[0,5]]},"1030":{"position":[[0,5]]},"1042":{"position":[[0,5]]},"1044":{"position":[[0,5]]},"1048":{"position":[[0,5]]},"1052":{"position":[[0,5]]},"1064":{"position":[[0,5]]},"1066":{"position":[[0,5]]},"1098":{"position":[[0,5]]},"1113":{"position":[[0,5]]},"1133":{"position":[[0,5]]},"1149":{"position":[[0,5]]},"1151":{"position":[[0,5]]}}}],["class_nam",{"_index":498,"t":{"1002":{"position":[[29,11]]}}}],["client",{"_index":32,"t":{"59":{"position":[[16,6]]},"147":{"position":[[17,6]]},"155":{"position":[[0,6]]},"163":{"position":[[8,6]]},"173":{"position":[[26,6]]},"250":{"position":[[10,6]]},"256":{"position":[[10,6]]},"262":{"position":[[10,6]]},"268":{"position":[[10,6]]},"595":{"position":[[0,6]]}}}],["clone",{"_index":142,"t":{"221":{"position":[[0,7]]}}}],["code",{"_index":73,"t":{"109":{"position":[[4,4]]},"175":{"position":[[0,4]]},"221":{"position":[[23,4]]}}}],["cog_set",{"_index":384,"t":{"830":{"position":[[24,13]]},"990":{"position":[[15,13]]},"1002":{"position":[[15,13]]},"1088":{"position":[[75,13]]},"1090":{"position":[[86,13]]},"1092":{"position":[[81,13]]},"1094":{"position":[[74,13]]},"1096":{"position":[[68,13]]}}}],["cog_settings.pi",{"_index":379,"t":{"824":{"position":[[29,15]]}}}],["cog_settings=non",{"_index":533,"t":{"1099":{"position":[[24,18]]}}}],["cogment",{"_index":6,"t":{"9":{"position":[[15,7]]},"17":{"position":[[29,7]]},"23":{"position":[[19,7]]},"29":{"position":[[19,7]]},"31":{"position":[[0,7]]},"123":{"position":[[10,7]]},"151":{"position":[[16,7]]},"173":{"position":[[7,7]]},"191":{"position":[[29,7]]},"197":{"position":[[10,7]]},"806":{"position":[[0,7]]},"810":{"position":[[0,7]]}}}],["cogment.actorparamet",{"_index":497,"t":{"1000":{"position":[[6,23]]}}}],["cogment.actorstatus(enum.enum",{"_index":483,"t":{"974":{"position":[[6,30]]}}}],["cogment.context",{"_index":334,"t":{"737":{"position":[[6,15]]},"828":{"position":[[6,15]]}}}],["cogment.datastorefields(enum.enum",{"_index":512,"t":{"1042":{"position":[[6,34]]}}}],["cogment.endpoint",{"_index":475,"t":{"954":{"position":[[6,16]]}}}],["cogment.eventtyp",{"_index":367,"t":{"786":{"position":[[5,17]]}}}],["cogment.eventtype(enum.enum",{"_index":481,"t":{"970":{"position":[[6,28]]}}}],["cogment.logsampl",{"_index":499,"t":{"1006":{"position":[[6,17]]}}}],["cogment.servedendpoint",{"_index":477,"t":{"958":{"position":[[6,22]]}}}],["cogment.trialparamet",{"_index":490,"t":{"988":{"position":[[6,23]]}}}],["cogment.trialst",{"_index":365,"t":{"780":{"position":[[5,18]]}}}],["cogment.trialstate(enum.enum",{"_index":479,"t":{"962":{"position":[[6,29]]}}}],["cogment.yaml",{"_index":46,"t":{"95":{"position":[[0,12]]},"485":{"position":[[0,12]]},"497":{"position":[[0,12]]}}}],["cogment_enterprise.runner.batch_id_properti",{"_index":524,"t":{"1082":{"position":[[0,43]]}}}],["cogment_enterprise.runner.batch_last_trial_properti",{"_index":526,"t":{"1086":{"position":[[0,51]]}}}],["cogment_enterprise.runner.batch_trial_index_properti",{"_index":525,"t":{"1084":{"position":[[0,52]]}}}],["cogment_enterprise.runner.deserialize_action(serialized_data",{"_index":527,"t":{"1088":{"position":[[0,61]]}}}],["cogment_enterprise.runner.deserialize_actor_config(serialized_data",{"_index":529,"t":{"1092":{"position":[[0,67]]}}}],["cogment_enterprise.runner.deserialize_actor_observation(serialized_data",{"_index":528,"t":{"1090":{"position":[[0,72]]}}}],["cogment_enterprise.runner.deserialize_environment_config(serialized_data",{"_index":530,"t":{"1094":{"position":[[0,73]]}}}],["cogment_enterprise.runner.deserialize_trial_config(serialized_data",{"_index":531,"t":{"1096":{"position":[[0,67]]}}}],["cogment_enterprise.runner.trialrunn",{"_index":532,"t":{"1098":{"position":[[6,37]]}}}],["cogmentapi.createorupdatemodelrepli",{"_index":192,"t":{"341":{"position":[[126,36]]}}}],["cogmentapi.createorupdatemodelrequest",{"_index":190,"t":{"341":{"position":[[75,38]]}}}],["cogmentapi.createversionrepli",{"_index":205,"t":{"347":{"position":[[126,30]]}}}],["cogmentapi.createversionrequestchunk",{"_index":204,"t":{"347":{"position":[[76,37]]}}}],["cogmentapi.deletemodelrepli",{"_index":196,"t":{"343":{"position":[[100,28]]}}}],["cogmentapi.deletemodelrequest",{"_index":195,"t":{"343":{"position":[[57,30]]}}}],["cogmentapi.modelregistrysp/createorupdatemodel",{"_index":189,"t":{"341":{"position":[[27,47]]}}}],["cogmentapi.modelregistrysp/createvers",{"_index":202,"t":{"347":{"position":[[27,41]]}}}],["cogmentapi.modelregistrysp/deletemodel",{"_index":194,"t":{"343":{"position":[[17,39]]}}}],["cogmentapi.modelregistrysp/retrievemodel",{"_index":198,"t":{"345":{"position":[[18,42]]}}}],["cogmentapi.modelregistrysp/retrieveversiondata",{"_index":211,"t":{"351":{"position":[[32,46]]}}}],["cogmentapi.modelregistrysp/retrieveversioninfo",{"_index":207,"t":{"349":{"position":[[33,47]]}}}],["cogmentapi.retrievemodelsrepli",{"_index":200,"t":{"345":{"position":[[107,31]]}}}],["cogmentapi.retrievemodelsrequest",{"_index":199,"t":{"345":{"position":[[61,33]]}}}],["cogmentapi.retrieveversiondatareplychunk",{"_index":213,"t":{"351":{"position":[[139,41]]}}}],["cogmentapi.retrieveversiondatarequest",{"_index":212,"t":{"351":{"position":[[81,38]]}}}],["cogmentapi.retrieveversioninfosrepli",{"_index":209,"t":{"349":{"position":[[135,37]]}}}],["cogmentapi.retrieveversioninfosrequest",{"_index":208,"t":{"349":{"position":[[83,39]]}}}],["cogset",{"_index":336,"t":{"739":{"position":[[20,12]]}}}],["cogsettings.j",{"_index":333,"t":{"733":{"position":[[0,14]]}}}],["command",{"_index":160,"t":{"254":{"position":[[0,7]]},"260":{"position":[[0,7]]},"266":{"position":[[0,7]]},"272":{"position":[[0,7]]},"301":{"position":[[0,7]]},"313":{"position":[[0,7]]},"355":{"position":[[0,7]]},"414":{"position":[[12,7]]},"416":{"position":[[14,7]]},"418":{"position":[[7,7]]},"420":{"position":[[7,7]]},"448":{"position":[[0,7]]},"513":{"position":[[0,8]]}}}],["common",{"_index":154,"t":{"242":{"position":[[0,6]]},"397":{"position":[[0,6]]},"412":{"position":[[0,6]]},"527":{"position":[[0,6]]},"529":{"position":[[0,6]]}}}],["communicationst",{"_index":261,"t":{"567":{"position":[[0,18]]}}}],["compil",{"_index":28,"t":{"51":{"position":[[0,9]]},"824":{"position":[[0,9]]}}}],["complet",{"_index":87,"t":{"135":{"position":[[0,10]]}}}],["compon",{"_index":23,"t":{"43":{"position":[[11,10]]},"45":{"position":[[0,10]]},"93":{"position":[[9,10]]}}}],["condit",{"_index":151,"t":{"238":{"position":[[10,10]]}}}],["confid",{"_index":456,"t":{"916":{"position":[[24,11]]}}}],["configur",{"_index":51,"t":{"97":{"position":[[52,13]]},"103":{"position":[[59,13]]},"211":{"position":[[0,11]]},"228":{"position":[[0,13]]},"315":{"position":[[0,13]]},"357":{"position":[[0,13]]},"424":{"position":[[0,13]]},"450":{"position":[[0,13]]}}}],["constant",{"_index":523,"t":{"1081":{"position":[[14,9]]}}}],["constructor(userid",{"_index":335,"t":{"739":{"position":[[0,19]]}}}],["consum",{"_index":38,"t":{"72":{"position":[[0,9]]},"77":{"position":[[0,9]]}}}],["context",{"_index":19,"t":{"33":{"position":[[0,7]]}}}],["control",{"_index":21,"t":{"37":{"position":[[0,10]]},"63":{"position":[[0,10]]},"477":{"position":[[0,10]]},"569":{"position":[[0,7]]},"747":{"position":[[6,10]]},"852":{"position":[[6,10]]},"1115":{"position":[[15,11]]}}}],["creat",{"_index":37,"t":{"70":{"position":[[0,8]]},"75":{"position":[[0,8]]},"165":{"position":[[0,8]]},"205":{"position":[[26,8]]},"207":{"position":[[16,8]]},"223":{"position":[[0,8]]},"341":{"position":[[0,6]]},"347":{"position":[[0,6]]}}}],["createorupdatemodelrepli",{"_index":301,"t":{"661":{"position":[[0,24]]}}}],["createorupdatemodelrequest",{"_index":300,"t":{"659":{"position":[[0,26]]}}}],["createversionrepli",{"_index":307,"t":{"673":{"position":[[0,18]]}}}],["createversionrequestchunk",{"_index":306,"t":{"671":{"position":[[0,25]]}}}],["data",{"_index":178,"t":{"297":{"position":[[0,4]]},"351":{"position":[[25,4]]}}}],["data/log",{"_index":283,"t":{"621":{"position":[[0,8]]}}}],["datalog",{"_index":52,"t":{"99":{"position":[[0,7]]},"101":{"position":[[0,7]]},"491":{"position":[[0,7]]}}}],["datalog_endpoint",{"_index":555,"t":{"1115":{"position":[[79,17]]}}}],["datalogparam",{"_index":252,"t":{"541":{"position":[[0,13]]}}}],["datalogsess",{"_index":474,"t":{"948":{"position":[[6,14]]}}}],["datastor",{"_index":314,"t":{"687":{"position":[[6,9]]},"868":{"position":[[6,9]]},"1135":{"position":[[27,10]]}}}],["datastore_endpoint=non",{"_index":535,"t":{"1099":{"position":[[142,24]]}}}],["datastoreactordata",{"_index":515,"t":{"1052":{"position":[[6,18]]}}}],["datastoremessag",{"_index":521,"t":{"1066":{"position":[[6,16]]}}}],["datastorereward",{"_index":520,"t":{"1064":{"position":[[6,15]]}}}],["datastoresampl",{"_index":514,"t":{"1048":{"position":[[6,15]]}}}],["datastoretrialinfo",{"_index":513,"t":{"1044":{"position":[[6,18]]}}}],["default",{"_index":61,"t":{"103":{"position":[[0,7]]}}}],["defin",{"_index":84,"t":{"125":{"position":[[0,8]]},"127":{"position":[[0,8]]},"133":{"position":[[0,8]]},"199":{"position":[[0,8]]},"201":{"position":[[0,8]]}}}],["definit",{"_index":49,"t":{"97":{"position":[[16,10]]},"99":{"position":[[8,10]]},"103":{"position":[[43,10]]},"303":{"position":[[0,10]]}}}],["delet",{"_index":193,"t":{"343":{"position":[[0,6]]}}}],["delete_tri",{"_index":230,"t":{"416":{"position":[[0,13]]}}}],["delete_trials(self",{"_index":428,"t":{"876":{"position":[[6,19]]}}}],["deletemodelrepli",{"_index":303,"t":{"665":{"position":[[0,16]]}}}],["deletemodelrequest",{"_index":302,"t":{"663":{"position":[[0,18]]}}}],["deletetrialsrepli",{"_index":331,"t":{"721":{"position":[[0,17]]}}}],["deletetrialsrequest",{"_index":330,"t":{"719":{"position":[[0,19]]}}}],["delta",{"_index":70,"t":{"107":{"position":[[12,7]]}}}],["deprec",{"_index":242,"t":{"495":{"position":[[0,10]]}}}],["deregist",{"_index":162,"t":{"256":{"position":[[17,10]]}}}],["deregisterrepli",{"_index":295,"t":{"649":{"position":[[0,15]]}}}],["deregisterrequest",{"_index":294,"t":{"647":{"position":[[0,17]]}}}],["deserialize(self",{"_index":494,"t":{"998":{"position":[[0,17]]},"1014":{"position":[[0,17]]}}}],["deserialize_func=non",{"_index":449,"t":{"904":{"position":[[37,22]]}}}],["develop",{"_index":143,"t":{"223":{"position":[[14,11]]}}}],["directori",{"_index":91,"t":{"141":{"position":[[11,9]]},"143":{"position":[[28,9]]},"145":{"position":[[30,9]]},"223":{"position":[[26,9]]},"225":{"position":[[15,10]]},"226":{"position":[[8,11]]},"250":{"position":[[0,9]]},"256":{"position":[[0,9]]},"262":{"position":[[0,9]]},"268":{"position":[[0,9]]},"633":{"position":[[0,9]]}}}],["directory_auth_token=non",{"_index":388,"t":{"830":{"position":[[135,26]]},"1099":{"position":[[87,26]]}}}],["directory_authentication_token",{"_index":158,"t":{"248":{"position":[[0,30]]},"333":{"position":[[0,30]]},"369":{"position":[[0,30]]},"400":{"position":[[0,30]]},"440":{"position":[[0,30]]},"470":{"position":[[0,30]]}}}],["directory_auto_regist",{"_index":218,"t":{"371":{"position":[[0,23]]}}}],["directory_endpoint",{"_index":157,"t":{"246":{"position":[[0,18]]},"331":{"position":[[0,18]]},"367":{"position":[[0,18]]},"398":{"position":[[0,18]]},"438":{"position":[[0,18]]},"468":{"position":[[0,18]]}}}],["directory_endpoint=non",{"_index":387,"t":{"830":{"position":[[110,24]]},"1099":{"position":[[62,24]]}}}],["directory_registration_host",{"_index":185,"t":{"335":{"position":[[0,27]]},"373":{"position":[[0,27]]},"442":{"position":[[0,27]]},"472":{"position":[[0,27]]}}}],["directory_registration_host=non",{"_index":393,"t":{"834":{"position":[[89,33]]}}}],["directory_registration_properti",{"_index":186,"t":{"337":{"position":[[0,33]]},"375":{"position":[[0,33]]},"444":{"position":[[0,33]]},"474":{"position":[[0,33]]}}}],["directorysp",{"_index":288,"t":{"635":{"position":[[8,11]]}}}],["disclosur",{"_index":4,"t":{"7":{"position":[[9,11]]}}}],["discontinu",{"_index":71,"t":{"107":{"position":[[33,12]]}}}],["discov",{"_index":93,"t":{"145":{"position":[[0,11]]}}}],["distribut",{"_index":153,"t":{"238":{"position":[[48,12]]}}}],["do_action(self",{"_index":471,"t":{"938":{"position":[[0,15]]}}}],["doaction(act",{"_index":362,"t":{"776":{"position":[[0,16]]}}}],["each",{"_index":55,"t":{"99":{"position":[[31,4]]},"205":{"position":[[62,4]]}}}],["enabl",{"_index":118,"t":{"189":{"position":[[0,8]]}}}],["end",{"_index":44,"t":{"87":{"position":[[6,3]]},"213":{"position":[[44,3]]}}}],["end(self",{"_index":465,"t":{"926":{"position":[[0,9]]}}}],["endpoint",{"_index":69,"t":{"105":{"position":[[26,9]]},"404":{"position":[[0,8]]},"743":{"position":[[25,9]]},"806":{"position":[[8,9]]}}}],["endpoint=endpoint",{"_index":395,"t":{"836":{"position":[[27,20]]},"838":{"position":[[26,20]]},"840":{"position":[[34,20]]},"842":{"position":[[33,20]]}}}],["enum",{"_index":364,"t":{"780":{"position":[[0,4]]},"786":{"position":[[0,4]]}}}],["envinitialinput",{"_index":281,"t":{"617":{"position":[[0,15]]}}}],["envinitialoutput",{"_index":282,"t":{"619":{"position":[[0,16]]}}}],["environ",{"_index":9,"t":{"13":{"position":[[0,11]]},"17":{"position":[[8,11]]},"25":{"position":[[36,11]]},"39":{"position":[[0,11]]},"53":{"position":[[0,11]]},"103":{"position":[[85,12]]},"111":{"position":[[13,11]]},"113":{"position":[[8,12]]},"151":{"position":[[24,11]]},"189":{"position":[[52,11]]},"197":{"position":[[41,12]]},"199":{"position":[[13,11]]},"201":{"position":[[13,11]]},"211":{"position":[[16,12]]},"213":{"position":[[14,11]]},"215":{"position":[[70,11]]},"517":{"position":[[0,11]]},"609":{"position":[[0,11]]}}}],["environmentparam",{"_index":253,"t":{"543":{"position":[[0,17]]}}}],["environmentsession(sess",{"_index":459,"t":{"918":{"position":[[6,27]]}}}],["environmentsp",{"_index":278,"t":{"611":{"position":[[8,13]]}}}],["envrruntrialinput",{"_index":279,"t":{"613":{"position":[[0,17]]}}}],["envruntrialoutput",{"_index":280,"t":{"615":{"position":[[0,17]]}}}],["event",{"_index":128,"t":{"207":{"position":[[4,5]]}}}],["eventloop",{"_index":361,"t":{"774":{"position":[[6,12]]}}}],["exactli",{"_index":148,"t":{"232":{"position":[[5,7]]}}}],["exampl",{"_index":181,"t":{"309":{"position":[[5,7]]},"339":{"position":[[10,8]]}}}],["execut",{"_index":145,"t":{"228":{"position":[[16,9]]}}}],["export",{"_index":231,"t":{"418":{"position":[[0,6]]}}}],["extend",{"_index":359,"t":{"771":{"position":[[19,7]]}}}],["fals",{"_index":348,"t":{"751":{"position":[[32,6]]}}}],["field",{"_index":433,"t":{"878":{"position":[[97,10]]},"1137":{"position":[[72,10]]}}}],["file",{"_index":27,"t":{"49":{"position":[[9,4]]},"51":{"position":[[19,4]]},"95":{"position":[[29,4],[51,4]]},"171":{"position":[[15,4]]},"228":{"position":[[26,5]]},"303":{"position":[[11,4]]},"309":{"position":[[0,4]]},"729":{"position":[[9,4]]},"802":{"position":[[10,4]]},"824":{"position":[[19,4]]}}}],["file_storag",{"_index":234,"t":{"432":{"position":[[0,12]]}}}],["final_observ",{"_index":466,"t":{"926":{"position":[[10,19]]}}}],["first",{"_index":126,"t":{"205":{"position":[[39,5]]}}}],["full",{"_index":67,"t":{"105":{"position":[[13,4]]}}}],["full_info=fals",{"_index":420,"t":{"862":{"position":[[49,16]]}}}],["function",{"_index":244,"t":{"503":{"position":[[4,15]]}}}],["game",{"_index":123,"t":{"203":{"position":[[30,4]]},"209":{"position":[[57,4]]},"211":{"position":[[67,5]]},"213":{"position":[[52,4]]}}}],["gc_frequenc",{"_index":225,"t":{"389":{"position":[[0,12]]}}}],["gener",{"_index":74,"t":{"109":{"position":[[9,10]]},"523":{"position":[[0,7]]},"728":{"position":[[0,7]]},"815":{"position":[[0,7]]},"1072":{"position":[[0,7]]}}}],["get",{"_index":139,"t":{"219":{"position":[[0,7]]}}}],["get(self",{"_index":507,"t":{"1032":{"position":[[6,9]]}}}],["get_action(self",{"_index":501,"t":{"1018":{"position":[[0,16]]}}}],["get_active_actors(self",{"_index":467,"t":{"928":{"position":[[0,23]]}}}],["get_actors(self",{"_index":421,"t":{"864":{"position":[[6,16]]}}}],["get_controller(self",{"_index":394,"t":{"836":{"position":[[6,20]]},"1101":{"position":[[6,20]]}}}],["get_datastore(self",{"_index":396,"t":{"838":{"position":[[6,19]]},"1103":{"position":[[6,19]]}}}],["get_iteration_info(self",{"_index":444,"t":{"896":{"position":[[6,24]]}}}],["get_model_info(self",{"_index":446,"t":{"900":{"position":[[6,20]]}}}],["get_model_registry(self",{"_index":537,"t":{"1105":{"position":[[6,24]]}}}],["get_model_registry_v2(self",{"_index":397,"t":{"840":{"position":[[6,27]]}}}],["get_nb_sources(self",{"_index":487,"t":{"982":{"position":[[0,20]]}}}],["get_observation(self",{"_index":502,"t":{"1020":{"position":[[0,21]]}}}],["get_remote_versions(self",{"_index":422,"t":{"866":{"position":[[6,25]]}}}],["get_serialization_type(self",{"_index":492,"t":{"994":{"position":[[0,28]]},"1010":{"position":[[0,28]]}}}],["get_tick_id(self",{"_index":452,"t":{"910":{"position":[[0,17]]}}}],["get_trial_id(self",{"_index":451,"t":{"908":{"position":[[0,18]]},"944":{"position":[[0,18]]}}}],["get_trial_info(self",{"_index":417,"t":{"860":{"position":[[6,20]]}}}],["get_trials(self",{"_index":423,"t":{"872":{"position":[[6,16]]}}}],["get_user_id(self",{"_index":473,"t":{"946":{"position":[[0,17]]}}}],["getactors(trialid",{"_index":351,"t":{"757":{"position":[[6,18]]}}}],["getcontroller(endpoint",{"_index":337,"t":{"741":{"position":[[0,23]]}}}],["getremotevers",{"_index":352,"t":{"759":{"position":[[6,19]]}}}],["gettickid",{"_index":355,"t":{"765":{"position":[[0,11]]}}}],["gettrialid",{"_index":354,"t":{"763":{"position":[[0,12]]}}}],["gettrialinfo(trialid",{"_index":349,"t":{"753":{"position":[[6,22]]}}}],["given",{"_index":210,"t":{"351":{"position":[[9,5]]}}}],["good",{"_index":117,"t":{"183":{"position":[[15,4]]}}}],["grpc",{"_index":374,"t":{"808":{"position":[[0,4]]}}}],["grpc_reflect",{"_index":166,"t":{"277":{"position":[[0,15]]},"319":{"position":[[0,15]]},"428":{"position":[[0,15]]}}}],["happen",{"_index":131,"t":{"209":{"position":[[41,8]]},"232":{"position":[[16,9]]}}}],["hard",{"_index":347,"t":{"751":{"position":[[25,4]]}}}],["hard=fals",{"_index":416,"t":{"858":{"position":[[39,11]]},"1125":{"position":[[16,11]]}}}],["has_specs(self",{"_index":389,"t":{"832":{"position":[[0,15]]},"854":{"position":[[0,15]]},"870":{"position":[[0,15]]},"882":{"position":[[0,15]]},"992":{"position":[[0,15]]},"1004":{"position":[[0,15]]},"1046":{"position":[[0,15]]},"1050":{"position":[[0,15]]},"1054":{"position":[[0,15]]}}}],["health",{"_index":174,"t":{"293":{"position":[[0,6]]}}}],["hook",{"_index":41,"t":{"79":{"position":[[10,4]]},"97":{"position":[[10,5]]},"629":{"position":[[0,4]]},"804":{"position":[[25,5]]}}}],["hooks/useactions.j",{"_index":114,"t":{"181":{"position":[[0,19]]}}}],["http",{"_index":239,"t":{"476":{"position":[[0,4]]}}}],["human",{"_index":101,"t":{"157":{"position":[[26,6]]}}}],["id",{"_index":424,"t":{"872":{"position":[[23,7]]},"874":{"position":[[72,7]]},"876":{"position":[[26,4]]},"1115":{"position":[[11,3]]}}}],["id=non",{"_index":541,"t":{"1107":{"position":[[62,8]]}}}],["impl",{"_index":404,"t":{"844":{"position":[[27,5]]},"846":{"position":[[21,5]]},"848":{"position":[[30,5]]},"850":{"position":[[23,5]]}}}],["impl_nam",{"_index":405,"t":{"844":{"position":[[33,10]]},"846":{"position":[[27,10]]}}}],["impl_name=non",{"_index":400,"t":{"842":{"position":[[54,15]]}}}],["implement",{"_index":86,"t":{"133":{"position":[[19,14]]},"135":{"position":[[34,14]]},"155":{"position":[[13,14]]},"201":{"position":[[25,14]]},"203":{"position":[[0,12]]},"213":{"position":[[26,14]]},"460":{"position":[[0,14]]}}}],["import",{"_index":232,"t":{"420":{"position":[[0,6]]},"511":{"position":[[0,6]]},"735":{"position":[[0,7]]},"826":{"position":[[10,6]]},"1079":{"position":[[10,6]]}}}],["index.css",{"_index":112,"t":{"177":{"position":[[11,9]]}}}],["index.j",{"_index":111,"t":{"177":{"position":[[0,8]]}}}],["info",{"_index":206,"t":{"349":{"position":[[25,5]]}}}],["inform",{"_index":119,"t":{"189":{"position":[[31,11]]}}}],["init(self",{"_index":552,"t":{"1115":{"position":[[0,10]]}}}],["initi",{"_index":124,"t":{"205":{"position":[[4,14]]}}}],["initial_wait=0",{"_index":450,"t":{"904":{"position":[[60,15]]}}}],["inquir",{"_index":163,"t":{"262":{"position":[[17,7]]}}}],["inquirerepli",{"_index":297,"t":{"653":{"position":[[0,12]]}}}],["inquirerequest",{"_index":296,"t":{"651":{"position":[[0,14]]}}}],["instal",{"_index":149,"t":{"232":{"position":[[33,8]]},"726":{"position":[[0,12]]},"813":{"position":[[0,12]]}}}],["interact",{"_index":0,"t":{"3":{"position":[[0,8]]},"25":{"position":[[0,12]]},"157":{"position":[[0,11]]}}}],["interfac",{"_index":371,"t":{"796":{"position":[[0,9]]}}}],["irewardsourc",{"_index":372,"t":{"796":{"position":[[10,13]]}}}],["is_available(self",{"_index":509,"t":{"1036":{"position":[[0,18]]}}}],["is_deserialized(self",{"_index":508,"t":{"1034":{"position":[[0,21]]}}}],["is_running(self",{"_index":561,"t":{"1127":{"position":[[0,16]]},"1143":{"position":[[0,16]]}}}],["is_trial_over(self",{"_index":453,"t":{"912":{"position":[[0,19]]}}}],["istrialov",{"_index":356,"t":{"767":{"position":[[0,13]]}}}],["iter",{"_index":201,"t":{"347":{"position":[[15,9]]},"349":{"position":[[15,9]]},"351":{"position":[[15,9]]},"888":{"position":[[33,10]]},"896":{"position":[[37,10]]},"1040":{"position":[[27,10]]}}}],["iteration_properties=non",{"_index":436,"t":{"884":{"position":[[37,26]]},"886":{"position":[[39,26]]}}}],["iteration_updates(self",{"_index":447,"t":{"902":{"position":[[6,23]]}}}],["javascript",{"_index":80,"t":{"117":{"position":[[0,10]]},"489":{"position":[[0,10]]}}}],["join_trial(self",{"_index":398,"t":{"842":{"position":[[6,16]]}}}],["jointrial(trialid",{"_index":339,"t":{"743":{"position":[[6,18]]}}}],["know",{"_index":83,"t":{"123":{"position":[[26,4]]},"197":{"position":[[26,4]]}}}],["kwarg",{"_index":491,"t":{"990":{"position":[[29,9]]},"1002":{"position":[[41,9]]}}}],["latestmodel",{"_index":506,"t":{"1030":{"position":[[6,11]]}}}],["level",{"_index":381,"t":{"826":{"position":[[4,5]]},"1079":{"position":[[4,5]]}}}],["lifecycle_port",{"_index":214,"t":{"359":{"position":[[0,14]]}}}],["lifetim",{"_index":42,"t":{"81":{"position":[[6,8]]}}}],["limit",{"_index":245,"t":{"525":{"position":[[0,11]]}}}],["line",{"_index":161,"t":{"254":{"position":[[8,4]]},"260":{"position":[[8,4]]},"266":{"position":[[8,4]]},"272":{"position":[[8,4]]},"301":{"position":[[8,4]]},"313":{"position":[[8,4]]},"355":{"position":[[8,4]]},"448":{"position":[[8,4]]}}}],["list_iterations(self",{"_index":442,"t":{"894":{"position":[[6,21]]}}}],["list_models(self",{"_index":441,"t":{"892":{"position":[[6,17]]}}}],["list_trial",{"_index":229,"t":{"414":{"position":[[0,11]]}}}],["load",{"_index":176,"t":{"295":{"position":[[0,4]]}}}],["load_balanc",{"_index":171,"t":{"287":{"position":[[0,14]]}}}],["log",{"_index":377,"t":{"818":{"position":[[0,7]]},"1075":{"position":[[0,7]]}}}],["log_fil",{"_index":168,"t":{"281":{"position":[[0,8]]},"329":{"position":[[0,8]]},"393":{"position":[[0,8]]},"436":{"position":[[0,8]]},"466":{"position":[[0,8]]}}}],["log_level",{"_index":167,"t":{"279":{"position":[[0,9]]},"327":{"position":[[0,9]]},"391":{"position":[[0,9]]},"434":{"position":[[0,9]]},"464":{"position":[[0,9]]}}}],["logexportersamplerepli",{"_index":286,"t":{"627":{"position":[[0,22]]}}}],["logexportersamplerequest",{"_index":285,"t":{"625":{"position":[[0,24]]}}}],["logexportersp",{"_index":284,"t":{"623":{"position":[[8,13]]}}}],["longer",{"_index":62,"t":{"103":{"position":[[28,6]]}}}],["look",{"_index":116,"t":{"183":{"position":[[10,4]]}}}],["loop",{"_index":129,"t":{"207":{"position":[[10,5]]}}}],["make",{"_index":115,"t":{"183":{"position":[[0,6]]},"189":{"position":[[19,4]]}}}],["mani",{"_index":132,"t":{"211":{"position":[[33,4]]}}}],["materi",{"_index":108,"t":{"167":{"position":[[7,8]]}}}],["max_trial_wait",{"_index":567,"t":{"1135":{"position":[[70,15]]}}}],["max_trial_wait=non",{"_index":548,"t":{"1109":{"position":[[75,20]]},"1111":{"position":[[79,20]]}}}],["memory_storage_max_samples_s",{"_index":233,"t":{"430":{"position":[[0,31]]}}}],["messag",{"_index":39,"t":{"74":{"position":[[0,8]]},"555":{"position":[[0,7]]}}}],["messagebas",{"_index":370,"t":{"792":{"position":[[6,11]]}}}],["model",{"_index":188,"t":{"341":{"position":[[19,5]]},"343":{"position":[[9,5]]},"345":{"position":[[9,6]]},"347":{"position":[[9,5]]},"349":{"position":[[9,5]]},"655":{"position":[[0,5]]},"884":{"position":[[30,6]]},"886":{"position":[[32,6]]}}}],["model_nam",{"_index":443,"t":{"894":{"position":[[28,11]]},"902":{"position":[[30,11]]}}}],["model_registri",{"_index":566,"t":{"1135":{"position":[[38,15]]}}}],["model_registry=non",{"_index":536,"t":{"1099":{"position":[[167,20]]}}}],["modelinfo",{"_index":312,"t":{"683":{"position":[[0,9]]},"1026":{"position":[[6,9]]}}}],["modeliterationinfo",{"_index":505,"t":{"1028":{"position":[[6,18]]}}}],["modelregistri",{"_index":434,"t":{"880":{"position":[[6,13]]}}}],["modelregistrysp",{"_index":299,"t":{"657":{"position":[[8,15]]}}}],["modelversioninfo",{"_index":313,"t":{"685":{"position":[[0,16]]}}}],["modifi",{"_index":120,"t":{"193":{"position":[[0,9]]},"213":{"position":[[0,9]]},"215":{"position":[[0,9]]}}}],["move",{"_index":50,"t":{"97":{"position":[[27,5]]}}}],["name",{"_index":78,"t":{"113":{"position":[[28,5]]},"884":{"position":[[24,5]]},"886":{"position":[[26,5]]},"888":{"position":[[27,5]]},"890":{"position":[[25,5]]},"896":{"position":[[31,5]]},"898":{"position":[[30,5]]},"900":{"position":[[27,5]]},"904":{"position":[[31,5]]}}}],["namespac",{"_index":77,"t":{"111":{"position":[[35,10]]}}}],["nb_parallel_trials=1",{"_index":540,"t":{"1107":{"position":[[40,21]]}}}],["nb_trial",{"_index":539,"t":{"1107":{"position":[[29,10]]},"1115":{"position":[[27,10]]},"1117":{"position":[[19,10]]},"1147":{"position":[[29,10]]}}}],["nb_trials_run(self",{"_index":562,"t":{"1129":{"position":[[0,19]]}}}],["need",{"_index":82,"t":{"123":{"position":[[18,4]]},"197":{"position":[[18,4]]}}}],["new",{"_index":72,"t":{"109":{"position":[[0,3]]},"191":{"position":[[14,3]]},"207":{"position":[[25,3]]},"503":{"position":[[0,3]]}}}],["node",{"_index":179,"t":{"305":{"position":[[0,5]]}}}],["none",{"_index":461,"t":{"920":{"position":[[27,5]]}}}],["now",{"_index":53,"t":{"99":{"position":[[19,3]]},"101":{"position":[[29,3]]}}}],["observ",{"_index":11,"t":{"15":{"position":[[10,11]]},"55":{"position":[[8,12]]},"107":{"position":[[20,12]]},"131":{"position":[[0,11]]},"205":{"position":[[45,12]]},"207":{"position":[[29,12]]},"551":{"position":[[0,11]]},"920":{"position":[[12,12]]},"924":{"position":[[27,13]]}}}],["observationset",{"_index":258,"t":{"561":{"position":[[0,14]]}}}],["observationt",{"_index":368,"t":{"788":{"position":[[5,12]]}}}],["open",{"_index":7,"t":{"9":{"position":[[23,4]]}}}],["oper",{"_index":173,"t":{"291":{"position":[[0,9]]}}}],["option",{"_index":155,"t":{"242":{"position":[[7,7]]},"274":{"position":[[0,7]]},"412":{"position":[[7,7]]}}}],["orchestr",{"_index":20,"t":{"35":{"position":[[0,12]]},"97":{"position":[[39,12]]},"111":{"position":[[0,12]]},"493":{"position":[[0,12]]},"499":{"position":[[0,12]]}}}],["orchestrator_endpoint",{"_index":236,"t":{"454":{"position":[[0,21]]}}}],["orchestrator_endpoint=non",{"_index":534,"t":{"1099":{"position":[[114,27]]}}}],["output",{"_index":159,"t":{"252":{"position":[[0,6]]},"258":{"position":[[0,6]]},"264":{"position":[[0,6]]}}}],["param",{"_index":217,"t":{"365":{"position":[[0,6]]},"1008":{"position":[[15,7]]}}}],["paramet",{"_index":48,"t":{"95":{"position":[[40,10]]},"99":{"position":[[44,10]]},"103":{"position":[[14,10]]},"171":{"position":[[4,10]]},"505":{"position":[[0,10]]},"731":{"position":[[6,10]]},"800":{"position":[[0,10]]},"802":{"position":[[0,9]]},"804":{"position":[[0,10]]},"822":{"position":[[6,10]]}}}],["part",{"_index":54,"t":{"99":{"position":[[23,4]]}}}],["particip",{"_index":5,"t":{"9":{"position":[[0,11]]},"137":{"position":[[24,11]]}}}],["pause(self",{"_index":557,"t":{"1119":{"position":[[0,11]]}}}],["payload",{"_index":469,"t":{"930":{"position":[[19,8]]},"940":{"position":[[19,8]]}}}],["persistence_fil",{"_index":170,"t":{"285":{"position":[[0,16]]}}}],["play",{"_index":102,"t":{"157":{"position":[[33,4]]}}}],["player",{"_index":127,"t":{"205":{"position":[[67,6]]},"207":{"position":[[57,6]]}}}],["port",{"_index":165,"t":{"275":{"position":[[0,4]]},"317":{"position":[[0,4]]},"426":{"position":[[0,4]]},"456":{"position":[[0,4]]}}}],["port=0",{"_index":478,"t":{"960":{"position":[[15,7]]}}}],["post",{"_index":572,"t":{"1160":{"position":[[0,4]]}}}],["post_trial_callback",{"_index":554,"t":{"1115":{"position":[[58,20]]}}}],["post_trial_callback=non",{"_index":543,"t":{"1107":{"position":[[96,25]]}}}],["pre",{"_index":40,"t":{"79":{"position":[[0,3]]},"97":{"position":[[0,3]]},"804":{"position":[[15,3]]},"1158":{"position":[[0,3]]}}}],["pre_trial_callback",{"_index":553,"t":{"1115":{"position":[[38,19]]}}}],["pre_trial_callback=non",{"_index":542,"t":{"1107":{"position":[[71,24]]}}}],["pre_trial_hook",{"_index":219,"t":{"377":{"position":[[0,15]]}}}],["prefer",{"_index":65,"t":{"105":{"position":[[0,6]]}}}],["prehooksess",{"_index":472,"t":{"942":{"position":[[6,14]]}}}],["prerequisit",{"_index":104,"t":{"161":{"position":[[0,13]]}}}],["private_key",{"_index":222,"t":{"383":{"position":[[0,11]]}}}],["produce_observations(self",{"_index":464,"t":{"924":{"position":[[0,26]]}}}],["prometheus_port",{"_index":220,"t":{"379":{"position":[[0,15]]}}}],["prometheus_port=non",{"_index":392,"t":{"834":{"position":[[67,21]]}}}],["prometheus_registry=prometheus_client.core.registri",{"_index":386,"t":{"830":{"position":[[57,52]]}}}],["prompt",{"_index":100,"t":{"157":{"position":[[12,6]]}}}],["properti",{"_index":406,"t":{"844":{"position":[[44,14]]},"846":{"position":[[56,14]]},"848":{"position":[[36,14]]},"850":{"position":[[29,14]]},"872":{"position":[[31,14]]},"874":{"position":[[57,14]]},"898":{"position":[[36,11]]}}}],["publish_model(self",{"_index":437,"t":{"886":{"position":[[6,19]]}}}],["python",{"_index":59,"t":{"101":{"position":[[39,6]]},"115":{"position":[[0,6]]},"487":{"position":[[0,6]]},"501":{"position":[[0,6]]},"507":{"position":[[0,6]]}}}],["random_ag",{"_index":88,"t":{"135":{"position":[[15,12]]}}}],["raw_str",{"_index":495,"t":{"998":{"position":[[18,11]]},"1014":{"position":[[18,11]]}}}],["react",{"_index":106,"t":{"165":{"position":[[11,5]]}}}],["receiv",{"_index":137,"t":{"215":{"position":[[30,7]]}}}],["recvact",{"_index":484,"t":{"976":{"position":[[6,10]]}}}],["recvev",{"_index":366,"t":{"784":{"position":[[6,9]]},"968":{"position":[[6,9]]}}}],["recvmessag",{"_index":485,"t":{"978":{"position":[[6,11]]}}}],["recvobserv",{"_index":482,"t":{"972":{"position":[[6,15]]}}}],["recvreward",{"_index":486,"t":{"980":{"position":[[6,10]]}}}],["recvrewardsourc",{"_index":489,"t":{"986":{"position":[[6,16]]}}}],["refer",{"_index":373,"t":{"800":{"position":[[11,9]]}}}],["regist",{"_index":92,"t":{"143":{"position":[[0,11]]},"191":{"position":[[0,11]]},"250":{"position":[[17,8]]}}}],["register_actor(self",{"_index":407,"t":{"846":{"position":[[0,20]]}}}],["register_datalog(self",{"_index":410,"t":{"850":{"position":[[0,22]]}}}],["register_environment(self",{"_index":403,"t":{"844":{"position":[[0,26]]}}}],["register_pre_trial_hook(self",{"_index":409,"t":{"848":{"position":[[0,29]]}}}],["registeractor(impl",{"_index":341,"t":{"745":{"position":[[0,19]]}}}],["registerrepli",{"_index":293,"t":{"645":{"position":[[0,13]]}}}],["registerrequest",{"_index":292,"t":{"643":{"position":[[0,15]]}}}],["registration_lag",{"_index":169,"t":{"283":{"position":[[0,16]]}}}],["registri",{"_index":298,"t":{"655":{"position":[[6,8]]}}}],["remove_model(self",{"_index":440,"t":{"890":{"position":[[6,18]]}}}],["report",{"_index":1,"t":{"5":{"position":[[0,9]]},"209":{"position":[[23,9]]}}}],["reproduct",{"_index":152,"t":{"238":{"position":[[30,13]]}}}],["respons",{"_index":130,"t":{"207":{"position":[[45,8]]}}}],["resume(self",{"_index":558,"t":{"1121":{"position":[[0,12]]}}}],["retriev",{"_index":197,"t":{"345":{"position":[[0,8]]},"349":{"position":[[0,8]]},"351":{"position":[[0,8]]}}}],["retrieve_model(self",{"_index":438,"t":{"888":{"position":[[6,20]]}}}],["retrievemodelsrepli",{"_index":305,"t":{"669":{"position":[[0,19]]}}}],["retrievemodelsrequest",{"_index":304,"t":{"667":{"position":[[0,21]]}}}],["retrievesamplerepli",{"_index":325,"t":{"709":{"position":[[0,19]]}}}],["retrievesamplesrequest",{"_index":324,"t":{"707":{"position":[[0,22]]}}}],["retrievetrialsrepli",{"_index":323,"t":{"705":{"position":[[0,19]]}}}],["retrievetrialsrequest",{"_index":322,"t":{"703":{"position":[[0,21]]}}}],["retrieveversiondatareplychunk",{"_index":311,"t":{"681":{"position":[[0,29]]}}}],["retrieveversiondatarequest",{"_index":310,"t":{"679":{"position":[[0,26]]}}}],["retrieveversioninfosrepli",{"_index":309,"t":{"677":{"position":[[0,25]]}}}],["retrieveversioninfosrequest",{"_index":308,"t":{"675":{"position":[[0,27]]}}}],["return",{"_index":191,"t":{"341":{"position":[[116,7]]},"343":{"position":[[90,7]]},"345":{"position":[[97,7]]},"347":{"position":[[116,7]]},"349":{"position":[[125,7]]},"351":{"position":[[122,7]]}}}],["reward",{"_index":36,"t":{"69":{"position":[[0,7]]},"187":{"position":[[8,7]]},"559":{"position":[[0,6]]},"794":{"position":[[5,6]]}}}],["rewardsourc",{"_index":257,"t":{"557":{"position":[[0,12]]}}}],["root_cert",{"_index":223,"t":{"385":{"position":[[0,9]]}}}],["round",{"_index":134,"t":{"211":{"position":[[49,6]]}}}],["rp",{"_index":103,"t":{"157":{"position":[[38,3]]},"221":{"position":[[12,3]]}}}],["rule",{"_index":122,"t":{"203":{"position":[[17,5]]}}}],["run",{"_index":43,"t":{"85":{"position":[[6,3]]},"169":{"position":[[11,3]]},"234":{"position":[[0,7]]}}}],["run_simple_batch(self",{"_index":538,"t":{"1107":{"position":[[6,22]]}}}],["run_simple_training(self",{"_index":544,"t":{"1109":{"position":[[6,25]]}}}],["run_simple_trial_training(self",{"_index":549,"t":{"1111":{"position":[[6,31]]}}}],["runner",{"_index":136,"t":{"215":{"position":[[20,6]]}}}],["runtrial",{"_index":272,"t":{"597":{"position":[[0,10]]}}}],["sampl",{"_index":241,"t":{"491":{"position":[[8,6]]}}}],["sampler",{"_index":573,"t":{"1162":{"position":[[0,7]]}}}],["sampler_callback",{"_index":546,"t":{"1109":{"position":[[39,17]]}}}],["scheme",{"_index":375,"t":{"808":{"position":[[5,6]]},"810":{"position":[[8,6]]}}}],["script",{"_index":110,"t":{"169":{"position":[[15,6]]}}}],["sdk",{"_index":79,"t":{"115":{"position":[[7,3]]},"117":{"position":[[11,3]]},"487":{"position":[[7,3]]},"489":{"position":[[11,3]]},"501":{"position":[[7,3]]},"507":{"position":[[7,3]]}}}],["secret",{"_index":238,"t":{"462":{"position":[[0,6]]}}}],["secur",{"_index":3,"t":{"7":{"position":[[0,8]]}}}],["send",{"_index":29,"t":{"55":{"position":[[0,7]]},"187":{"position":[[0,7]]}}}],["send_message(self",{"_index":468,"t":{"930":{"position":[[0,18]]},"940":{"position":[[0,18]]}}}],["sending_done(self",{"_index":454,"t":{"914":{"position":[[0,18]]}}}],["sendingdon",{"_index":357,"t":{"769":{"position":[[0,13]]}}}],["sendmessage(payload",{"_index":363,"t":{"778":{"position":[[0,20]]}}}],["sent_version_chunk_s",{"_index":184,"t":{"325":{"position":[[0,23]]}}}],["serialize(self",{"_index":493,"t":{"996":{"position":[[0,15]]},"1012":{"position":[[0,15]]}}}],["serializedmessag",{"_index":255,"t":{"547":{"position":[[0,17]]}}}],["serve_all_registered(self",{"_index":390,"t":{"834":{"position":[[6,26]]}}}],["served_endpoint=servedendpoint",{"_index":391,"t":{"834":{"position":[[33,33]]}}}],["servic",{"_index":30,"t":{"59":{"position":[[0,7]]},"125":{"position":[[19,7]]},"141":{"position":[[21,7]]},"143":{"position":[[12,8]]},"145":{"position":[[12,8]]},"199":{"position":[[25,7]]},"226":{"position":[[0,7]]},"571":{"position":[[0,7]]},"593":{"position":[[0,7]]},"611":{"position":[[0,7]]},"623":{"position":[[0,7]]},"631":{"position":[[0,7]]},"635":{"position":[[0,7]]},"657":{"position":[[0,7]]},"689":{"position":[[0,7]]}}}],["servicedetail",{"_index":290,"t":{"639":{"position":[[0,14]]}}}],["serviceendpoint",{"_index":291,"t":{"641":{"position":[[0,15]]}}}],["servicetyp",{"_index":289,"t":{"637":{"position":[[0,11]]}}}],["session",{"_index":353,"t":{"761":{"position":[[6,7]]},"771":{"position":[[27,7]]},"906":{"position":[[6,7]]}}}],["set",{"_index":140,"t":{"219":{"position":[[8,3]]}}}],["set_nb_parallel_trials(self",{"_index":568,"t":{"1147":{"position":[[0,28]]}}}],["signal",{"_index":138,"t":{"215":{"position":[[54,6]]}}}],["sourc",{"_index":8,"t":{"9":{"position":[[28,6]]},"221":{"position":[[16,6]]}}}],["space",{"_index":12,"t":{"15":{"position":[[22,6]]},"21":{"position":[[7,5]]},"129":{"position":[[7,5]]},"131":{"position":[[12,5]]}}}],["spec",{"_index":26,"t":{"49":{"position":[[4,4]]},"51":{"position":[[14,4]]},"95":{"position":[[24,4]]},"729":{"position":[[4,4]]},"824":{"position":[[14,4]]}}}],["spec_fil",{"_index":237,"t":{"458":{"position":[[0,9]]}}}],["special",{"_index":94,"t":{"147":{"position":[[0,7]]}}}],["specif",{"_index":378,"t":{"820":{"position":[[6,14]]},"1077":{"position":[[6,14]]}}}],["specifi",{"_index":89,"t":{"137":{"position":[[0,10]]}}}],["split",{"_index":47,"t":{"95":{"position":[[13,5]]}}}],["start",{"_index":33,"t":{"65":{"position":[[0,5]]},"83":{"position":[[6,5]]}}}],["start(autodonesending=tru",{"_index":360,"t":{"772":{"position":[[0,27]]}}}],["start(self",{"_index":460,"t":{"920":{"position":[[0,11]]},"934":{"position":[[0,11]]},"950":{"position":[[0,11]]},"1137":{"position":[[0,11]]}}}],["start_trial(self",{"_index":411,"t":{"856":{"position":[[6,17]]}}}],["start_trials(self",{"_index":556,"t":{"1117":{"position":[[0,18]]}}}],["starttrial(trialconfig",{"_index":343,"t":{"749":{"position":[[6,22]]}}}],["state",{"_index":10,"t":{"15":{"position":[[0,5]]}}}],["status",{"_index":228,"t":{"408":{"position":[[0,8]]}}}],["status_fil",{"_index":221,"t":{"381":{"position":[[0,11]]}}}],["statusrepli",{"_index":250,"t":{"537":{"position":[[0,11]]}}}],["statusrequest",{"_index":249,"t":{"535":{"position":[[0,13]]}}}],["step",{"_index":98,"t":{"151":{"position":[[0,4]]}}}],["stop(self",{"_index":559,"t":{"1123":{"position":[[0,10]]},"1141":{"position":[[6,10]]}}}],["store_model(self",{"_index":435,"t":{"884":{"position":[[6,17]]}}}],["storedtrialactorsampl",{"_index":318,"t":{"695":{"position":[[0,22]]}}}],["storedtrialactorsamplemessag",{"_index":320,"t":{"699":{"position":[[0,29]]}}}],["storedtrialactorsamplereward",{"_index":319,"t":{"697":{"position":[[0,28]]}}}],["storedtrialinfo",{"_index":316,"t":{"691":{"position":[[0,15]]}}}],["storedtrialsampl",{"_index":317,"t":{"693":{"position":[[0,17]]}}}],["storedtrialsamplefield",{"_index":321,"t":{"701":{"position":[[0,22]]}}}],["stream",{"_index":203,"t":{"347":{"position":[[69,6]]},"351":{"position":[[132,6]]}}}],["substitut",{"_index":180,"t":{"307":{"position":[[9,12]]}}}],["success",{"_index":133,"t":{"211":{"position":[[38,10]]}}}],["summari",{"_index":25,"t":{"45":{"position":[[24,7]]}}}],["support",{"_index":63,"t":{"103":{"position":[[35,7]]},"107":{"position":[[0,7]]}}}],["term",{"_index":150,"t":{"238":{"position":[[0,5]]}}}],["termin",{"_index":34,"t":{"65":{"position":[[10,9]]},"209":{"position":[[4,11]]},"215":{"position":[[42,11]]}}}],["terminate(self",{"_index":560,"t":{"1125":{"position":[[0,15]]},"1139":{"position":[[0,15]]}}}],["terminate_trial(self",{"_index":415,"t":{"858":{"position":[[6,21]]}}}],["terminatetrial(trialid",{"_index":346,"t":{"751":{"position":[[0,24]]}}}],["terminatetrialrepli",{"_index":266,"t":{"579":{"position":[[0,19]]}}}],["terminatetrialrequest",{"_index":265,"t":{"577":{"position":[[0,21]]}}}],["tick_id",{"_index":457,"t":{"916":{"position":[[40,8]]}}}],["timeout",{"_index":156,"t":{"244":{"position":[[0,7]]},"1131":{"position":[[17,8]]},"1145":{"position":[[17,8]]}}}],["token",{"_index":97,"t":{"149":{"position":[[15,5]]}}}],["top",{"_index":380,"t":{"826":{"position":[[0,3]]},"1079":{"position":[[0,3]]}}}],["track_latest_model(self",{"_index":448,"t":{"904":{"position":[[6,24]]}}}],["trainertrialsess",{"_index":570,"t":{"1151":{"position":[[6,19]]}}}],["trial",{"_index":17,"t":{"27":{"position":[[0,6]]},"29":{"position":[[4,6]]},"65":{"position":[[20,6]]},"67":{"position":[[6,6]]},"79":{"position":[[4,5]]},"81":{"position":[[0,5]]},"83":{"position":[[0,5]]},"85":{"position":[[0,5]]},"87":{"position":[[0,5]]},"97":{"position":[[4,5]]},"103":{"position":[[8,5],[77,7]]},"113":{"position":[[0,7]]},"137":{"position":[[43,5]]},"215":{"position":[[14,5]]},"515":{"position":[[0,5]]},"687":{"position":[[0,5]]},"731":{"position":[[0,5]]},"804":{"position":[[19,5]]},"820":{"position":[[0,5]]},"822":{"position":[[0,5]]},"1077":{"position":[[0,5]]},"1158":{"position":[[4,5]]},"1160":{"position":[[5,5]]},"1164":{"position":[[0,5]]}}}],["trial'",{"_index":56,"t":{"99":{"position":[[36,7]]}}}],["trial_callback",{"_index":550,"t":{"1111":{"position":[[45,15]]},"1135":{"position":[[54,15]]}}}],["trial_config=non",{"_index":412,"t":{"856":{"position":[[24,18]]}}}],["trial_id",{"_index":399,"t":{"842":{"position":[[23,9]]},"858":{"position":[[28,10]]},"860":{"position":[[27,10]]},"864":{"position":[[23,9]]}}}],["trial_id_requested=non",{"_index":413,"t":{"856":{"position":[[43,24]]}}}],["trial_info",{"_index":430,"t":{"878":{"position":[[24,12]]}}}],["trial_params=non",{"_index":414,"t":{"856":{"position":[[68,18]]}}}],["trial_state_filt",{"_index":419,"t":{"862":{"position":[[25,23]]}}}],["trialactor",{"_index":256,"t":{"549":{"position":[[0,10]]}}}],["trialbatch",{"_index":551,"t":{"1113":{"position":[[6,10]]}}}],["trialdatastoresp",{"_index":315,"t":{"689":{"position":[[8,16]]}}}],["trialhookssp",{"_index":287,"t":{"631":{"position":[[8,12]]}}}],["trialidrequest",{"_index":345,"t":{"749":{"position":[[42,16]]}}}],["trialinfo",{"_index":269,"t":{"585":{"position":[[0,9]]},"782":{"position":[[6,9]]},"964":{"position":[[6,9]]}}}],["trialinforepli",{"_index":268,"t":{"583":{"position":[[0,14]]}}}],["trialinforequest",{"_index":267,"t":{"581":{"position":[[0,16]]}}}],["triallifecyclesp",{"_index":262,"t":{"571":{"position":[[8,16]]}}}],["triallistentri",{"_index":271,"t":{"589":{"position":[[0,14]]}}}],["triallistrequest",{"_index":270,"t":{"587":{"position":[[0,16]]}}}],["trialparam",{"_index":251,"t":{"539":{"position":[[0,11]]}}}],["trialsamplesfilehead",{"_index":332,"t":{"723":{"position":[[0,22]]}}}],["trialstartrepli",{"_index":264,"t":{"575":{"position":[[0,15]]}}}],["trialstartrequest",{"_index":263,"t":{"573":{"position":[[0,17]]}}}],["trialstat",{"_index":260,"t":{"565":{"position":[[0,10]]}}}],["troubleshoot",{"_index":81,"t":{"119":{"position":[[0,15]]}}}],["trust_chain",{"_index":224,"t":{"387":{"position":[[0,11]]}}}],["type",{"_index":227,"t":{"406":{"position":[[0,4]]},"527":{"position":[[7,5]]},"788":{"position":[[0,4]]},"790":{"position":[[0,4]]},"794":{"position":[[0,4]]}}}],["type=non",{"_index":496,"t":{"998":{"position":[[30,10]]}}}],["ui",{"_index":109,"t":{"167":{"position":[[16,2]]}}}],["undefin",{"_index":344,"t":{"749":{"position":[[31,10],[61,10]]}}}],["up",{"_index":141,"t":{"219":{"position":[[12,2]]}}}],["updat",{"_index":45,"t":{"93":{"position":[[0,8]]},"169":{"position":[[0,6]]},"341":{"position":[[10,6]]}}}],["update_model_info(self",{"_index":445,"t":{"898":{"position":[[6,23]]}}}],["url",{"_index":68,"t":{"105":{"position":[[18,3]]}}}],["url=\"cogment://discov",{"_index":476,"t":{"956":{"position":[[15,25]]}}}],["us",{"_index":66,"t":{"105":{"position":[[7,5]]},"151":{"position":[[10,5]]},"189":{"position":[[24,3]]},"238":{"position":[[25,4]]},"1156":{"position":[[0,3]]}}}],["usag",{"_index":187,"t":{"339":{"position":[[4,5]]},"728":{"position":[[8,5]]},"815":{"position":[[8,5]]},"1072":{"position":[[8,5]]}}}],["user",{"_index":64,"t":{"103":{"position":[[54,4]]}}}],["user_data=non",{"_index":458,"t":{"916":{"position":[[52,15]]}}}],["user_id",{"_index":383,"t":{"830":{"position":[[15,8]]},"1099":{"position":[[15,8]]}}}],["util",{"_index":522,"t":{"1081":{"position":[[0,9]]}}}],["valu",{"_index":246,"t":{"529":{"position":[[7,6]]},"916":{"position":[[17,6]]}}}],["variabl",{"_index":76,"t":{"111":{"position":[[25,9]]},"151":{"position":[[36,9]]},"307":{"position":[[0,8]]}}}],["verbos",{"_index":226,"t":{"402":{"position":[[0,7]]}}}],["version",{"_index":273,"t":{"599":{"position":[[0,9]]}}}],["versioninfo",{"_index":248,"t":{"533":{"position":[[0,11]]}}}],["versionrequest",{"_index":247,"t":{"531":{"position":[[0,14]]}}}],["wait(self",{"_index":563,"t":{"1131":{"position":[[6,10]]},"1145":{"position":[[6,10]]}}}],["wait_for_available(self",{"_index":510,"t":{"1038":{"position":[[6,24]]}}}],["wait_for_newer(self",{"_index":511,"t":{"1040":{"position":[[6,20]]}}}],["wait_for_trials=0",{"_index":427,"t":{"874":{"position":[[38,18]]}}}],["waitforreadi",{"_index":164,"t":{"268":{"position":[[17,12]]}}}],["watch",{"_index":35,"t":{"67":{"position":[[0,5]]}}}],["watch_trials(self",{"_index":418,"t":{"862":{"position":[[6,18]]}}}],["watchtrials(trialstatefilt",{"_index":350,"t":{"755":{"position":[[6,33]]}}}],["web",{"_index":105,"t":{"163":{"position":[[4,3]]},"173":{"position":[[22,3]]}}}],["web_port",{"_index":235,"t":{"452":{"position":[[0,8]]}}}],["what'",{"_index":144,"t":{"225":{"position":[[0,6]]}}}],["win",{"_index":135,"t":{"211":{"position":[[59,3]]}}}],["work",{"_index":13,"t":{"17":{"position":[[20,5]]},"23":{"position":[[11,4]]},"29":{"position":[[11,4]]}}}],["workflow",{"_index":75,"t":{"109":{"position":[[20,8]]}}}],["wrapper",{"_index":60,"t":{"101":{"position":[[46,7]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"If you have questions about Cogment, a project you are working on or would like to start with Cogment, or would like to become more involved in the open-source development of Cogment, we invite you to join our Discord server. Here members of the Cogment community can come together to chat by voice or text, ask questions, and share solutions. We look forward to connecting with you!","s":"Community","u":"/docs/community-channels","h":"","p":1},{"i":4,"t":"We'd love to hear from you about any project you're working on with Cogment or Cogment Verse. Reach out on the Discord server to discuss your project, report any bugs you might find, or propose any fixes you think might improve our platform.","s":"Interact with Us","u":"/docs/community-channels","h":"#interact-with-us","p":1},{"i":6,"t":"If you do need to report a bug, you can do so on the issues page for Cogment or Cogment Verse. It's useful to check this list first to see if your issue has been raised already before submitting a new one. When filing an issue, make sure to answer these five questions: What version of cogment are you using (check using cogment version)? What operating system and processor architecture are you using? What did you do? What did you expect to see? What did you see instead?","s":"Reporting Bugs","u":"/docs/community-channels","h":"#reporting-bugs","p":1},{"i":8,"t":"If you find a security vulnerability, do NOT open an issue. Any security issues should be submitted directly to dev+security@ai-r.com. In order to determine whether you are dealing with a security issue, ask yourself these two questions: Can I access something that's not mine, or something I shouldn't have access to? Can I disable something for other people? If the answer to either of those two questions are \"yes\", then you're probably dealing with a security issue. Note that even if you answer \"no\" to both questions, you may still be dealing with a security issue, so if you're unsure, just email us at dev+security@ai-r.com.","s":"Security Disclosures","u":"/docs/community-channels","h":"#security-disclosures","p":1},{"i":10,"t":"If you are interested in contributing to Cogment or Cogment Verse, please get in touch with the team on the Discord server and share what you're thinking about. You'll need to sign a Contributor License Agreement (CLA) so that you can retain ownership of the code submitted and AI Redefined has legal rights to use the contribution. Once signed, a CLA covers all Cogment projects. Get a CLA by emailing dev+cla@ai-r.com. To participate in the Cogment Open Source community, please make sure you follow our Code of Conduct guidelines. If you want to implement a feature or bugfix for an outstanding issue, search for that issue on the dedicated issues page for Cogment or Cogment Verse and comment that you are going to work on this piece. If you need more context on a particular issue, reach out on our Discord server.","s":"Participate in Cogment Open Source","u":"/docs/community-channels","h":"#participate-in-cogment-open-source","p":1},{"i":12,"t":"Cogment is built around concepts adapted from multi-agent systems (actors, environment), Markov decision processes (action and observation space) and reinforcement learning (trials, rewards). This page aims to explain these concepts at a high level and give some idea of how they are used in Cogment. At the most basic level, Cogment facilitates interactions between Actors and their Environment. Actors take in observations of the Environment as input, and use these to generate actions as outputs. The Environment takes actions as inputs, and outputs the consequences of that action, such as the next observation and, optionally, a numerical feedback signal about how good or bad the action was (eg. reward). Cogment is designed so that components like the Environment and the Actors can be run as distributed services with easily interchangeable implementations, and with a system to enable efficient transfer of information between services.","s":"Core Concepts","u":"/docs/guide/core-concepts","h":"","p":11},{"i":14,"t":"The Environment is the context in which Cogment Trials are run. The Environment is the main integration point between Cogment and an external system, either a simulation or a real world system. In the most general terms, the Environment is the world in which a human or computer agent (eg. Actors) can take actions. For example, in the Atari game Pong, the Environment is the simulated arena in which players control \"paddles\" to keep a \"ball\" within the bounds of the screen. The Environment also includes the set of rules for what actions exist (eg. you can move your paddles up and down, but not left and right) and also how the game evolves as a consequence of certain actions being taken.","s":"Environment","u":"/docs/guide/core-concepts","h":"#environment","p":11},{"i":16,"t":"The Environment can be in different states. The set of all possible states the Environment could be in is called the \"state space\". Usually an Actor needs to have some knowledge about the current state of the world they're in to make decisions about what action should be taken. The Actor doesn't always get access to every detail about the current state of the Environment, but rather gets observations of the current state. The set of all possible observations an Actor could see is called \"observation space\". In Cogment, we only explicitly deal with observations of the Environment.","s":"State and Observation Spaces","u":"/docs/guide/core-concepts","h":"#state-and-observation-spaces","p":11},{"i":18,"t":"In Cogment, the basic outline of the Environment is given in the specification file, which configures what parameters are important for setting up the Environment. The general structure of how an Environment works (eg. what info it takes as input and what it generates as output) is specified in the Environment implementation, along with the rules of how the Environment responds to a given action and produces subsequent observations for the Actor(s). The Environment implementation is accessed by the Orchestrator to run the Environment during Trials. Using one of Cogment's SDKs, the Environment can be implemented as a function integrating a \"state of the world\" with the Trial. This function performs the following tasks during the Trial: Generate Observations from the current state of the world, for example retrieving the visible objects from a 3D simulation. Apply the Actions, thus updating the state of the world, for example changing the velocity of a moving vehicle in a race simulation. Evaluate the performance of Actors and send them Rewards, for example by checking if a vehicle crossed the finish line in a race simulation.","s":"How the Environment works in Cogment","u":"/docs/guide/core-concepts","h":"#how-the-environment-works-in-cogment","p":11},{"i":20,"t":"Actors are roles that can do stuff, eg. Actors take actions which may affect the state of the Environment. In Cogment, Actors can be either humans or computer-based agents and effectively operate identically.","s":"Actors","u":"/docs/guide/core-concepts","h":"#actors","p":11},{"i":22,"t":"Actors take Observations about the current state of the Environment as inputs, and produce actions as outputs. The set of all actions that can be produced is called the \"Action space\". Each Actor can get a different Observation from the Environment representing what it perceives about the state of the world. The action represents the decision the Actor takes upon receiving this observation. The action selected by the Actor is then applied by the Environment. Cogment leverages this discrete update to orchestrate the execution of the components and the dispatch of data between them.","s":"Action Space","u":"/docs/guide/core-concepts","h":"#action-space","p":11},{"i":24,"t":"Cogment allocates a dedicated gRPC service to run the computations of Actors, which we call the \"Actor Service\". It can also refer to the computational node running this service. This service effectively offers the registered actor implementations for use in trials. The Actor class specifies what kinds of inputs and outputs to expect. The class definition specifies what an actor is. The Actor implementation is the function the Actor uses to compute what action to take given some input information. If we want to have a bunch of different Actors that all behave similarly (take same kind of inputs and produce same kind of outputs) we can define an Actor class and different instances of that class can use different implementations. Client and Service Actors​ An Actor might be controlled either by a software agent, or by a Human. Whichever the case, the process of generating actions based on observations remains the same, and the Environment treats them the same. Some Actors connect to the trial (we call them \"client\" Actors) and others will wait for the trial to connect to them (we call these \"service\" Actors). Service Actors are run on a designated computational node called the Actor Service.","s":"How Actors work in Cogment","u":"/docs/guide/core-concepts","h":"#how-actors-work-in-cogment","p":11},{"i":26,"t":"The Observations and Actions we discussed above are the key pieces of information exchanged between Actors and the Environment. Environments take actions as an input and output observations, Actors take observations as an input and output actions. As discussed before, the Environment can also provide feedback to the Actor about their actions in the form of a numerical reward signal, but it is not strictly necessary for the Environment to do so. In Cogment, Actors and the Environment exchange information via the Orchestrator - a core component of Cogment which facilitates the interaction of distributed services. To do so, the observation and action space for the Actors and the Environment are defined as typed data structures. Cogment uses Protocol Buffers as a format to specify these data structures. This typing defines both an interface contract between the Actors and the Environment and helps convey semantic information, thus facilitating the independent design and development of both. In practice this enables the Actors and Environment to be run as separate services (eg. on separate computational nodes) and have the Orchestrator pass these protobuf messages between the different services as needed.","s":"Interactions between Actors and the Environment","u":"/docs/guide/core-concepts","h":"#interactions-between-actors-and-the-environment","p":11},{"i":28,"t":"Trials are how a Cogment deployment runs the sequential interactions between Actors and their Environment. A trial is defined by the participating Actors and the host Environment. As a concept, Trials are quite close to Reinforcement Learning's Episodes, i.e. all the states that come between an initial state and a terminal state. However, because Cogment can be used outside of an RL context, we prefer using the more generic term of Trial.","s":"Trials","u":"/docs/guide/core-concepts","h":"#trials","p":11},{"i":30,"t":"Trials are started by clients connecting to Cogment. A trial can end either by being terminated from a client or end by itself, for example once a specific state of the Environment is reached. During the trial: The Environment generates observations of its internal state and sends them to the Actors. Given these observations, each Actor chooses and sends an action. The Environment receives the actions and updates its internal state. Rewards can be sent to the Actors from either the Environment or other Actors. A reward is a measure of an actor’s performance within the environment at a given point in time during the trial. Actors receive rewards if at least one was sent to them. A log of the activity during the trial (observations, actions, rewards) is produced and can be stored. The Specification file​ The configurations for how trial elements are set up are defined in a YAML specification file typically called cogment.yaml. This file details how elements of the project work, including its actor classes and their action & observation spaces. You can learn more about the specification file in the dedicated reference page.","s":"How Trials work in Cogment","u":"/docs/guide/core-concepts","h":"#how-trials-work-in-cogment","p":11},{"i":32,"t":"Running trials with Cogment usually involves the deployment of a cluster of services and clients. These components are either provided by the Cogment framework, depicted below in blue, or implemented for a particular project with Software Development Kits (SDKs) in either Python or Javascript, depicted below in orange. User implemented components use one of the Cogment SDKs or directly implement the underlying protocol. Components communicate using gRPC, clients can also communicate in a web-friendly way using gRPC-Web and grpcwebproxy.","s":"Cogment Architecture","u":"/docs/guide/core-concepts","h":"#cogment-architecture","p":11},{"i":34,"t":"The Context is a point of entry for Cogment to interface with the different services through SDKs. See also the SDK documentation for Context (Python | JavaScript).","s":"Context","u":"/docs/guide/core-concepts","h":"#context","p":11},{"i":36,"t":"The Orchestrator is the glue that binds everything together. It is responsible for running the Trials and contacting other services as needed to ensure their execution. The key aspect of Cogment's orchestrator is its capacity to handle a number of network connections in parallel while keeping its responsiveness.","s":"Orchestrator","u":"/docs/guide/core-concepts","h":"#orchestrator","p":11},{"i":38,"t":"The Controller is a key part of using Cogment, it initiates communication with the Orchestrator to control the execution of Trials. It is responsible for starting Trials, retrieving and watching their state (including the end of the trial), or requesting trial termination. You can see more in the Python SDK documentation for the Controller. The Controller is created by the Context.","s":"Controller","u":"/docs/guide/core-concepts","h":"#controller","p":11},{"i":40,"t":"The Environment implementation is accessed by the Orchestrator to run the Environment during Trials. Using one of Cogment's SDKs, the Environment can be implemented as a function integrating a \"state of the world\" with the Trial. This function performs the following tasks during the Trial: Generate Observations from the current state of the world, for example retrieving the visible objects from a 3D simulation. Apply the Actions, thus updating the state of the world, for example changing the velocity of a moving vehicle in a race simulation. Evaluate the performance of Actors and send them Rewards, for example by checking if a vehicle crossed the finish line in a race simulation.","s":"Environment","u":"/docs/guide/core-concepts","h":"#environment-1","p":11},{"i":42,"t":"Cogment handles Actors in two different ways: either as a service Actor or as a client Actor. Service Actor implementations are accessed by the Orchestrator during Trials, while Client Actor implementations join a Trial by initiating the communication with the Orchestrator. Client Actors implementations can reach a Cogment deployment through NAT traversal. This makes them particularly well-suited to implement human-driven Actors, in web-browsers for example. Using one of Cogment's SDKs Actors can be implemented as functions handling the integration between a decision-making Actor (software agent or Human) and the Trial. This function performs the following tasks during the Trial: Receive Observations and do Actions in response, for example vectorizing the retrieved observation, feeding it to a neural network and converting its output to an Action. Receive Rewards, for example using them to update a neural network. Optionally: send and receive direct messages. Please note that rewards can also be retrieved after the fact using a datalog.","s":"Actors","u":"/docs/guide/core-concepts","h":"#actors-1","p":11},{"i":44,"t":"On top of the core components described above, a Cogment deployment can include these additional ones: Datalog services can be used to listen to the activity during a trial (actions, observations, rewards, messages) in order to, for example, store these data for the offline training of AI agents. The Trial Datastore is an out-of-the-box implementation of this. Model Registry handles the storage and dispatch of AI models trained with Cogment and used by the actors. Directory handles the publishing and discovery of cogment services.","s":"Additional components","u":"/docs/guide/core-concepts","h":"#additional-components","p":11},{"i":46,"t":"The following table summarizes how each component can either be implemented or used out of the box. Component Cogment Python SDK Javascript SDK gRPC API Orchestrator ✅ cogment services orchestrator ✅ implement Control API & Client Actor API Controller ✅ get controller ✅ get controller ✅ use Control API Environment ✅ register environment & serve ✅ implement Environment API Actor (Service) ✅ register actor & serve ✅ implement Service Actor API Actor (Client) ✅ register actor & join trial ✅ register actor & join trial ✅ use Client Actor API Trial Datastore ✅ cogment services trial_datastore ✅ register datalog, serve & get datastore ✅ implement Datalog API & Trial Datastore API Trial Datastore Client ✅ cogment client trial_datastore ✅ get datastore ✅ use Trial Datastore API Model Registry ✅ cogment services model_registry ✅ implement Model Registry API Model Registry Client ✅ get model registry ✅ use Model Registry API Directory ✅ `cogment services directory ✅ implement Directory API Directory Client ✅ `cogment client directory ✅ use directory ✅ use Directory API Pre Trial Hook ✅ register pre trial hook & serve ✅ implement Pre Trial Hook API","s":"Components availability summary","u":"/docs/guide/core-concepts","h":"#components-availability-summary","p":11},{"i":48,"t":"This document gives a high level view of what it is to develop a Cogment based application using Cogment SDKs. It assumes the reader is familiar with the Cogment core concepts. note Some features aren't available in Javascript, if there's only Python examples under a certain section, that feature is python only. The High-level Cogment API expects users to use protocol buffers to declare a project's data structures. The intricacies of protobufs are beyond the scope of this document. Basic knowledge of the technology and its usage is assumed.","s":"Development guide","u":"/docs/guide/development-guide","h":"","p":47},{"i":50,"t":"The spec file, usually named cogment.yaml, defines the specifics of a type of trials for a Cogment app: actor classes as well as environment & trial configuration types. It is the starting point for a project. An actor class is primarily defined by its observation space and action space. The data structures describing these spaces are declared by using a protocol buffer message type. Observations and actions will simply be instances of the matching type. For example, in the following, driver and pedestrian share a common view of the environment, hence use the same observation space, but have different actions available to them. import: proto: - city.protoactors: driver: observation: space: city.Observation action: space: city.DriverAction pedestrian: observation: space: city.Observation action: space: city.PedestrianAction tip This shows only the relevant part of the full spec file, you can find the full list of configurable options in the reference page.","s":"The spec file","u":"/docs/guide/development-guide","h":"#the-spec-file","p":47},{"i":52,"t":"In order to use the spec file within the various supported languages, it needs to be compiled. This is done by the code generation modules of the specific language's SDK you are using. Python Javascript For the python SDK, the generation step requires an extra from the cogment package. Using pip you can install the SDK with its extra using: pip install cogment[generate] The generation can then be executed using: python -m cogment.generate cogment.yaml This will create a cog_settings.py file as well as multiple *_pb.py files. For the Javascript SDK, the generation requires the SDK to be installed: npm install @cogment/cogment-js-sdk The generation can then be executed using: npx cogment-js-sdk-generate cogment.yaml This will create several files in the src folder: CogSettings.js, CogSettings.d.ts, CogSettings.d.ts.map and CogTypes.d.ts as well multiple *_pb.js and *_pb.d.ts files.","s":"Compiling the spec file","u":"/docs/guide/development-guide","h":"#compiling-the-spec-file","p":47},{"i":54,"t":"Environments are implemented by functions that take a environment session instance. This function will be called once for each trial. This function usually consists of three sections. The environment's initialization, where its internal state can be initialized and processes started. It ends with the sending of the initial observations to the actors participating in the trial. Its event loop, where the environment iterates through the events occurring during the trial and produces observations as well as receives messages. In this loop the environment can end the trial on its own or the end can be requested, see the Trial lifetime section for further information. Its termination, where cleanup occurs. In the common case where all actors within a trial share the same observation, a bare-minimum environment service would look like this: async def environment(environment_session): # -- Initialization -- # Retrieve the actors participating in the trial actors = environment_session.get_active_actors() # Start the trial and send a starting observation to all actors environment_session.start([(\"*\", Observation())]) # -- Event loop -- async for event in environment_session.all_events(): if event.actions: # `event.actions` is a list of the actions done by the actors actions = event.actions if event.type == cogment.EventType.ACTIVE: # The trial is active, produce an observation in response to the actions environment_session.produce_observations([(\"*\", Observation())]) # Alternatively the environment can decide to **end** the trial with the following # environment_session.end([(\"*\", Observation())]) else: # The trial termination has been requested # Produce a final observation environment_session.end([(\"*\", Observation())]) for message in event.messages: # `event.messages` is a list of all the messages received by the environment (it can be empty) # Handle each message here. # -- Termination -- print(f\"Trial [{environment_session.get_trial_id()}] terminated\") For further details, take a look at the cogment.EnvironmentSession class reference. This environment implementation needs to be registered and served so that the Orchestrator can reach it. This can be done through a Context instance. context = cogment.Context(user_id=\"my_user_id\", cog_settings=cog_settings)context.register_environment(impl=environment, impl_name=\"my_environment\")await context.serve_all_registered(cogment.ServedEndpoint(port=9000)) For further details, take a look at the cogment.Context class reference.","s":"Environment","u":"/docs/guide/development-guide","h":"#environment","p":47},{"i":56,"t":"The environment session has 3 different methods able to send observations: start, produce_observations and end. Each of those methods takes a list of 2-tuples destination / observation. As demonstrated above, sending the same observation to all actors is done using \"*\" as the destination. environment_session.produce_observations([(\"*\", Observation(...))]) It is also possible to send different observations to different actors. This can be useful to send observations of the world from the point of view of the actor or to send partial observations. environment_session.produce_observations([ (\"my_first_actor_name\", Observation(...)), (\"my_second_actor_name\", Observation(...))]) Please note that the environment should always send observations such as each actor in the trial receives one.","s":"Sending observations","u":"/docs/guide/development-guide","h":"#sending-observations","p":47},{"i":58,"t":"Actors implementations look a lot like the environment's. They take actor session instance and have the same three sections: initialization, event loop and termination. The event loops in Actors' implementations handle three basic types of events: observation produced by the environment and should lead to an action being done. rewards sent by other actors or the environment, we'll talk about them in more details below. messages sent by other actors or the environment, we'll talk about them in more details below. A typical actor implementation would look like this: Python Javascript async def driver_actor(actor_session): # -- Initialization -- # Notify that the actor is ready for the trial to start. actor_session.start() async for event in actor_session.all_events(): if event.observation: # `event.observation` is an instance of the Observation produced by the environment observation = event.observation if event.type == cogment.EventType.ACTIVE: # The trial is active, it is expecting the agent to do an action actor_session.do_action(DriverAction(...)) for reward in event.rewards: # `event.rewards` is a list of all the rewards received by the actor (it can be empty) # Handle each reward here. for message in event.messages: # `event.messages` is a list of all the messages received by the actor (it can be empty) # Handle each message here. # -- Termination -- print(f\"Trial [{actor_session.get_trial_id()}] terminated\") For further details, take a look at the cogment.ActorSession class reference. const driverActor = async (actorSession) => { // -- Initialization -- // Notify that the actor is ready for the trial to start. actorSession.start(); for await (const event of actorSession.eventLoop()) { if (event.observation) { // `event.observation` is an instance of the Observation produced by the environment observation = event.observation; if (event.type === cogment.EventType.ACTIVE) { // The trial is active, it is expecting the agent to do an action actorSession.sendAction(new DriverAction()); } } for (const reward of event.rewards) { // `event.rewards` is a list of all the rewards received by the actor (it can be empty) // Handle each reward here. } for (const message of event.messages) { // `event.messages` is a list of all the messages received by the actor (it can be empty) // Handle each message here. } } // -- Termination -- console.log(`Trial [${actorSession.getTrialId()}] terminated`);}; For further details, take a look at the ActorSession class reference.","s":"Actor","u":"/docs/guide/development-guide","h":"#actor","p":47},{"i":60,"t":"A Cogment app can use two types of actors, they are identical in terms of implementation but differ in how they interact with the app's Orchestrator. Service actors are accessible in the same way the environment is, through a Context instance. context = cogment.Context(cog_settings=cog_settings, user_id=\"my_user_id\")context.register_actor(impl=actor, impl_name=\"driver_actor\", actor_classes=[\"driver\"])context.register_actor(impl=actor_slow, impl_name=\"driver_actor_slow\", actor_classes=[\"driver\"])await context.serve_all_registered(cogment.ServedEndpoint(port=9000)) Note that it is also through this registrating that the implementation is associated with one or more actor classes it implements. Client actors, contrary to Service actors, are not served to the Orchestrator. They connect as clients of the Orchestrator and join a trial that has started. Python Javascript context = cogment.Context(cog_settings=cog_settings, user_id=\"my_user_id\")context.register_actor( impl=actor, impl_name=\"human_pedestrian\", actor_classes=[\"pedestrian\"])await context.join_trial( trial_id=trial_id, cogment.Endpoint(url=\"grpc://orchestrator:9000\"), actor_name=\"Alice\") const context = new Context(cogSettings, \"my_user_id\");context.registerActor(actorImpl, \"human_pedestrian\", \"pedestrian\");await context.joinTrial(trialId, \"grpc://orchestrator:9000\", \"Alice\"); Note that a trial including one or more client actors will wait for all of them to join before any actor can start processing events. Due to the different network requirements, client actors are a good fit when implementing a frontend for human actors.","s":"Service actor / Client actor","u":"/docs/guide/development-guide","h":"#service-actor--client-actor","p":47},{"i":62,"t":"There are four actor parameters (see Trial Parameters) to manage actor responses for a trial: initial_connection_timeout, response_timeout, optional and default_action. The timeouts control when an actor becomes unavailable, and the other two control what happens when it becomes unavailable. The trial will be hard terminated by the Orchestrator if a required (non-optional) actor becomes unavailable, whereas it can continue if an optional actor becomes unavailable. The default_action is for optional actors; when the actor is unavailable, the default action will be sent to the environment. If there is no default action defined, the environment is informed that the actor is unavailable, but no action is provided. E.g. If a required actor (with optional set to False) has a response_timeout set to 5.0 seconds, but takes more than 5 seconds to respond to a new observation (e.g. due to excessive computation, or a crash), then the trial will be terminated.","s":"Actor Availability","u":"/docs/guide/development-guide","h":"#actor-availability","p":47},{"i":64,"t":"Trials are started by clients of the Orchestrator using a Controller. Instances of a controller are built from the context instance and connect to an Orchestrator endpoint. Python Javascript controller = context.get_controller( endpoint=cogment.Endpoint(url=\"grpc://orchestrator:9000\")) For further details, take a look at the Controller class reference. const controller = context.getController(\"grpc://orchestrator:9000\"); For further details, take a look at the Controller class reference.","s":"Controller","u":"/docs/guide/development-guide","h":"#controller","p":47},{"i":66,"t":"The controller can then be used to create trials and request their termination. Python Javascript trial_id = await controller.start_trial(trial_config=TrialConfig())# ...await controller.terminate_trial([trial_id]) const trialId = await controller.startTrial(new TrialConfig());// ...await controller.terminateTrial([trialId]); tip The default behavior of the Controller's terminate trial function is to trigger a soft termination, an optional hard parameters can be set to True to trigger a hard termination. Start trial from trial parameters​ The above example uses an instance of the user-defined trial configuration to start the trial. This instance is then provided to a pre-trial hook to fully define the trial parameters. It is also possible to fully provide the trial parameters when starting the trial. actor_1_params = cogment.ActorParameters( cog_settings, name=\"Alice\", class_name=\"pedestrian\", endpoint=\"cogment://client\")actor_2_params = cogment.ActorParameters( cog_settings, name=\"ai_driver\", class_name=\"driver\", endpoint=\"grpc://driver_actors:9000\", implementation=\"driver_actor_slow\")environment_config=EnvironmentConfig( # ...)trial_params=cogment.TrialParameters( cog_settings, environment_name=\"environment\", environment_implementation=\"my_environment\" environment_endpoint=\"grpc://environment:9000\", environment_config=environment_config, actors=[ actor_1_params, actor_2_params, ]) For further details, take a look at the cogment.TrialParameters class reference.","s":"Start and terminate trials","u":"/docs/guide/development-guide","h":"#start-and-terminate-trials","p":47},{"i":68,"t":"The controller can also be used to subscribe to events occuring in the trials run by the Orchestrator it connects to. For example, this can be used to wait for a trial's end: Python Javascript async for trial_info in controller.watch_trials(trial_state_filters=[ cogment.TrialState.ENDED]): print(f\"The trial having id [{trial_info.trial_id}] ended\") for await (const trialListEntry of controller.watchTrials([ cogment.TrialState.ENDED,])) { console.log(`The trial having id ${trialListEntry.getTrialId()} ended.`);}","s":"Watch trials","u":"/docs/guide/development-guide","h":"#watch-trials","p":47},{"i":71,"t":"Rewards are sent to Actors from another actor or the Environment. The session instance passed to their implementation can be used for this purpose. session.add_reward(value=-1, confidence=1, tick_id=-1, to=['an_actor_name']) Rewards consist of an arbitrary numerical value describing how the reward \"sender\" believes the actor performed. It is weighted by a value between 0 and 1 qualifying the confidence of the \"sender\" in its reward, from a very low confidence just above 0 to a very high confidence approaching 1. The confidence value is used to collate all the rewards sent to an actor at the same time. Optionally, a reward can be provided with arbitrary user data. Each reward applies to a list of recipients (either all the actors, all the actors of a given class or a specific actor) at a specific point in time, during the trial, defined as a tick. The tick ID can represent a past action if the value is smaller than the current tick ID (\"future\" actions are not allowed). Past actions, like sending a reward related to a past tick ID, are handled in accordance with the nb_buffered_ticks trial parameter. The full documentation for session.add_reward can be found here.","s":"Creating","u":"/docs/guide/development-guide","h":"#creating","p":47},{"i":73,"t":"All the Rewards that are sent and destined to each specific actor for a given point in time are collated together by the framework. The actor can take into account the reward directly as the trial is running by consuming the \"reward\" event in their event loop. Python Javascript async for event in actor_session.all_events(): # [...] for reward in event.rewards: # `reward.tick_id` is the id of the tick this reward concerns. tick_id = reward.tick_id # `reward.value` is the aggregated value of the reward. value = reward.value for source_reward in reward.all_sources(): # Iterate over individual source rewards. reward_value = source_reward.value reward_confidence = source_reward.confidence reward_sender = source_reward.sender reward_user_data = source_reward.user_data for await (const event of actorSession.eventLoop()) { // [...] for (const reward of event.rewards) { // `reward.tickId` is the id of the tick this reward concerns. const tickId = reward.tickId; // `reward.value` is the aggregated value of the reward. const value = reward.value; for (sourceReward of reward.sourcesList) { // Iterate over individual source rewards. const rewardValue = sourceReward.value; const rewardConfidence = sourceReward.confidence; const rewardSender = sourceReward.senderName; const rewardUserData = sourceReward.userData; } }}","s":"Consuming","u":"/docs/guide/development-guide","h":"#consuming","p":47},{"i":76,"t":"Messages can be created and sent between actors or the environment within a trial using their session instance. Python Javascript session.send_message( user_data=MyProtobufDataStructure(...), # any protobuf data structure can be used here. to=['pedestrian:*'], # send the message to all the actors of the \"pedestrian\" class) The full documentation for session.send_message can be found here. const message = new Message();message.setRequest(\"hello\");// Now we serialize into an Any protobuf message.const anyPb = new MyProtobufDataStructure();anyPb.pack(message.serializeBinary(), \"cogment_app.Message\");actorSession.sendMessage({ from: actorName, payload: anyPb, to: \"otherActorName\", trialId,}); The full documentation for actorSession.sendMessage can be found here. Messages consist of an arbitrary payload, their user_data/payload, defined as an instance of any protobuf data structure. A message can be sent to one, many or all actors in a trial and / or to the environment.","s":"Creating","u":"/docs/guide/development-guide","h":"#creating-1","p":47},{"i":78,"t":"All the messages that are sent and intended for each specific actor or environment will be received by the target actor or environment. Actors or the environment can use the message directly, live, as the trial is running, by consuming message event in their event loop. Python Javascript async for event in actor_session.all_events(): # [...] for message in event.messages: # `message.sender_name` is the name of the actor who sent a message sender_name = message.sender_name # `message.payload` is the content of the message, it needs to be unpacked payload = message.payload for await (const event of actorSession.eventLoop()) { // [...] for (const message of event.messages) { // `message.sender_name` is the name of the actor who sent a message const sender = message.sender; // `message.data` is the content of the message, it needs to be unpacked const data = message.data; const newMessage = data.unpack( (x: Uint8Array) => Message.deserializeBinary(x), \"cogment_app.Message\" ); }}","s":"Consuming","u":"/docs/guide/development-guide","h":"#consuming-1","p":47},{"i":80,"t":"When starting a trial from a controller, an instance of the message type defined in trial:config_type can be provided. This instance is then passed to the registered Pre trial hooks when the Orcehstrator was started. The role of these hooks is to fully parametrize the trial based on the provided config. To achieve that, they can modify the default trial params defined in the parameters to specify the environment (i.e. its endpoint, implementation name & configuration), the number and parameters of the participant actors (i.e. their name, class, endpoint, implementation name & configuration) as well as additional parameters for the trial. The pre-trial hook can therefore be used to dynamically configure trials, to act as a service endpoint registry, or a load balancer. Pre-trial hook implementations are registered in the same way the environment or actor implementation are and follow the same session pattern. async def my_pre_trial_hook(pre_hook_session): # The trial config provided by the controller can be retrieved like that trial_config = pre_hook_session.trial_config # The trial params can be edited directly pre_hook_session.environment_config = # [...] pre_hook_session.environment_endpoint = \"grpc://my_environment:9000\" pre_hook_session.actors = [ { \"name\": \"my_first_actor_name\", \"actor_class\": \"driver\", \"endpoint\": \"grpc://driver:9000\", \"implementation\": \"driver_actor\", \"config\": # [...], }, { \"name\": \"my_second_actor_name\", \"actor_class\": \"predestrian\", \"endpoint\": \"cogment://client\", \"config\": # [...], }, ] # And finally should be validated pre_hook_session.validate()context.register_pre_trial_hook(impl=my_pre_trial_hook)","s":"Pre-trial hook","u":"/docs/guide/development-guide","h":"#pre-trial-hook","p":47},{"i":82,"t":"Over their lifetime trials can be in different states managed by the Orchestrator. The current state of the trial can be accessed by a Controler. Possible Trial States are defined as: cogment.TrialState in the Python SDK. cogment.TrialState in the Javascript SDK. cogmentAPI.TrialState in the gRPC API.","s":"Trial lifetime","u":"/docs/guide/development-guide","h":"#trial-lifetime","p":47},{"i":84,"t":"The trial starts with a request from a Controller to the Orchestrator. At creation the trial is in the INITIALIZING state. If no trial params are provided at this stage, registered Pre-trial hooks are called in sequence. The trial is now fully initialized and becomes PENDING as it wait for all the components, actors and environment to be available. Once all the non-optional actors are available and the environment sends the initial observation set, the trial becomes RUNNING. If at least one non-optional actor is unavailable, it terminates right away and becomes ENDED.","s":"Trial start","u":"/docs/guide/development-guide","h":"#trial-start","p":47},{"i":86,"t":"As long as the trial is RUNNING, the Orchestrator executes steps: To each actor, the Orchestrator sends an event, having the ACTIVE type, containing its observation, The Orchestrator then waits to receive one action per actor, To the environment, the Orchestrator sends an event, having the ACTIVE type, containing the set of actions, The Orchestrator then waits to receive the set of observations from the environment.","s":"Trial run","u":"/docs/guide/development-guide","h":"#trial-run","p":47},{"i":88,"t":"Trial ended by the environment​ This is the normal way for a trial to end. The environment sends the final observation set, using the session's end method. The trial state is set to TERMINATING. Observations are sent to the actors with the event type ENDING. Rewards and messages sent before that point will sent to their destination; later ones will not. Once all the last events are received, the Orchestrator sends a event of type FINAL to all the components. The trial becomes ENDED. Soft termination​ Soft termination can be triggered either by the user, using the Controller or after a maximum number of steps, if the trial Parameter max_steps is set. The Orchestrator waits until it receives the next action set from the actors. The trial state is set to TERMINATING. Actions are sent to the environment with the event type ENDING. From this point on the flow is the same as when the trial is ended by the environment. note After a soft termination is initiated (i.e. after receiving an event of type ENDING), the next set of observations sent by the environment will always be the last one (i.e. using end or produce_observation will have the same behavior). Hard termination​ Hard termination can be triggered in multiple ways: By the user, using the Controller. Because of unavailable actors. If a required (non-optional) actor becomes unavailable (for any reason), the trial will be terminated (see Actor Availability). Because of inactivity. If a component (actor, environment, pre-trial hook, etc) does not respond, the trial will be waiting and be inactive. If the trial is inactive for too long (see Parameter max_inactivity), it will be terminated. With actor components this may happen when the timeout is too long (or indefinite) then the actor never becomes unavailable (see Actor Availability) and the trial will keep waiting for it. Because of a critical error. In all this cases: The trial becomes TERMINATING. The Orchestrator sends a event of type FINAL to all the components. The trial becomes ENDED.","s":"Trial end","u":"/docs/guide/development-guide","h":"#trial-end","p":47},{"i":90,"t":"note Starting with versions v2.2.0 of Cogment and v2.1.0 of the python SDK, it is now possible to provide the full trial parameters when starting a trial. This recipe is still applicable but it is recommended to use the new method instead. When starting a trial, the controller can only provide an instance of the trial configuration message and from this instance the pre trial hook can fill the trial parameters, including a full configuring of the environment and actors involved in the trial. More details can be found here. In some cases, you might want to fully configure a trial from the controller. This recipe is dedicated to this use case. caution Implementing this recipe enables any client having access to the orchestrator to specify URLs - the actor and environment endpoints - that will be accessed (and trusted) by the orchestrator. The general idea is to define TrialConfig so that it includes everything that's needed to parametrize the trial. It should look something like the following. message EnvironmentParams { string endpoint = 1; EnvConfig config = 2; string implementation = 3;}message ActorParams { string name = 1; string actor_class = 2; string endpoint = 3; string implementation = 4; ActorConfig config = 5;}message TrialConfig { EnvironmentParams environment = 1; repeated ActorParams actors = 2; uint32 max_steps = 3; uint32 max_inactivity = 4;} When starting a trial from the controller you'll need to define the full config. trial_id = await controller.start_trial(trial_config=TrialConfig( environment=EnvironmentParams( endpoint=\"grpc://my-environment:9000\", config=# [...], implementation=\"my-implementation\" ))) Finally a pass-through pre-trial hook needs to be implemented, registered and served. Its endpoint must be specified to the Orchestrator on startup. async def passthrough_pre_trial_hook(pre_trial_hook_session): trial_config = pre_trial_hook_session.trial_config pre_trial_hook_session.environment_config = trial_config.environment.config pre_trial_hook_session.environment_endpoint = trial_config.environment.endpoint pre_trial_hook_session.environment_implementation = trial_config.environment.implementation pre_trial_hook_session.actors = [ { \"name\": actor_params.name, \"actor_class\": actor_params.actor_class, \"endpoint\": actor_params.endpoint, \"implementation\": actor_params.implementation, \"config\": actor_params.config, } for actor_params in trial_config.actors ] pre_trial_hook_session.trial_max_steps = trial_config.max_steps pre_trial_hook_session.trial_max_inactivity = trial_config.max_inactivity pre_trial_hook_session.validate()context.register_pre_trial_hook(pre_trial_hook)","s":"Fully configure a trial from a Controller","u":"/docs/guide/implementation-recipes/configure-trial-from-controller","h":"","p":89},{"i":92,"t":"tip This document is written as a guide to migrate from Cogment v1 to v2, a full list of the changes is also available here.","s":"Migrate from Cogment v1 to v2","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"","p":91},{"i":94,"t":"The following components needs to be updated to work with Cogment v2: Update the CLI to the latest version and check that the version is correct curl --silent -L https://raw.githubusercontent.com/cogment/cogment-cli/main/install.sh | sudo bash cogment version Update the docker images to the versions compatible with the 2.0 API. These should be updated in Dockerfile, *.dockerfile or docker-compose.yml files in your project. The minimal version to use API 2.0 are: cogment/orchestrator:v2.0.0 cogment/trial-datastore:v0.2.0 (prereleased component) cogment/model-registry:v0.4.0 (prereleased component) Update the version of the python SDK to cogment[generate]>=2.0.2 (learn more about generate here) in your requirements.txt files or equivalent. Update the version of the javascript SDK to @cogment/cogment-js-sdk^2 in your package.json files or equivalent.","s":"Updating components","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#updating-components","p":91},{"i":96,"t":"The cogment.yaml file has seen a lot of changes, the most important one is that we now differ between the spec file which specifies the types of trial for a cogment project, including actor classes and their action/observation spaces, and the parameters file which specifies default parameters for trials. The spec file is used in the code generation process of each SDKs and is no longer used by the orchestrator. The parameters file is used by the orchestrator, if you use pre-trial hooks to configure the started trials it might not be necessary. We now recommand that two different files, respectively named cogment.yaml and params.yaml be used, however you can still use one file containing both content. Recommended update Move the trial_params section of the existing cogment.yaml file to a dedicated params.yaml file. Further changes are required to both sections, as described below. Required update If the --config=cogment.yaml was provided to the orchestrator, remove it. To provide a parameters file to the orchestrator use the --params=params.yaml command line option. Further details can be found in the spec file documentation.","s":"cogment.yaml split in a spec file and a parameters file","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#cogmentyaml-split-in-a-spec-file-and-a-parameters-file","p":91},{"i":98,"t":"pre-trial hooks are no longer defined in the cogment.yaml file, but instead are now given to the orchestrator as a command line option or through an environment variable. Required update Remove the trial:pre-hooks section from the spec file. Instead specify the hook addresses as gRPC URLs, e.g. grpc://1.1.1.1:9000, using the orchestrator cli option --pre_trial_hooks, separating potential multiple hooks with comas. Further details can be found in the orchestrator documentation.","s":"pre-trial hooks definition moved to an orchestrator configuration","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#pre-trial-hooks-definition-moved-to-an-orchestrator-configuration","p":91},{"i":100,"t":"The datalog definition is no longer a project-wide configuration but can be specified for each trial in its parameters. Required update Remove the datalog section from the spec file. Datalog can be defined in the parameters file with the following format: trial_params: datalog: - endpoint: grpc://logger:9000 It can also be defined when configuring the trial in the pre-trial hook.","s":"Datalog definition now part of each trial's parameters","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#datalog-definition-now-part-of-each-trials-parameters","p":91},{"i":102,"t":"Instead of returning raw protobuf messages, Python wrapper objects are returned, so access to the raw messages is not available anymore The DatalogSession attribute raw_trial_params is not available anymore. The DatalogSession attribute trial_params returns a cogment.LogParams object instead of a protobuf message. The DatalogSession.get_all_samples() now generates cogment.LogSample objects instead of a protobuf message. If there is a need to deserialize v1 data (e.g. from an old database), v1 versions of the sample protobuf messages (cogment.api.datalog_pb2.TrialParams_v1 and cogment.api.datalog_pb2.DatalogSample_v1) are provided in the API for convenience. For more information, please see the following sections of the Python SDK Documentation LogSample DatalogSession","s":"Datalog API has changed, and now has a python wrapper","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#datalog-api-has-changed-and-now-has-a-python-wrapper","p":91},{"i":104,"t":"The config sections that were used to define default user configuration of trials, environments and actors are no longer supported. If necessary, these must be provided when starting the trial, for the trial config, and in pre-trial hooks, for the environment and actors config. Defaults can also be defined in the implementation code itself. Required update Remove the config sections (for trial, environment and actor) from the params file. For simple projects, provide a default configuration in the implementation code directly, for more complex one use a pre-trial hook.","s":"Default trial parameters no longer support definition user configuration for trials, environments and actors","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#default-trial-parameters-no-longer-support-definition-user-configuration-for-trials-environments-and-actors","p":91},{"i":106,"t":"Recommended update Use full gRPC URLs, starting with grpc://, when defining endpoints in the params file on in the SDKs. Additionaly, to prepare for further features, we are introducing a cogment URL scheme. At the moment only the special client endpoint is concerned. Recommended update If actors are clients, replace the endpoint value from client to cogment://client","s":"Prefer using full URL for endpoints","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#prefer-using-full-url-for-endpoints","p":91},{"i":108,"t":"Framework support for \"delta\" observations has been discontinued. The same result can be obtained user-side in the environment and actor implementations. Required update Remove the following section from the spec file: import::python import::javascript actor_classes::observation::delta actor_classes::observation::delta_apply_fn In the python SDK, RecvObservation delta attribute no longer exists. You can support delta observations in your code, for example you could change the definition of your observation message to support both full observation or delta observation. message Observation { oneof observation_or_delta { ObservationMessage obs = 1; DeltaObservation delta = 2; }} As before the environment side can decide to send full or delta observations. On the consumer side, actor or datalog, you'll need to keep the previous observation around to apply the delta to it. Recommended update Instead of using RecvObservation snapshot attribute, use observation instead.","s":"Support for \"delta\" observations discontinued","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#support-for-delta-observations-discontinued","p":91},{"i":110,"t":"The code generation step is no longer perfomed by the CLI but by dedicated tools provided with the SDKs. cogment copy is provided by the CLI as a cross platform way to copy the required files, i.e. the spec, protobuf and params files, from the root of the project to services source directories. As a result of these cogment sync and cogment generate are no longer available. Required update Replace any usage of cogment sync with cogment copy. This new commands needs to know explicitly what files to copy cogment copy data.proto cogment.yaml params.yaml environment_dir actor_dir Required update For services using the python SDK: Make sure you install the SDK and the generate tool using pip install cogment[generate]. Generate the necessary files with python3 -m cogment.generate --spec cogment.yaml. Required update For services using the javascript SDK Generate the necessary files with npx cogment-js-sdk-generate cogment.yaml.","s":"New code generation workflow","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#new-code-generation-workflow","p":91},{"i":112,"t":"Required update Change the name of environment variables: - From `TRIAL_LIFECYCLE_PORT` to `COGMENT_LIFECYCLE_PORT`- From `TRIAL_ACTOR_PORT` to `COGMENT_ACTOR_PORT`- From `PROMETHEUS_PORT` to `COGMENT_ORCHESTRATOR_PROMETHEUS_PORT`","s":"Orchestrator environment variables namespaced","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#orchestrator-environment-variables-namespaced","p":91},{"i":114,"t":"Just like the actors, the environment in a trial can now be named, this name defaults to \"env\". The environment name is used to address it, in particular to send messages. Environments and actors names belong to the same \"namespace\" and must be unique. Recommended update Instead of using the to_environment arguments of ActorSession.send_message(), use to and specify the environment's name.","s":"Trials' environments can be named","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#trials-environments-can-be-named","p":91},{"i":116,"t":"Required update Controller.terminate_trial() and Controller.get_trial_info() no longer supports providing a single trial identifier as a string. Their usage need to change from # Using named argumentmy_controller.terminate_trial(trial_id=\"my_trial_id\")# Using positional argumentmy_controller.get_trial_info(\"my_trial_id\") to my_controller.terminate_trial(trial_ids=[\"my_trial_id\"])my_controller.get_trial_info([\"my_trial_id\"]) Required update In actor implementaion, remove all usage of get_active_actors(). This method has been restricted to the environment only. If actors need the full list of actors, there are a few possibilities: - Create a controller in the actor implementation and use the Controller.get_actors() method. - Receive the actor list in the config from the pre-trial hooks; the pre-trial hooks have implicit knowledge of all actors (at least the last hook). - Add the information in the actors observation space. - Send the information in a message. Required update Remove all usage of EnvironmentSession.send_message() using the to_environment argument. Required update Rename the parameter observations in EnvironmentSession.end(observations=observations) to final_observations. Further details can be found in the python SDK documentation.","s":"Python SDK","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#python-sdk","p":91},{"i":118,"t":"There has been a complete rework of the JS SDK we therefore recommend you to take a look at the dedicated javascript SDK documentation. In more details: You can keep your actor function, as well as any logic dealing with the observation object, as its shape has remained the same, If you are using the useActions React hook, there is a new version of that hook, which can be retrieved by running cogment init with an updated version of the Cogment CLI, and choosing yes when prompted if you want a web client.","s":"Javascript SDK","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#javascript-sdk","p":91},{"i":120,"t":"Here we list a few error you are likely to see if something was not upgraded properly to Cogment 2.0: AttributeError: module \"cogment\" has no attribute \"delta_encoding\" This would be logged while trying to run a Python script and may happen if you use cogment generate instead of the new generation workflow. This is caused by the discontinuation of delta encoding for observations. Failure: [Problem rebuilding trial params [INVALID_ARGUMENT:(environment.config) some_message: Cannot find field.]] When starting the Orchestrator with --config or --params. This may happen when using an older version of the default parameters in a params or spec file. It will happen when the default parameters contain an unknown field; In this particular case, the field config (i.e.from environment.config) is \"unknown\" because it is not accepted anymore in the Cogment 2.0 default parameters.","s":"Troubleshooting","u":"/docs/guide/implementation-recipes/v2-migration-guide","h":"#troubleshooting","p":91},{"i":122,"t":"Now that we have a working but empty Cogment app, let's look at how these pieces interact in the context of the RPS game. In this step of the tutorial, we will lay out how Actors are defined in Cogment. To build out our RPS application, we will add the ability for our Actors to select actions (rather than produce empty strings).","s":"Actors: Players of RPS","u":"/docs/guide/tutorial/actors-in-cogment","h":"","p":121},{"i":124,"t":"In Cogment, the general concept of an Actor is a role that has agency. In RPS, this is a player of the game. At a high level, Cogment operates the same whether the Actor is human or machine-based. For now, we will just look at machine-based Actors. A more in-depth tutorial will guide you through implementing a client Actor which can be used by a human player to participate in the RPS game. To fully specify Actors in Cogment, we need to define what they do (what observations they take and actions they produce), how they do it, and where they run those computations. To better understand how Cogment represents Actors, the following terminology is important to highlight: The Actor Service is the designated computational node where Actor instances run. A service can manage multiple Actor instances concurrently. The Actor Service is where the computations are run. The Actor Service is launched by actors/main.py on the TCP port set by the ACTORS_PORT variable in the .env file. The Actor Class is the specification of the attributes and behaviours that an Actor can have, for example what sort of inputs the Actor expects and what sort of outputs it will produce. If we want to have several different Actors that all behave similarly (take same type of inputs and produce same type of outputs) we can define an Actor class and different instances of that class can use different implementations. The Actor Class defines what the Actor does. The Actor Classes are defined in the cogment.yaml file in the root directory (which is copied to each service directory as part of the ./run.sh install command). The Actor Implementation is the logic of how the role operates. Specifically, the implementation refers to the function which controls how the Actor makes decisions about what action to output given some input information about the state of the world. The Actor implementation is how the Actor chooses actions. The function we use for our first Actor implementation is defined in actors/main.py. In the above image, we showcase these different concepts: the Actor Class \"Player\" lays out the skeleton for what components the Actor will need to manage. We can create an instance of this class (gray) with an Actor Implementation that does random action selection, which takes an Observation as input and produces an action as output. The computations made by the Player Actor instance are run on the Actor Service.","s":"What does Cogment need to know about an Actor?","u":"/docs/guide/tutorial/actors-in-cogment","h":"#what-does-cogment-need-to-know-about-an-actor","p":121},{"i":126,"t":"Let's look at actors/main.py to see how Cogment handles the concepts of the Actor Service, Actor Class, and Actor Implementation in the RPS application. If we look at the main() function that is invoked by running this file, we see: The main() function first initializes a context in which the Actors will be registered. When registering an Actor, we specify the class this Actor will be an instance of (from the options given in cogment.yaml), and which implementation will be used. So far in our RPS application, we have only registered one type of Actor: an instance of the player class using the random_agent implementation. After registering each of the different types of Actors that Cogment will be responsible for managing in the application, this function starts the Actor Service that will handle any Actor-associated computations on the appropriate port, and awaits the termination of the service. note Ports for running services are specified in the .env file, loaded by the .run.sh script, and retrieved by the os package to make the variable available to Python. To change the port this service uses, update the.env file in the root directory rather than changing main.py.","s":"Defining the Actor Service","u":"/docs/guide/tutorial/actors-in-cogment","h":"#defining-the-actor-service","p":121},{"i":128,"t":"The Actor Class is where we define the domain over which the Actor will operate, i.e. what inputs and outputs the Actor is expected to handle. We specify the Actor Class in the cogment.yaml file, using the imported Protocol Buffer (protobuf) messages from the associated data.proto file. The cogment.yaml file lets Cogment know how to configure each of the components involved in running the Trial, so we will return to it again later. The actor_classes section describes what types of Actors exist in this game (here only player Actors), and what the inputs and outputs of an instance of the player class of Actor look like: This tells Cogment that an instance of the player Actor class will expect observations specified by the rps.Observation message, and will produce actions of a form defined by the rps.PlayerAction message. The Actor Class is fully specified here by its Observation space and Action Space. note Message types are referenced by rps.SomeMessageName, since message types imported from a .proto are referred to through their package namespace, which has been set to rps in the data.proto file. (For more information about the general use of the cogment.yaml file, see the dedicated reference page.)","s":"Defining the Actor Class","u":"/docs/guide/tutorial/actors-in-cogment","h":"#defining-the-actor-class","p":121},{"i":130,"t":"The action space refers to the set of valid actions which can be taken by an Actor at each step of the game. The cogment.yaml file tells Cogment that a member of the player Actor class can take actions of type PlayerAction as defined in the data.proto file. If we look at the PlayerAction message in data.proto, we see it is a message of type Move, where a Move is defined to be one of ROCK, PAPER, or SCISSORS, or an UNKNOWN move: We also specify here that a Move is an enum type of Protobuf message, meaning that it can take only one of a predefined list of values. We include UNKNOWN in this because the first argument of an enum will be its default value, and we don't wish any of our actions to be a default behaviour. Together these specify the action space: a valid action for a player type Actor is a single one of the list of possible moves.","s":"Action Space","u":"/docs/guide/tutorial/actors-in-cogment","h":"#action-space","p":121},{"i":132,"t":"The observation space refers to the set of possible inputs an Actor can receive at each step of the game. Observations are what Actors perceive from the Environment about what is the current state of their world, which they use to make decisions about what actions they should take. In the context of RPS, the Environment is limited to the two players, the actions they took, and the consequence of both of their actions. The cogment.yaml file tells Cogment that a member of the player Actor class receives observations of the form Observation as defined in the data.proto file. The Observation message type itself specifies that each player considers information about themselves and their opponent, and that these pieces of information are of the type PlayerState: Note that last_move is optional because during the first round of the game, the players have not yet played any move. For all other steps of the game, each player is considering what was their last move, their opponents last move, and which of the two of them won or lost the match.","s":"Observation Space","u":"/docs/guide/tutorial/actors-in-cogment","h":"#observation-space","p":121},{"i":134,"t":"While the Class defines how an Actor expects to receive observations and output actions, the Actor implementation specifies the details of how the Actor makes decisions. This implementation function is a callback function, used once per actor and per trial and handles the full lifetime of the Actor. Until now, we have used a partially completed random_agent implementation defined in the actors/main.py file. It is partially complete because the player's actions are currently empty. In this step, we will enable our Actor to select actions at random. An Actor implementation specifies: The actor's initialization, before the async for. This is where, for example, the Actor's internal data can be defined before calling actor_session.start() to notify that it is ready. The event loop, which specifies how the Actor makes decisions about what action to select in response to an observation in each step, and what kind of rewards it might receive from selecting its action. Here, you can see that by default the action gets an empty PlayerAction message (the data structure defined in data.proto), which has the expected format but contains no data. The termination block, i.e. what the Actor does after all the events. The argument passed to the Actor implementation is the Actor's session, which allows the Orchestrator to manage all the data associate with the Actor's operations in the trial.","s":"Defining the Actor Implementation","u":"/docs/guide/tutorial/actors-in-cogment","h":"#defining-the-actor-implementation","p":121},{"i":136,"t":"We'll modify the random_agent function defined in actors/main.py to enable our Actor implementation to select random actions (rather than produce empty strings). First, we need to import the different options Move can take, as defined in our data structures in data.proto. We will also need to import the Python package random, which will enable us to choose one of the Move options at random. In the \"Imports\" section at the top of the file, add the following: from data_pb2 import ROCK, PAPER, SCISSORSimport random We will store all of the possible options for the types of MOVES we can take in a list. Add the following code to the \"Settings\" section: MOVES = [ROCK, PAPER, SCISSORS] Recall from above that the PlayerAction message has one field: move. This is the piece we need to pass to the formerly empty PlayerAction message inside the event loop of the random_agent instance definition. Replace the if event.observation: block in the event loop with the following: if event.observation: print(f\"'{actor_session.name}' received an observation: '{event.observation}'\") if event.type == cogment.EventType.ACTIVE: action = PlayerAction(move=random.choice(MOVES)) ## NEW IN STEP 2 actor_session.do_action(action) The completed Actor implementation should look like this: We now have an Actor that will randomly select actions. We showed earlier in this step of the tutorial where this implementation is used when registering instances of Actors with the service. Next, we will show how Cogment specifies which Actors and how many of them will participate in the Trial.","s":"Completing the random_agent Actor Implementation","u":"/docs/guide/tutorial/actors-in-cogment","h":"#completing-the-random_agent-actor-implementation","p":121},{"i":138,"t":"If we look at the trial_runner/main.py code, we will see the code that tells Cogment exactly which participants will be part of a trial. This code creates the context in which to run the trial, and a controller which will actually carry out the function of starting the trial, monitoring its state, and ending the trial. This is also where we say specifically which Actors will be part of the trial. Here, we are going to create a trial with two Actors which use identical parameter settings, except for having different names. Each player uses an instance of the Actor type we registered on the Actor Service in actors/main.py - if we call for a different implementation or class here, Cogment won't know what to do with that because no other Actor types have been registered with the Actor service. We can change the player names to Bob and Alice in trial_runner/main.py just to see how that impacts what gets reported as the services are running: actor_1_params = cogment.ActorParameters( cog_settings, name=\"Bob\", # player_1 class_name=\"player\", endpoint=ACTORS_ENDPOINT, implementation=\"random_agent\" ) actor_2_params = cogment.ActorParameters( cog_settings, name=\"Alice\", # player_2 class_name=\"player\", endpoint=ACTORS_ENDPOINT, implementation=\"random_agent\" ) To learn more about the parameters, check the cogment.TrialParameters class reference. Then we specify the parameters of the trial -- including the specifications for our two players -- and pass these trial parameters to the controller to start a new trial. In this trial runner, our controller will terminate the trial after the players have played for 5 seconds. Then the Trial Runner tells the controller to start a trial with the specified parameters. The start_trial call will return a unique identifier for the trial. The Trial Runner uses this information to request the end of the trial with terminate_trial. It is also possible to tell the controller the ID you want your trial to have, by passing your chosen ID to the trial_id_requested parameter of the start_trial method. We will do this in the next step of the tutorial. We can now run the application, and we will see the service terminal logs report that each player selects a valid action instead of an empty one. We can also see that the services terminal prints out what the Actors were receiving from the Environment as Observations: Quick Summary We learned about how Cogment represents Actors and the different concepts of the Actor Service, Actor Class, and Actor Implementation. We enabled the random_agent Actor implementation to select actions by importing the ROCK PAPER SCISSORS data structures defined in the data.proto (via data_pb2.py), the random package, and changing the event block to: async for event in actor_session.all_events(): if event.observation: print(f\"'{actor_session.name}' received an observation: '{event.observation}'\") if event.type == cogment.EventType.ACTIVE: action = PlayerAction(move=random.choice(MOVES)) # new in step 2 actor_session.do_action(action) for reward in event.rewards: print(f\"'{actor_session.name}' received a reward for tick #{reward.tick_id}: {reward.value}\") We also looked at how the Trial Runner calls upon Actors to participate in the trial. We modified the parameters for the Actors in the Trial Runner and gave each player a name: actor_1_params = cogment.ActorParameters( cog_settings, name=\"Bob\", class_name=\"player\", endpoint=ACTORS_ENDPOINT, implementation=\"random_agent\")actor_2_params = cogment.ActorParameters( cog_settings, name=\"Alice\", class_name=\"player\", endpoint=ACTORS_ENDPOINT, implementation=\"random_agent\") In the next step of the tutorial, we will go through how Cogment represents the Environment, and set up the Environment implementation to give Bob and Alice observations about the state of the world that contain meaningful information.","s":"Specifying which Actors participate in the Trial","u":"/docs/guide/tutorial/actors-in-cogment","h":"#specifying-which-actors-participate-in-the-trial","p":121},{"i":140,"t":"note It is not necessary to have gone through all the previous sections to understand this part, but the code changes refer to the code in the previous step. The code can be retrieved from the tutorial's repository. In this step of the tutorial, we will add the Cogment Directory to the project. A directory is a register of services together with the network addresses where to connect to the services. This will let components find the services they need instead of having to already know the network address. It makes it easier to manage more complicated projects and complex deployments.","s":"Improve Operational Efficiency with a Cogment Directory for Service Discovery","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"","p":139},{"i":142,"t":"In the ./run.sh script we will add the command to start the Directory service. function directory_start() { cogment services directory --port=9005} Since the Directory is a service that all other services depend upon, it needs to be started first. Here we have a few choices; we could decide to start it in a separate terminal before the other services, or we could start it in the background with the same command as starting the services. It could also be kept running all the time. For the purpose of demonstration and simplicity we will start it in the background, so in the ./run.sh script we will change the services_start command like this: function services_start() { directory_start & sleep 3 _run_parallel orchestrator_start environment_start random_agent_start dqn_agent_start}","s":"Adding the Directory service","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#adding-the-directory-service","p":139},{"i":144,"t":"Now that we have a directory, we need to register the services so they can be \"discovered\" by components. The Cogment SDK and CLI know how to use a directory and will register themselves if possible. To make it possible, the components need to know the network address of the directory. This can be provided on an individual basis at the code level, e.g.: context = cogment.Context(cog_settings=cog_settings, user_id=\"rps\", directory_endpoint=\"grpc://localhost:9005\") For the CLI it can be provided on the command line, e.g.: $ cogment services orchestrator --directory_endpoint=\"grpc://localhost:9005\" But the easiest way is to set the environment variable COGMENT_DIRECTORY_ENDPOINT, which is what we will do here by adding it to the ./.env file. And while we are there, we will parametrize the directory port for better maintainability: DIRECTORY_PORT=9005COGMENT_DIRECTORY_ENDPOINT=\"grpc://localhost:${DIRECTORY_PORT}\" and in ./run.sh we update the directory start command like this: function directory_start() { _load_dot_env cogment services directory --port=\"${DIRECTORY_PORT}\"} note In special circumstances, which we don't need for this tutorial, components can be registered explicitly with the Directory client CLI.","s":"Registering services to the Directory","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#registering-services-to-the-directory","p":139},{"i":146,"t":"We have a directory, and the services are registered in that directory, but for it to be useful, we need to \"discover\" these services. This is done by providing Cogment with discovery endpoints instead grpc endpoints (i.e. network addresses). Let's start with the Trial Runner (./trial_runner/main.py), we'll change the endpoint variables to context discovery endpoints like this: ORCHESTRATOR_ENDPOINT = \"cogment://discover\"ENVIRONMENT_ENDPOINT = \"cogment://discover\"RANDOM_AGENT_ENDPOINT = \"cogment://discover\"DQN_AGENT_ENDPOINT = \"cogment://discover\" How is Cogment differentiating and finding the right service? This is done by using the context where the endpoint is provided, thus the name \"context\" discovery endpoint. Endpoints can also be \"explicit\" discovery endpoints, in which case they don't use the context in which they are used; all the information is in the endpoint explicitly (since we consider the context information to be implicit). An example of context information can be seen here where the orchestrator endpoint is given: controller = await context.get_controller(endpoint=cogment.Endpoint(\"cogment://discover\")) The cogment://discover string does not contain anything to say that this is for an orchestrator. But because it is given to the get_controller parameter which requires an orchestrator endpoint, Cogment has the context that this is an endpoint to communicate with an orchestrator, so it will use this fact (i.e. this must be an endpoint for an orchestrator) to inquire the directory. In other words, it matters where a context discovery endpoint is used. We can also simplify the code even further because the method get_controller has a default endpoint parameter, and the default value for a cogment.Endpoint is a pure context discovery endpoint (i.e. \"cogment://discover\"), so we can change it like this: controller = await context.get_controller() Which means that we don't need the ORCHESTRATOR_ENDPOINT variable anymore, and we'll remove that from the Trial Runner file. Then we also don't need the ORCHESTRATOR_HOST environment variable, and we'll remove that from the ./.env file. Note that we still want to keep the ORCHESTRATOR_PORT environment variable to centralize the port selection for our different services, it just makes it easier to maintain our project. Now we do the same (still in the Trial Runner file) for the environment; we remove the ENVIRONMENT_ENDPOINT variable, and since the environment also has a pure context discovery default endpoint, we can remove it: trial_params=cogment.TrialParameters( cog_settings, environment_name=\"env\", environment_config=environment_config, actors=[ actor_1_params, actor_2_params, ] ) And we remove the ENVIRONMENT_HOST environment variable from the ./.env file. And finally for the actors... But wait a second, we have multiple actors, how is Cogment to differentiate them? In this case, it is easy, the context for actors has three elements: that it is an \"actor, its actor class, and its implementation name (note that the environment also has an implementation name in its context, but here we only have one environment, so there is no confusion). Since all our actors have different implementation names, then the context is sufficient to uniquely identify our actors. So we do the same here as we did for the environment, and again the default endpoint for actors is a context discovery endpoint, so we can remove it, getting: actor_1_params = cogment.ActorParameters( cog_settings, name=\"player_1\", class_name=\"player\", implementation=\"dqn_agent\" ) actor_2_params = cogment.ActorParameters( cog_settings, name=\"player_2\", class_name=\"player\", implementation=\"heuristic_agent\" ) and the final ./.env file looks like this: ORCHESTRATOR_PORT=9000ENVIRONMENT_PORT=9001RANDOM_AGENT_PORT=9002DQN_AGENT_PORT=9003DIRECTORY_PORT=9005COGMENT_DIRECTORY_ENDPOINT=\"grpc://localhost:${DIRECTORY_PORT}\" note In cases when the context would not be enough to differentiate between services, the directory allows properties to be added to registered services (e.g. for actors, as parameters to the Context.register_actor method), and these properties can be added to a context discovery endpoint (e.g. cogment://discover?tag=red&zone=1).","s":"Discovering services from the Directory","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#discovering-services-from-the-directory","p":139},{"i":148,"t":"In step 5 and 6 of the tutorial we had a client actor. Client actors are effectively not services and thus don't register themselves in the directory. They could be explicitly registered using the CLI if it could simplify things, but for the purpose of this tutorial, it is not useful. On the other hand, the way a client actor joins a trial is simplified when there is a directory. Instead of something like this: await context.join_trial(trial_id=trial_id, endpoint=cogment.Endpoint(ORCHESTRATOR_ENDPOINT), actor_name=\"player_1\") Because, again, the endpoint parameter has a default context discovery endpoint, this would suffice: await context.join_trial(trial_id=trial_id, actor_name=\"player_1\")","s":"Special case for Client Actors","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#special-case-for-client-actors","p":139},{"i":150,"t":"All directory communications require an Authentication Token. By default, this is empty, but it can be set to any string and used in many situations. One case that is useful is to isolate different running projects, when there is only a single directory that is always running. The easiest way to do this is to add this environment variable to the ./.env file: COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=\"project-tutorial-8\" Then all registrations will use this authentication token and all inquiries will require this authentication token (i.e. only services that were registered with this authentication token will be found).","s":"Authentication Token","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"#authentication-token","p":139},{"i":152,"t":"In this step we'll use the Cogment environment variables to simplify management of the project. So we will add these environment variables to the ./.env file: COGMENT_DIRECTORY_PORT=9005COGMENT_LIFECYCLE_PORT=9000COGMENT_ACTOR_PORT=9000 and remove the tutorial specifc variables, which leaves us with a ./.env file that looks like this: # Local (tutorial specific) variablesENVIRONMENT_PORT=9001RANDOM_AGENT_PORT=9002DQN_AGENT_PORT=9003# Cogment environment variablesCOGMENT_LIFECYCLE_PORT=9000COGMENT_ACTOR_PORT=9000COGMENT_DIRECTORY_PORT=9005COGMENT_DIRECTORY_ENDPOINT=\"grpc://localhost:${COGMENT_DIRECTORY_PORT}\"COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=\"project-tutorial-8\" With this, these two commands in the ./run.sh file are simplified to: function directory_start() { _load_dot_env cogment services directory}function orchestrator_start() { _load_dot_env cogment services orchestrator}","s":"Step 8.5: Using Cogment environment variables","u":"/docs/guide/tutorial/advanced-tutorials/directory","h":"","p":139},{"i":154,"t":"note This part of the tutorial follows step 4, make sure you've gone through it before starting this one. Alternatively the completed step 4 can be retrieved from the tutorial's repository. In this step of the tutorial, we will go over another actor implementation, this time client-side, to enable Humans to play RPS.","s":"Add a Human Player in the Loop","u":"/docs/guide/tutorial/advanced-tutorials/human-player","h":"","p":153},{"i":156,"t":"To involve a human player in our trials, we will add a specific actor implementation in the client. While the previous service actor implementations are exposing endpoints Cogment's orchestrator connects to in order to run a trial, this client actor implementation connects to the orchestrator to join a trial. It changes a lot under the hood and enables interesting network topology because only the client needs to know how to reach the orchestrator, not the other way around. However, as you'll see, in terms of implementation it is very similar. This actor implementation will be located in the client code in client/main.py We first need to import the data structures needed to send actions. from data_pb2 import PlayerAction, ROCK, PAPER, SCISSORSMOVES = [ROCK, PAPER, SCISSORS]MOVES_STR = [\"👊 rock\", \"✋ paper\", \"✌️ scissors\"]MOVES_PROMPT = ', '.join([ f\"{name} ({idx})\" for idx, name in enumerate(MOVES_STR)]) In the main function we then implement the human_player actor implementation, only playing PAPER for the moment, register the implementation and join the trial once it is initialized. context = cogment.Context(cog_settings=cog_settings, user_id=\"rps\")async def human_player(actor_session): round_index = 0 actor_session.start() async for event in actor_session.all_events(): if event.observation: observation = event.observation if event.type == cogment.EventType.ACTIVE: print(f\"\\n-- Round #{round_index + 1} --\\n\") next_action = PlayerAction(move=PAPER) actor_session.do_action(next_action) round_index += 1context.register_actor( impl=human_player, impl_name=\"human\", actor_classes=[\"player\"]) We update the configuration of the first actor to use special endpoint, \"cogment://client\", which tells the orchestrator to wait for a client to connect to it. We also don't need to specify an implementation name. actor_1_params = cogment.ActorParameters( cog_settings, name=\"player_1\", class_name=\"player\", endpoint=\"cogment://client\") Because the client actor will be active during the trial, we no longer need to use watch_trials to await trial termination but simply need to await context.join_trial completion. # Defining the trial id on the client sidetrial_id=f\"rps-{datetime.datetime.now().isoformat()}\"# Start a new trial using the trial params we just createdtrial_id = await controller.start_trial(trial_id_requested=trial_id, trial_params=trial_params)print(f\"Trial '{trial_id}' started\")# Let the human actor join the trialawait context.join_trial(trial_id=trial_id, endpoint=cogment.Endpoint(ORCHESTRATOR_ENDPOINT), actor_name=\"player_1\")print(f\"Trial '{trial_id}' ended\") Modify the client/main.py file with these updates. You can now build and run the application. Everything should work but player 1 shouldn't fare too well as it only ever plays PAPER.","s":"Client actor implementation","u":"/docs/guide/tutorial/advanced-tutorials/human-player","h":"#client-actor-implementation","p":153},{"i":158,"t":"Let's add a text user interface to our client in order to finally challenge AIs to a game of RPS. First we'll want to display what was played in the previous round. We will implement a dedicated function print_observation. def print_observation(observation): print(f\"🧑 played {MOVES_STR[observation.observation.me.last_move]}\") print(f\"🤖 played {MOVES_STR[observation.observation.them.last_move]}\") if observation.observation.me.won_last: print(f\" -> 🧑 wins round #{round_index + 1}\") elif observation.observation.them.won_last: print(f\" -> 🤖 wins the round #{round_index + 1}\") else: print(f\" -> round #{round_index + 1} is a draw\") It needs to be called whenever the actor receives an observation, except for the first time, before the first round is played. Add the following just after the observation is retrieved in the event loop. if round_index > 0: # The only time the observation is not relevant is on the first round of the first game print_observation(observation) Last but not least, instead of always picking PAPER we will read from the keyboard input what the player wishes to play. Using python's input function we can print a prompt and read whatever the user enters before pressing . Note that the following implementation expects a number between 1 and 3 and doesn't handle well any other input. move = MOVES[int(input(MOVES_PROMPT))]next_action = PlayerAction(move=move) Modify the client/main.py file to include the above additions. You can now build and run the application. You'll be presented with a prompt for choosing your moves and comparing your skills to the simple heuristic AI we implemented earlier. This concludes the step 5 of the tutorial: you implemented your first client actor and put your first human in the loop! This is also the final step for the basics tutorial. You can continue by implementing a web client to replace the command line interface we just developed in step 6.","s":"Interactive prompt to let Humans play RPS","u":"/docs/guide/tutorial/advanced-tutorials/human-player","h":"#interactive-prompt-to-let-humans-play-rps","p":153},{"i":160,"t":"note This part of the tutorial follows step 5, make sure you've gone through it before starting this one. Alternatively the completed step 5 can be retrieved from the tutorial's repository. In this step of the tutorial, we will go over a web client implementation, to enable Humans to play RPS, while being able to take advantage of various web technologies.","s":"Add a Web Client for the Human Player","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"","p":159},{"i":162,"t":"To develop a web client, we will need a working installation of Node.js, version 14 or later. You can download and install this from: https://nodejs.org/en/download/","s":"Prerequisites","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#prerequisites","p":159},{"i":164,"t":"In the previous steps, we triggered the trials by running ./run.sh trial_runner_start. This launched a trial using code in trial_runner/main.py. In this step we will trigger a trial using a React web app. Before we start with the Cogment side of things, we'll need to get a few prerequisite files setup.","s":"The web client","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#the-web-client","p":159},{"i":166,"t":"First, we will initialize a React app. This can be done very simply by running from the root rps folder: npx create-react-app web_client Once this is done, we will be able to open a React app in our browser by running the following commands: cd web_clientnpm start","s":"Creating a React app","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#creating-a-react-app","p":159},{"i":168,"t":"We will be using Material UI for this web client. This will provide us with a nice and clean way to add styles to our application, as well as some components which we will use to reduce code size. Install Material UI by running the following commands from inside of the web_client folder: npm install @mui/material @emotion/react @emotion/stylednpm install @mui/icons-material note Due to the nature of create-react-app when installed using the npx command, the resulting installation will always utilize the latest version of React. This may cause dependecy issues when installing Material UI. As such, whenever such issues are encountered, please refer to the Material UI documentation to confirm the correct required version of React.","s":"Adding Material UI","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#adding-material-ui","p":159},{"i":170,"t":"In this tutorial we will add a new service that builds and serves the web clients. We will also need to configure the orchestrator to expose its services to the web client using grpcweb. tip Cogment internally relies on grpcwebproxy to allow its grpc endpoints to be utilized by web applications. Web applications cannot natively use the grpc protocol that all Cogment modules use to communicate with one another. Using this proxy to translate the web socket connections it accepts into grpc requests solves this issue. We will need to update the run.sh script and the .env file to do that. note The run.sh script that we use for this tutorial is a helpful way to build services and run them, you can take inspiration from it in your own projects. To prepare for the additional service, let's add the following environment variables to the .env file: ORCHESTRATOR_HTTP_PORT=9003 # This is the port that orchestrator will listen on for grpcweb connections.WEB_CLIENT_PORT=8000 # This is the port that the web client will listen on. In the ./run.sh script we will add two new commands to build and start the web client: function web_client_build() { _load_dot_env # Load the environment variables from the dotenv file cp \"${ROOT_DIR}/data.proto\" \"${ROOT_DIR}/cogment.yaml\" \"${ROOT_DIR}/web_client\" # Copy the spec and protobuf files cd \"${ROOT_DIR}/web_client\" npm install # Install dependencies npx cogment-js-sdk-generate cogment.yaml # Run the code generation phase}function web_client_start() { _load_dot_env export PORT=\"${WEB_CLIENT_PORT}\" # Define the PORT the web client will use export REACT_APP_ORCHESTRATOR_HTTP_ENDPOINT=\"http://${ORCHESTRATOR_HOST}:${ORCHESTRATOR_HTTP_PORT}\" # Define the endpoint it will connect to cd \"${ROOT_DIR}/web_client\" npm start} We will also need to pass additional parameters to cogment when starting the orchestrator to enable the grpcweb server and to specifiy the trial parameters. The latter is needed because contrary to clients using the python sdk, web clients can't specify the trial parameters directly. function orchestrator_start() { _load_dot_env cogment services orchestrator \\ --actor_port=\"${ORCHESTRATOR_PORT}\" \\ --lifecycle_port=\"${ORCHESTRATOR_PORT}\" \\ --actor_web_port=\"${ORCHESTRATOR_HTTP_PORT}\" \\ --params=\"./params.yaml\"} Finally in this file, we will add the web client build to the build command. function build() { _run_sequence client_build environment_build random_agent_build web_client_build}","s":"Update the run script","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#update-the-run-script","p":159},{"i":172,"t":"The parameters file is a .yaml file that specifies the default trial parameters to Cogment. In this tutorial, we will use the following parameters: trial_params: environment: endpoint: grpc://localhost:9001 actors: - name: player_1 actor_class: player endpoint: cogment://client - name: player_2 actor_class: player implementation: heuristic_agent endpoint: grpc://localhost:9002 Create a params.yaml file in the root folder with the previous content.","s":"The parameters file","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#the-parameters-file","p":159},{"i":174,"t":"The easiest way to add Cogment to any web client is to start with a React app, then follow the three steps below: Install the Javascript SDK and typescript using: npm install @cogment/cogment-js-sdknpm install --save-dev typescript while inside of the web_client folder Copy the hooks folder from the tutorial's repository, found at 6-web-client/web_client/src/, into your src folder. Navigate nack to the rps folder then run the following command to generate Javascript files from your trial specs: ./run.sh web_client_build Now that all that's done, we can finally start coding our web client!","s":"Adding Cogment to our web client","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#adding-cogment-to-our-web-client","p":159},{"i":176,"t":"NOTE: For each of the following files, we will provide the styles in a code block. Feel free to skip these, or make your own; they are not important to the function of this application.","s":"CODE","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"","p":159},{"i":178,"t":"When we created our React app, these two files were generated automatically. Replace their content with the following: NOTE: These can also be downloaded from the tutorial's repository. index.css: body { margin: 0; background-color: #c5cce8;} index.js import React from \"react\";import ReactDOM from \"react-dom/client\";import \"./index.css\";import { App } from \"./App\";import { createTheme, responsiveFontSizes, ThemeProvider,} from \"@mui/material/styles\";let theme = createTheme({ palette: { primary: { light: \"#c5cce8\", main: \"#6B80C4\", }, secondary: { main: \"#ffb400\", }, },});theme = responsiveFontSizes(theme);const root = ReactDOM.createRoot(document.getElementById(\"root\"));root.render( ); This is simply to provide styles to our Material UI components. We haven't started with the actual Cogment part yet, which is exactly what we'll be doing next.","s":"index.js / index.css","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#indexjs--indexcss","p":159},{"i":180,"t":"We'll start with a few imports. Some of these files don't exist yet, so we'll be creating them: //First is some React importsimport React, { useEffect } from \"react\";//Then some imports for icons and Material UI functionality we'll be usingimport { Box, Button, Typography } from \"@mui/material\";import { useTheme } from \"@mui/material/styles\";//And here's the important part: we're importing the two things that will allow us to use Cogment.//First, the 'useActions' hook which will give us our observations as a human agent, as well as allow us to send actions.import { useActions } from \"./hooks/useActions\";//Second, our 'cogSettings'. This is a file that was generated when we ran//`npx cogment-js-sdk-generate cogment.yaml`//This file tells our web client relevant information about our trials, environments, and actor classes.import { cogSettings } from \"./CogSettings\";//These are messages which were defined in data.proto. These imports will need to change whenever their corresponding messages in data.proto are changed and `npx cogment-js-sdk-generate cogment.yaml` is run.import { rps as PB } from \"./data_pb\"; Then we add a function that will convert the play, encoded as the same \"move\" enum that we defined in our data.proto, to a string we can use in our application: function getMoveText(move) { switch (move) { case 0: return \"rock\"; case 1: return \"paper\"; case 2: return \"scissors\"; default: throw new Error(\"Not a rock, paper, or scissors\"); }} Finally, the React component. At the start of this component is the most important part of our application: the useAction hook. This hook returns an array with 3 elements: event: this contains all the information about any observation, reward, or message we've received this tick. We will use this to see what plays we and the computer made. startTrial: this is a function which takes no arguments, and is a very simple way to start a new trial with our player actor. sendAction: this is a function which takes an argument of type 'Action'. This class can be imported from data_pb.js, but we'll see that later in this tutorial. This hook takes in 3 arguments: cogSettings: this is what's imported from CogSettings.js. It provides all the relevant information about data.proto to this hook so that it can function. actorName: the name of the human actor which this web client will be representing. It should be aligned with what's defined in params.yaml. actorClass: the class of the human actor which this web client will be representing. It should be aligned with what's defined in params.yaml. export const App = () => { const [event, startTrial, sendAction] = useActions( cogSettings, \"player_1\", \"player\" ); //Function to construct the Action which the player will send when they click either rock, paper, or scissors const choose = (move) => { const action = new PB.PlayerAction({ move, }); sendAction(action); }; //This will start a trial as soon as we're connected to the orchestrator useEffect(() => { if (startTrial) startTrial(); }, [startTrial]); //Get any observation from the current event, events have observations, messages, and rewards, and all three can be unpacked from the event object //We will also unpack a helpful variable called 'last', this will allow us to know when the trial has ended const { observation, last } = event; const [gameState, setGameState] = useState({ gameStage: \"start\", roundIndex: 0, lastMoveComputer: 0, lastMoveHuman: 0, }); const [firstObservation, setFirstObservation] = useState(true); useEffect(() => { //Parse game state out of the observation //Some events don't contain an observation, so we need to store the observation contents in a state if (!observation) return; //The first observation is not useful, as it just contains the default game state, before players have made moves if (firstObservation) { setFirstObservation(false); return; } //Get all relevant information from the observation const roundIndex = gameState.roundIndex + 1; const gameStage = \"playing\"; const lastMoveComputer = observation.them.lastMove; const lastMoveHuman = observation.me.lastMove; const lastWonComputer = observation.them.wonLast; const lastWonHuman = observation.me.wonLast; setGameState({ gameStage, roundIndex, lastMoveComputer, lastMoveHuman, lastWonComputer, lastWonHuman, }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [observation]); //The layout of the page return ( {/* Tell the player everything we know about the trial state, such as, plays, who won, etc... */} Game stage: {gameState.gameStage} Human's move:{\" \"} {gameState.gameStage !== \"start\" && getMoveText(gameState.lastMoveHuman)} Computer's move:{\" \"} {gameState.gameStage !== \"start\" && getMoveText(gameState.lastMoveComputer)} Did Human win last round?{\" \"} {observation && gameState.lastWonHuman ? \"Yes\" : \"No\"} Did Computer win last round?{\" \"} {observation && gameState.lastWonComputer ? \"Yes\" : \"No\"} );};","s":"App.js","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#appjs","p":159},{"i":182,"t":"This hook does multiple things. It starts a trial, joins a trial, sends actions, and receives information from the orchestrator. The following is its annotated code: import { Context } from \"@cogment/cogment-js-sdk\";import { useEffect, useState } from \"react\";export const useActions = (cogSettings, actorName, actorClass) => { const [event, setEvent] = useState({ observation: null, actions: null, messages: null, rewards: null, type: null, last: false, }); const [startTrial, setStartTrial] = useState(null); const [sendAction, setSendAction] = useState(null); //Set up the connection and register the actor only once, regardless of re-rendering useEffect(() => { const context = new Context(cogSettings, actorName); context.registerActor( async (actorSession) => { actorSession.start(); //Double arrow function here beause react will turn a single one into a lazy loaded function setSendAction(() => (action) => { actorSession.doAction(action); }); for await (const event of actorSession.eventLoop()) { const eventUseActions = event; eventUseActions.last = event.type === 3; setEvent(eventUseActions); } }, actorName, actorClass ); const endpoint = process.env.REACT_APP_ORCHESTRATOR_HTTP_ENDPOINT; const controller = context.getController(endpoint); //Need to output a function so that the user can start the trial when all actors are connected //Again, double arrow function cause react will turn a single one into a lazy loaded function setStartTrial(() => async () => { const trialId = await controller.startTrial(); await context.joinTrial(trialId, endpoint, actorName); }); }, [cogSettings, actorName, actorClass]); return [event, startTrial, sendAction];}; We also need to create web_client/.eslintignore and add the following to it to ignore checks on the generate files: src/*_pb*src/cog_settings* You can now see our app fully functional running the following commands in the rps folder: ./run.sh build./run.sh services_start In another terminal, start the web client: ./run.sh web_client_start And opening up in our browser. And with that we're done!","s":"hooks/useActions.js","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#hooksuseactionsjs","p":159},{"i":184,"t":"If we want a fancier interface, there is a completed UI in the tutorials repository that we can copy into our project. Then, along with some style code that can be found in the repository version of App.js, just replace the return statement from App.js with the following:
","s":"Making it look good","u":"/docs/guide/tutorial/advanced-tutorials/web-client","h":"#making-it-look-good","p":159},{"i":186,"t":"In this step of the tutorial, we will start thinking about rewards. Rewards are a way to evaluate how an Actor performs at a task. They can be used to evaluate or compare different implementations of an Actor, or, especially in the context of Reinforcement Learning, train a model. In Cogment, both the environment and other actors can evaluate an actor. Here, we will focus on sending rewards from the environment. Until now, the concept of game is only known to the Environment. It has no impact on the Observation and action spaces, and thus no impact on the Actor implementation. This means an actor wouldn't know that the round it currently plays is the tie breaker in a game or its very first round. As a result the actor will play every round the same way. In this step we will allow the Environment to send rewards to the actors, and modify Bob's implementations to make use of this kind of information in gameplay and compare how it performs against Alice's implementation.","s":"Making Decisions with Feedback","u":"/docs/guide/tutorial/decision-making","h":"","p":185},{"i":188,"t":"Here, we will modify environment/main.py to include rewards when passing information to the Actors. Note that not all actions need to be rewarded. When a game is won, the Environment will add a positive reward to the winner (we chose a value of 1) and a negative reward to the loser (we chose a value of -1). Cogment also supports the notion of confidence, a weight between 0 and 1 that expresses the qualification of the reward sender in its appreciation. In this case we are applying objective rules, so we use a confidence of 1. In the event loop, when the first player wins a game we add the following: environment_session.add_reward(value=1, confidence=1, to=[p1.actor_name])environment_session.add_reward(value=-1, confidence=1, to=[p2.actor_name]) When the second player wins a game we add the following: environment_session.add_reward(value=-1, confidence=1, to=[p1.actor_name])environment_session.add_reward(value=1, confidence=1, to=[p2.actor_name]) Modify the environment/main.py file to include the above additions. Your Environment implementation event block should now look like this: You can now build and run the application to check that it works as expected. In particular, you should see logs relative to the reception of rewards on the Actor side.","s":"Sending Rewards to the Actors","u":"/docs/guide/tutorial/decision-making","h":"#sending-rewards-to-the-actors","p":185},{"i":190,"t":"In this section, we will create a new Actor implementation in actors/main.py below our random_agent implementation. We'll call our new implementation heuristic_agent - it will just use a simple decision making logic for selecting an action based on the Observation it receives. This Actor will also need to know what moves beat other moves. In the \"Settings\" section, add the DEFEATS we specified in the Environment: DEFEATS = { ROCK: PAPER, SCISSORS: ROCK, PAPER: SCISSORS} Now we can include a new Actor implementation that makes choices that utilize this knowledge. In actors/main.py add the following to the \"Actor Implementation Functions\" section: async def heuristic_agent(actor_session): # initialization actor_session.start() # event loop async for event in actor_session.all_events(): if event.observation: observation = event.observation print(f\"'{actor_session.name}' received an observation: '{observation}'\") if event.type == cogment.EventType.ACTIVE: if observation.observation.me.won_last: # I won the last round, let's play the same thing actor_session.do_action(PlayerAction(move=observation.observation.me.last_move)) elif observation.observation.them.won_last: # I lost the last round, let's play what would have won actor_session.do_action(PlayerAction(move=DEFEATS[observation.observation.them.last_move])) else: # last round was a draw, let's play randomly actor_session.do_action(PlayerAction(move=random.choice(MOVES))) for reward in event.rewards: print(f\"'{actor_session.name}' received a reward for tick #{reward.tick_id}: {reward.value}\") # termination This heuristic player uses a simple strategy for winning: if my last move was successful, play it again, and if it wasn't, play what would have won the last round. If the last round ended in a draw, select an action at random.","s":"Enabling Actors to Make Use of Information from the Environment","u":"/docs/guide/tutorial/decision-making","h":"#enabling-actors-to-make-use-of-information-from-the-environment","p":185},{"i":192,"t":"Before we can use this new actor, we will need to register it with Cogment. In the main function of actors/main.py, add the following: context.register_actor( impl=heuristic_agent, # implementation defined above impl_name=\"heuristic_agent\", actor_classes=[\"player\",] # actor class defined in the cogment.yaml file ) This will make Cogment aware of an actor of the player class which uses the heuristic_agent implementation. Next, let's make Bob an Actor of this type.","s":"Registering a new Actor with Cogment","u":"/docs/guide/tutorial/decision-making","h":"#registering-a-new-actor-with-cogment","p":185},{"i":194,"t":"In trial_runner/main.py, we will need to change which type of registered Actor Bob is going to be in the game. Since we have registered this new Actor, all we need to do is change the ActorParameters for Bob. In trial_runner/main.py set the ActorParameters for the Actor named Bob to be: actor_1_params = cogment.ActorParameters( cog_settings, name=\"Bob\", class_name=\"player\", endpoint=ACTORS_ENDPOINT, implementation=\"heuristic_agent\" ) You can now install and run the application to check that it works. Don't expect the heuristic player to beat the random player, the nature of the game actually rewards pure randomness in the playing. However, now you have all of the tools necessary implement various strategies and see how they fare against each other. This concludes the basic tutorial for Cogment in RPS. If you'd like to try some more advanced techniques, check out the advanced tutorials.","s":"Modifying Bob","u":"/docs/guide/tutorial/decision-making","h":"","p":185},{"i":196,"t":"In this step of the tutorial, we will look at what is needed to define the Environment in which Actors operate. Our goal in this section is to implement the rules for how the Environment responds to the actions at each step and produces new Observations for the Actors.","s":"The Environment: A Game of RPS","u":"/docs/guide/tutorial/environment-in-cogment","h":"","p":195},{"i":198,"t":"The Environment is the world in which Actors will operate. In the most general terms, we can think of the Environment as being the set of all possible states the world can be in, and the rules which determine the consequences of taking specific actions in these states. For RPS, the Environment can be fully specified by setting which states are possible (the different combinations of ROCK, PAPER and SCISSORS from each Actor), and the rules for what happens when we observe each pair. To fully specify the Environment in Cogment, we need to define what the Environment is (eg. what makes an RPS game), how computes the outcome of player actions, and where those computations are run. To better understand how Cogment thinks of the Environment component, we use the following terminology (similar to that used for Actors): The Environment Service is a designated node for taking care of the computations made by the Environment. This is where the Environment computations happen. The Environment Service is launched by environment/main.py on the TCP port set by the ENVIRONMENT_PORT variable in the .env file. The Environment Implementation is the function that specifies the rules of the game. The implementation takes actions as inputs and produces observations as outputs. This is how the Environment operations work. The Environment implementation function we will use is rps_environment defined in environment/main.py Notice that we don't use a class to define what the Environment does, as we did for the Actors. The specification is still made in the cogment.yaml file, but instead we define what an RPS game is with the EnvironmentConfig message type from the data.proto. You can look in cogment.yaml and data.proto to see, but so far the message is still empty. We will add the necessary information to the message later in this step of the tutorial.","s":"What does Cogment need to know about the Environment?","u":"/docs/guide/tutorial/environment-in-cogment","h":"#what-does-cogment-need-to-know-about-the-environment","p":195},{"i":200,"t":"Let's look at environment/main.py to see how Cogment sets up the Environment. The code is very similar to what we saw previously for the Actor service: The main() function first initializes a context in which the Environment will be registered. When registering the Environment in the context, we use the register_environment method which takes only an implementation. Here we will use the rps_environment function (also defined in environment/main.py, more on this in a moment) as our implementation. Then, the main() function will start the Environment service on the appropriate port, and awaits the termination of the service. note Ports for running services are specified in the .env file, loaded by the .run.sh script, and retrieved by the os package to make the variable available to Python. To change the port this service uses, update the.env file in the root level of the rps directory rather than changing main.py.","s":"Defining the Environment Service","u":"/docs/guide/tutorial/environment-in-cogment","h":"#defining-the-environment-service","p":195},{"i":202,"t":"The implementation function, called rps_environment here, is structured similarly to the Actor's implementation. Similar to the Actor implementation, there are three parts to the Environment implementation: The initialization block, where we can set variables that are important to know before the session starts. Later in this step of the tutorial, we will set up the initialization block to keep track of some stats about previous actions taken and which player won/lost each round. The event loop, which specifies how the environment produces observations based on the Actors' actions. The termination block, i.e. what happens after all the events have occurred. Here we'll use the termination block to print out some information about what happened between the players during a round of play. As with the Actor implementation, the Environment implementation takes as an argument the Environment session, which allows the Orchestrator to manage all the data associate with the Environment's operations in the trial. Note that the Environment implementation makes use of the Observation the data structure defined in data.proto defining the actors observation space, but so far it is just empty - we have not yet provided any data to populate the Observation message.","s":"Defining the Environment Implementation","u":"/docs/guide/tutorial/environment-in-cogment","h":"#defining-the-environment-implementation","p":195},{"i":204,"t":"We will first need to bring in the relevant datastructures into the environment/main.py file so that our Environment implementation can work with the same action space and can create the bservations in the format the Actors expect to receive. We can see in environment/main.py that we have already imported the Observation data structure. If we look at the definition of the Observation message in the data.proto, we see that it stores two fields of PlayerState information: one field keeping track of the player itself and one keeping track of its opponent. This means in order to create the correct type of Observation messages, we will also need to import the PlayerState data structure to environment/main.py. We will also need to import the types of moves that can be made so that we can define the relationships between them. In the \"Imports\" section at the top of the file, add the following: from data_pb2 import PlayerState, ROCK, PAPER, SCISSORS Next we can define a mapping between each move and the move that it defeats - this is basically all of the information necessary to establish the rules of the game. In the \"Settings\" section, add the following: DEFEATS = { ROCK: PAPER, SCISSORS: ROCK, PAPER: SCISSORS} You may have played RPS in which the winner is \"best of N rounds\" - for example, you must beat your opponent in 2 out of 3 rounds to win the game. We will want the Environment implementation to keep track of the number of rounds played and won by each of the two players so that we can know when to call a winner. Here we will create a simple state data structure in the rps_environment initialization block to keep track of how often each of players wins a round during the trial. Later we will set up how many successful rounds constitute winning the game. Add the following code to the initialization block of the Environment implementation function (before the event loop): state = { \"rounds_count\": 0, \"p1\": { \"score\": 0 }, \"p2\": { \"score\": 0 },}","s":"Implementing the rules of the game","u":"/docs/guide/tutorial/environment-in-cogment","h":"#implementing-the-rules-of-the-game","p":195},{"i":206,"t":"When we start a Trial, each player will need an initial Observation from the Environment. The Observation message tracks what each player's last move was and whether they won or lost the previous round, so we will have to set these by hand to start. Add the following code to the initialization block: p1_state = PlayerState(won_last=False, last_move=None)p2_state = PlayerState(won_last=False, last_move=None)environment_session.start([ (p1.actor_name, Observation(me=p1_state, them=p2_state)), (p2.actor_name, Observation(me=p2_state, them=p1_state)),]) This code does the following: Sets the initial state for each of the two Actors - neither won last game nor had a last move Calls for the session to start, which tells the Orchestrator to send an initial observation is sent to all actors. Each actor is given the appropriate Observation constructed with the correct initial PlayerState messages. One instance of PlayerState per player is created, each is used as the me and them state of each player's Observation","s":"The Initialization Block: Creating the First Observations for Each Player","u":"/docs/guide/tutorial/environment-in-cogment","h":"#the-initialization-block-creating-the-first-observations-for-each-player","p":195},{"i":208,"t":"In the event loop we implement how the Environment produces the next Observations in response to the Actor's actions. We need to retrieve each player's action and determine which player won the round. Then, we update the internal state. Finally, we produce up-to-date observations for the players. So far, we have printed the actions the Environment received from each player, but these are the PlayerAction data structures. What we actually want to work with is the .move attribute, which stores the index of the action that was taken. We'll use this move attribute to determine which of the two players wins. If the two players had the same move, nobody wins. We'll also keep track of this in our state object. Add the following code below your print statements: # Compute who wins, if the two players had the same move, nobody winsp1_state = PlayerState( won_last=p1_action.move == DEFEATS[p2_action.move], last_move=p1_action.move)p2_state = PlayerState( won_last=p2_action.move == DEFEATS[p1_action.move], last_move=p2_action.move)# keep track of winner/loser of each roundstate[\"rounds_count\"] += 1if p1_state.won_last: state[\"p1\"][\"score\"] += 1 print(f\"{p1.actor_name} wins!\")elif p2_state.won_last: state[\"p2\"][\"score\"] += 1 print(f\"{p2.actor_name} wins!\")else: print(f\"draw.\") This code computes for each player whether they won or lost, based on how their move compared to their opponents move by the hierarchy of moves specified in the DEFEATS dictionary. We then log it in the state dictionary object defined in the initialization block. Finally, we need to construct the new Observation from these new player states, and pass this information along to the Actors if the trial is still active (eg. if the game hasn't ended). To do this, add the following code to the event loop: # produce observation of updated state (computed above) observations = [ (p1.actor_name, Observation(me=p1_state, them=p2_state)), (p2.actor_name, Observation(me=p2_state, them=p1_state)), ] if event.type == cogment.EventType.ACTIVE: # The trial is active environment_session.produce_observations(observations) else: # The trial termination has been requested environment_session.end(observations)","s":"The Event Loop: Creating New Observations in Response to Player Actions","u":"/docs/guide/tutorial/environment-in-cogment","h":"#the-event-loop-creating-new-observations-in-response-to-player-actions","p":195},{"i":210,"t":"Finally, we will add some statements to the termination block to present a read-out about what happened in the Trial. In the termination block, replace the print(\"environment end\") with: print(f\"Trial {environment_session.get_trial_id()} ended:\")print(f\"\\t * {state['rounds_count']} rounds played\")print(f\"\\t * {p1.actor_name} won {state['p1']['score']} rounds\")print(f\"\\t * {p2.actor_name} won {state['p2']['score']} rounds\")print(f\"\\t * {state['rounds_count'] - state['p1']['score'] - state['p2']['score']} draws\", flush=True) Note we add a flush=True to the last print call to flush the data buffer so our output actually gets printed before the service gets terminated. We now have an Environment implementation that will properly construct Observations to pass to the Actors, meaning we have fully defined all the inputs and outputs necessary for the sequential interaction between the Actor and Environment components to play rounds of RPS. However, RPS is usually played in games won by the player reaching a target score, i.e. a number of won rounds. You can install and run the application to test your Environment implementation. Given the nature of the game and the fact that the Actors don't actually use the Observation information in any meaningful way, we expect Bob to win around 1/3 of the time, Alice to win 1/3 of the time, and the remaining 1/3 to be draws.","s":"The termination block: reporting on what happened in the game","u":"/docs/guide/tutorial/environment-in-cogment","h":"#the-termination-block-reporting-on-what-happened-in-the-game","p":195},{"i":212,"t":"We hinted earlier that RPS is not about single, disconnected rounds, but in playing a \"best of N\" game. Here we will show how the Environment can be configured with parameters. Setting up the game this way will also be useful later when we make an Actor implementation that can meaningfully use the information in the Observations to pick an action with some strategy, rather than randomly. We want to set up the Environment so that a trial is complete when one of the two players has won enough rounds. We can do this by adding a parameter to our previously empty EnvironmentConfig message in the data.proto file: message EnvironmentConfig { int32 target_score = 1;} This data structure is referenced within cogment.yaml in the environment.config_type to define how the Environment is configured (you may think of it as similar to how the Actor classes were specified in the cogment.yaml file). Note that the target_score above is just the first argument to the EnvironmentConfig message -- we will set its value when we configure the Environment for the Trial. If we open trial_runner/main.py we will see that we pass an empty EnvironmentConfig when setting up the Environment in the Trial Runner. We can modify this function to set a value for the target_score which a player will need to reach before the game ends. Modify the EnvironmentConfig in the Trial Runner to be the following: env_config = EnvironmentConfig( target_score = 5) note Note that whenever we make a modification to the data.proto file, we will need to re-run ./run.sh install to regenerate the data_pb2.py file which the Python SDK uses for the implementations.","s":"Configuring the Environment: How many successful rounds to win the game?","u":"/docs/guide/tutorial/environment-in-cogment","h":"","p":195},{"i":214,"t":"We now need to modify the Environment implementation to handle counting the number of rounds won, and executing the termination of the Trial once the target_score has been reached. In the initialization block of the rps_environment implementation function in environment/main.py, add the following: # Default target scoreif environment_session.config is not None and environment_session.config.target_score >= 0: target_score = environment_session.config.target_scoreelse: target_score = 3 The above code retrieves the value of the target_score from the environment's configuration and sets a default value in case nothing is specified. When we configured the trial, we set the target_score to be 5, but if the environment_session doesn't have the right configuration details, the target_score will be set to 3 by the Environment itself. We also want the Environment to request the end of the Trial when this target score has been reached. In the event block, let's modify the code which handles the end of the game (eg. replace the check that the event.type==cogment.EventType.ACTIVE) to be: # handle end of gameif state[\"p1\"][\"score\"] >= target_score: # p1 won environment_session.end(observations)elif state[\"p2\"][\"score\"] >= target_score: # p2 won environment_session.end(observations)else: # target score is not reached, continue sending observations to actors environment_session.produce_observations(observations)","s":"Modifying the Environment Implementation to end the game","u":"/docs/guide/tutorial/environment-in-cogment","h":"#modifying-the-environment-implementation-to-end-the-game","p":195},{"i":216,"t":"Previously, the Trial Runner handled the termination of the Trial after 5 seconds. Now we want the Environment to handle the termination of the trial, so we need to modify the Trial Runner code to support this. If we look at the trial_runner/main.py file, we will see that the Trial Runner gets the trial_id from the controller's start_trial method. Because of the asynchronous nature of how these services run, we will need to initiate a function to listen for the trial's end before we have initiated the trial start. This means we will need to know the trial_id ahead of time, so when we call start_trial we will pass it our chosen trial_id as an argument. In trial_runner/main.py we'll change the way the Trial Runner starts the trials to the following: # set the name of the trial we want to be listening fortrial_id=f\"rps-{datetime.datetime.now().isoformat()}\"# Listening for ended trialsasync def await_trial(): async for trial_info in controller.watch_trials(trial_state_filters=[cogment.TrialState.ENDED]): if trial_info.trial_id == trial_id: breakawait_trial_task = asyncio.create_task(await_trial())# Start a new trial using the trial params we just createdtrial_id = await controller.start_trial(trial_id_requested=trial_id, trial_params=trial_params)print(f\"Trial '{trial_id}' started\")# Wait for the trial to endawait await_trial_taskprint(f\"Trial '{trial_id}' ended\") The above code sets the ID of the trial, then defines how to use controller.watch_trials that will listen for the Environment to terminate the trial. It starts the trial with the specified ID, and then watches for the trial end. We can now install and run the application to see that this works as expected. Bob and Alice play a single game of RPS which ends when one of the two players reaches the target number of rounds. Quick Summary We learned about how Cogment represents the Environment through its implementation and configuration. We set up the necessary components in environment/main.py to specify the rules of RPS, namely: from data_pb2 import PlayerState, ROCK, PAPER, SCISSORSDEFEATS = { ROCK: PAPER, SCISSORS: ROCK, PAPER: SCISSORS} In the initialWe added a data structure to keep track of statistics over a number of rounds: state = { \"rounds_count\": 0, \"p1\": { \"score\": 0 }, \"p2\": { \"score\": 0 },} We constructed initial observations, and started the Environment session to pass these to each Actor: p1_state = PlayerState(won_last=False, last_move=None)p2_state = PlayerState(won_last=False, last_move=None)environment_session.start([ (p1.actor_name, Observation(me=p1_state, them=p2_state)), (p2.actor_name, Observation(me=p2_state, them=p1_state)),]) In the event block, we evaluated what each of the Actors did, who won, and stored this information in our state data structure. # Compute who wins, if the two players had the same move, nobody winsp1_state = PlayerState( won_last=p1_action.move == DEFEATS[p2_action.move], last_move=p1_action.move)p2_state = PlayerState( won_last=p2_action.move == DEFEATS[p1_action.move], last_move=p2_action.move)# keep track of winner/loser of each roundstate[\"rounds_count\"] += 1if p1_state.won_last: state[\"p1\"][\"score\"] += 1 print(f\"{p1.actor_name} wins!\")elif p2_state.won_last: state[\"p2\"][\"score\"] += 1 print(f\"{p2.actor_name} wins!\")else: print(f\"draw.\") We constructed new Observations and had the Environment session pass this information to each Actor. # produce observation of updated state (computed above) observations = [ (p1.actor_name, Observation(me=p1_state, them=p2_state)), (p2.actor_name, Observation(me=p2_state, them=p1_state)), ] if event.type == cogment.EventType.ACTIVE: # The trial is active environment_session.produce_observations(observations) else: # The trial termination has been requested environment_session.end(observations) In the termination block, we printed a summary of the rounds played up to the point of termination: print(f\"Trial {environment_session.get_trial_id()} ended:\")print(f\"\\t * {state['rounds_count']} rounds played\")print(f\"\\t * {p1.actor_name} won {state['p1']['score']} rounds\")print(f\"\\t * {p2.actor_name} won {state['p2']['score']} rounds\")print(f\"\\t * {state['rounds_count'] - state['p1']['score'] - state['p2']['score']} draws\", flush=True) We then set up the Environment to initiate the termination after a set number of rounds had been won by one of the players. We set the EnvironmentConfig in the data.proto: message EnvironmentConfig { int32 target_score = 1;} We made use of this in trial_runner/main.py and passed the correct value to the EnvironmentConfigL env_config = EnvironmentConfig( target_score = 5) We then changed the Environment implementation to be aware of the termination condition, or set one if none was provided: # Default target scoreif environment_session.config is not None and environment_session.config.target_score >= 0: target_score = environment_session.config.target_scoreelse: target_score = 3 We then set the Environment to end the trial when this condition was met: # handle end of gameif state[\"p1\"][\"score\"] >= target_score: # p1 won environment_session.end(observations)elif state[\"p2\"][\"score\"] >= target_score: # p2 won environment_session.end(observations)else: # target score is not reached, continue sending observations to actors environment_session.produce_observations(observations) Finally, we modified the Trial Runner to listen for end signal from the Environment: # set the name of the trial we want to be listening fortrial_id=f\"rps-{datetime.datetime.now().isoformat()}\"# Listening for ended trialsasync def await_trial(): async for trial_info in controller.watch_trials(trial_state_filters=[cogment.TrialState.ENDED]): if trial_info.trial_id == trial_id: breakawait_trial_task = asyncio.create_task(await_trial())# Start a new trial using the trial params we just createdtrial_id = await controller.start_trial(trial_id_requested=trial_id, trial_params=trial_params)print(f\"Trial '{trial_id}' started\")# Wait for the trial to endawait await_trial_taskprint(f\"Trial '{trial_id}' ended\") You have now successfully implemented an Environment which is configured to run a game of RPS until one player has won 5 rounds. The Environment receives the Actors' actions and constructs new Observations. However, since the Actors select actions at random, they are not really using the Observation information in any meaningful way. In the next step of the tutorial, we will modify Bob to use the information from the Environment to select actions and see how he performs against Alice.","s":"Modifying the Trial Runner to receive the termination signal from the Environment","u":"/docs/guide/tutorial/environment-in-cogment","h":"#modifying-the-trial-runner-to-receive-the-termination-signal-from-the-environment","p":195},{"i":218,"t":"In this step of the tutorial, we will get the RPS code set up properly and test run a single trial. This will establish the basic working code needed for all subsequent steps of the tutorial. We will go over the components of the repository at a very high level. If any terminology is unclear, it may be useful to refer to the Core Concepts. note These instructions are for unix-like environments such as Linux, macOS and WSL2 on Windows.","s":"Set Up the Code & Test a Trial","u":"/docs/guide/tutorial/setup","h":"","p":217},{"i":220,"t":"To begin with, you'll need a working installation of Cogment. If you haven't done so already, follow our installation instructions. Additionally, you'll need: Python (Cogment currently supports versions 3.7-3.9) virtualenv","s":"Getting Set Up","u":"/docs/guide/tutorial/setup","h":"#getting-set-up","p":217},{"i":222,"t":"If you followed the test step of the installation instructions you have probably already downloaded the sources for the tutorial from the github repository. If not, now is the time to do so. This repository contains completed code for each step of the tutorial in separate folders. If at any point you make a mistake and can't get something working, you can copy the code from the folder corresponding to the last step you completed to get a fresh starting point.","s":"Cloning the RPS Source Code","u":"/docs/guide/tutorial/setup","h":"#cloning-the-rps-source-code","p":217},{"i":224,"t":"First, let's make a new directory called rps, and set this as our working directory. Unless otherwise mentioned, all operations for the rest of the tutorial are done from the rps directory. We will then copy the code from the folder for step 1 of the tutorial from the directory 1-setup/, which contains a blank slate Cogment application as a starting point. Execute the following commands in your terminal: mkdir rpscp -r /basic_tutorial_steps/1-setup/ rps/cd rps We now have a starting point for developing the RPS project. This code copied from basic_tutorial_steps/1-setup will run an empty Cogment application with two Actors able to play RPS.","s":"Creating your development directory","u":"/docs/guide/tutorial/setup","h":"#creating-your-development-directory","p":217},{"i":227,"t":"If we look at the elements of rps, we will see 3 directories. Each directory contains the code required for managing that service, for now contained completely in a main.py file that does all the work for that service. These services are: environment/ which specifies the dynamics of the game itself (what actions are allowed, what are the consequences of those actions), actors/ which specifies how the Actor(s) work -- what information they get from the environment, and how they use it for making a decision on what action to take next trial_runner/ which specifies how the Actors and Environment interact within Cogment, and launches the trials to run the games of RPS. At this stage, each module contains only the main.py files. When we build the application, more files will be copied into each directory automatically.","s":"Service Directories","u":"/docs/guide/tutorial/setup","h":"#service-directories","p":217},{"i":229,"t":"The root of the rps directory also contains files which set the necessary configurations for running the application (.env, data.proto, and cogment.yaml), as well as the run.sh, requirements.txt and services.yaml files, which contain all the functions necessary for installing dependencies and running the Cogment project. .env​ This file is used to set environment variables. (Note that \"environment\" in this context refers to the operating system environment, which is not related to the concept of the Environment in the RL or Cogment context.) The variables set in this file specify configurations that are known to all parts of the application while it is running. The .env file is used in this project to specify the TCP ports through which different Cogment services (such as Actors or the Environment) can be accessed. data.proto​ In Cogment, we use Protocol Buffers to serialize data for communication across different services. In this project, the structure of these protobuf messages are defined in the file data.proto. This file does most of the heavy lifting in creating data structures in Python and setting variables to the relevant parameter values (more on this later). The application 'knows' to use the messages defined here by importing it in the cogment.yaml configuration file. cogment.yaml​ The cogment.yaml file specifies all of the details about how the trials will be implemented. In particular, this file defines what protobuf messages the Environment and Actor(s) participating in the trial will expect and use as inputs and outputs. More information about what kinds of information can/should be included in a Spec File such as cogment.yaml can be found on the Spec File reference page. run.sh​ The run.sh file acts as the main command menu for the Cogment project: it contains all of the functions necessary for building and running the code. requirements.txt​ The requirements.txt file tells the Python package manager what packages need to be installed for this project to work. If we want any non-standard Python packages to run our application, we will specify them here and the package manager will install them in the virtual environment. For now, this file specifies we only need to install the most recent version of the Cogment Python SDK. services.yaml​ The services.yaml file is passed to the Cogment CLI utility command launch. For the purposes of this tutorial, it's sufficient to understand that the contents of the services.yaml file describe a set of processes to be run in parallel - with the additional condition that once any of these processes terminate, the others will terminate as well. More information about the launch process can be found on the Launch reference page.","s":"Configuration & Execution Files","u":"/docs/guide/tutorial/setup","h":"#configuration--execution-files","p":217},{"i":231,"t":"To get all this code to work together, we will need to run the install process in the run.sh file. In your terminal run the install process with: ./run.sh install","s":"Building the Application","u":"/docs/guide/tutorial/setup","h":"#building-the-application","p":217},{"i":233,"t":"We can understand what the install function does by taking a closer look at the run.sh file. You'll see that this function does the following: Creates a virtual environment and installs Cogment and any required Python packages there Runs the Cogment Python code generation tool to make the files cog_settings.py and data_pb2.py which are used by the Python SDK to know about the configurations and data structures which will be used in the application (more on this below). Now everything is set up to start the application.","s":"What exactly is happening in the install?","u":"/docs/guide/tutorial/setup","h":"#what-exactly-is-happening-in-the-install","p":217},{"i":235,"t":"Now that we have built all the necessary components, we want to make sure the application can run. We will need two terminals open: A terminal to run the services. Those services are the environment, the actors, and the Cogment Orchestrator, which is responsible for coordinating the services together. A terminal to run the client that connects to the services in order to run the trial. This client is the trial_runner. We need to have the services running already before the Trial Runner can connect. In the first terminal, start the Cogment app services with the command: ./run.sh services_start This command starts the services named in the services.yaml file. You should see something like: In the second terminal, start the Trial Runner with the command: ./run.sh trial_runner_start At this stage, the Trial Runner starts the trial, lets it run for a few seconds, and then terminates the trial. In the second terminal, you will see something like: In our application services terminal, this will also generate some logs reporting what happened. You should see something like this: At this point, both the action strings received by the Environment and the Observations received by the Actors are empty. In the next steps of the tutorial, we will add them in. You can now terminate the services using ctrl+C. At this point we have a working but empty Cogment app. Quick Summary We got the RPS code from the github repository, and created a new directory rps to work from. We ran ./run.sh install to build the necessary elements to get the app up and running. In one terminal, we started the orchestrator, environment, and actors services with: ./run.sh services_start In a second terminal, we started the trial runner to begin a trial with: ./run.sh client_start The client terminal printed the start and end of the trial, and the services trial reported some empty actions. In the next step, we will look a little more closely at how Cogment represents the Actors, and enable them to select ROCK, PAPER, or SCISSORS rather than empty actions.","s":"Running the Application","u":"/docs/guide/tutorial/setup","h":"#running-the-application","p":217},{"i":237,"t":"Version 2.0, January 2004 ","s":"Apache License","u":"/docs/license","h":"","p":236},{"i":239,"t":"1. Definitions​ “License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. “Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. “Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. “You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License. “Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. “Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. “Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). “Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. “Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.” “Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License​ Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License​ Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution​ You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions​ Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks​ This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty​ Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability​ In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability​ While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. Copyright 2019 Artificial Intelligence Redefined","s":"Terms and Conditions for use, reproduction, and distribution","u":"/docs/license","h":"#terms-and-conditions-for-use-reproduction-and-distribution","p":236},{"i":241,"t":"The Directory Client is a utility to manually access (through the command line interface) the Directory service. It can be used to register, deregister (remove) and inquire services.","s":"Directory Client","u":"/docs/reference/cli/directory/directory-client","h":"","p":240},{"i":243,"t":"All directory clients have these options in common.","s":"Common Options","u":"/docs/reference/cli/directory/directory-client","h":"#common-options","p":240},{"i":245,"t":"The maximum duration for the execution of the request. The duration should be specified as a sequence of numbers followed by a unit suffix: \"300ms\", \"1.5h\" or \"2h45m\" are valid timeouts. Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\". Can be specified as: a command line option, e.g. --timeout=1m, an environment variable, e.g. COGMENT_CLIENT_TIMEOUT=90s, its default value is 30 seconds.","s":"timeout","u":"/docs/reference/cli/directory/directory-client","h":"#timeout","p":240},{"i":247,"t":"Cogment endpoint of the directory service. It must be a gRPC endpoint. Can be specified as: a command line option, e.g. --directory_endpoint=grpc://foo:9005, an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005, its default value is \"grpc://localhost:9005\" (which is the default when running cogment services directory locally).","s":"directory_endpoint","u":"/docs/reference/cli/directory/directory-client","h":"#directory_endpoint","p":240},{"i":249,"t":"Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token. Can be specified as: a command line option, e.g. --directory_authentication_token=GH670ploT, an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT, it has no default value.","s":"directory_authentication_token","u":"/docs/reference/cli/directory/directory-client","h":"#directory_authentication_token","p":240},{"i":251,"t":"This command is used to register (add) a service to the Directory. E.g.: $ cogment client directory register --directory_endpoint=\"grpc://dir:9005\" --host=\"act\" --port=9030 --type=\"actor\" --properties=\"__actor_class=reporter,intensity=5,high_profile\"Service ID [7722934920723] Secret [ZGi6GLe]","s":"Directory Client Register","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-register","p":240},{"i":253,"t":"If successful, the output is the service ID of the newly registered service, and its secret string. The secret string is necessary to deregister the service.","s":"Output","u":"/docs/reference/cli/directory/directory-client","h":"#output","p":240},{"i":255,"t":"protocol​ The protocol (URL scheme) for the service endpoint. Can only be grpc or cogment. Default: grpc. host​ The host for the service endpoint. port​ The TCP port for the service endpoint. ssl_required​ A boolean value (true/false) to indicate if SSL (encryption) is required to access the service. Default: false. type​ The service type. Can be actor, environment, prehook, datalog, lifecycle, actservice, datastore, modelregistry or other. These are the same keywords used as paths in Cogment discovery endpoints. permanent​ A boolean value (true/false) to indicate if the service is to stay permanently in the directory (until explicitly deregistered). Permanent services are not checked for health or lifetime limits. Permanent services also get updated instead of being duplicated. Default: false. properties​ The properties to be associated with the service. In the form of \"name=value,name=value\" where the value is optional. The names and values of properties are restricted to a limited character set (see endpoint query). Also see special properties used by Cogment.","s":"Command line","u":"/docs/reference/cli/directory/directory-client","h":"#command-line","p":240},{"i":257,"t":"This command is used to deregister (remove/delete) a service from the Directory. E.g.: $ cogment client directory deregister --directory_endpoint=\"grpc://dir:9005\" --service_id=7722934920723 --secret=\"ZGi6GLe\"","s":"Directory Client Deregister","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-deregister","p":240},{"i":259,"t":"If successful, no output is produced.","s":"Output","u":"/docs/reference/cli/directory/directory-client","h":"#output-1","p":240},{"i":261,"t":"service_id​ The ID of the service to remove. secret​ The secret string that was returned when the service was registered.","s":"Command line","u":"/docs/reference/cli/directory/directory-client","h":"#command-line-1","p":240},{"i":263,"t":"This command is used to inquire (find) services in the Directory. Note that if services are not found (or the authentication token does not match), an empty list is returned, but there is no \"error\". E.g.: $ cogment client directory inquire --type=\"actor\" --properties=\"intensity=5,high_profile\"[11] Services foundService ID [7722934920723] Endpoint [grpc://act:9030] SSL required [false] Type [actor] [__registration_source] = [Cogment-Command_Line] [high_profile] = [] [intensity] = [5] [__actor_class] = [reporter]","s":"Directory Client Inquire","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-inquire","p":240},{"i":265,"t":"If successful, the number of services found and the details of each service is output.","s":"Output","u":"/docs/reference/cli/directory/directory-client","h":"#output-2","p":240},{"i":267,"t":"service_id​ The ID of the service to find. If this is provided, the type and properties options cannot be used. type​ The service type to find. Can be actor, environment, prehook, datalog, lifecycle, actservice, datastore, modelregistry or other. These are the same keywords used as paths in Cogment discovery endpoints. If this is provided, the service_id option cannot be used. properties​ The properties associated with the service to find. In the form of \"name=value,name=value\" where the value is optional. All properties must match (in name and value) the properties of the service for a match to occur. If this is provided, the service_id option cannot be used.","s":"Command line","u":"/docs/reference/cli/directory/directory-client","h":"#command-line-2","p":240},{"i":269,"t":"The client will wait for a connection to the directory. If a connection cannot be established within the timeout period, it returns an error, otherwise it returns success.","s":"Directory Client WaitForReady","u":"/docs/reference/cli/directory/directory-client","h":"#directory-client-waitforready","p":240},{"i":271,"t":"The Directory is an implementation of the directory gRPC service. It is the service to find other services. Typically, every other Cogment service only needs to know the address of the Directory to access anything in Cogment. A regular health check is done on non-permanent network services to make sure they remain available (i.e. network reachable). If a service fails the health check, it is automatically removed from the Directory. The Directory works in tandem with the Cogment endpoints, in particular the ones with a discover host (referred as discovery endpoints). A Directory Client is also part of the Cogment CLI to access the Directory from the command line.","s":"Directory Server","u":"/docs/reference/cli/directory/directory-server","h":"","p":270},{"i":273,"t":"The Directory is a Cogment CLI service: $ cogment services directory --port=9005","s":"Command line","u":"/docs/reference/cli/directory/directory-server","h":"#command-line","p":270},{"i":276,"t":"The TCP port where to serve the directory gRPC service. This is where the users of the Directory connect to. Can be specified as: a command line option, e.g. --port, an environment variable, e.g. COGMENT_DIRECTORY_PORT, default value is 9005.","s":"port","u":"/docs/reference/cli/directory/directory-server","h":"#port","p":270},{"i":278,"t":"Whether or not to enable gRPC reflection on the served directory endpoint. Can be specified as: a command line option, e.g. --grpc_reflection, an environment variable, e.g. COGMENT_DIRECTORY_GRPC_REFLECTION=1, by default, it is disabled.","s":"grpc_reflection","u":"/docs/reference/cli/directory/directory-server","h":"#grpc_reflection","p":270},{"i":280,"t":"Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Can be specified as: a command line option, e.g. --log_level=debug, an environment variable, e.g. COGMENT_LOG_LEVEL=info, default value is info.","s":"log_level","u":"/docs/reference/cli/directory/directory-server","h":"#log_level","p":270},{"i":282,"t":"Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided, the logs go to stdout. Can be specified as: a command line option, e.g. --log_file=./path/to/cogment.log, an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log, default value is info.","s":"log_file","u":"/docs/reference/cli/directory/directory-server","h":"#log_file","p":270},{"i":284,"t":"The maximum number of seconds to wait before responding with no result (either due to a service not registered, or that has failed a health check). This can be used when components may start at slightly different time, and some components may inquire about a component that did not have time to register yet. It may also help when services sometimes go temporarily offline. Can be specified as: a command line option, e.g. --registration_lag, an environment variable, e.g. COGMENT_DIRECTORY_REGISTRATION_LAG, default value is 0. note Unserviceable services are not considered for this lag. I.e. the directory will not wait for a service to become \"serviceable\".","s":"registration_lag","u":"/docs/reference/cli/directory/directory-server","h":"#registration_lag","p":270},{"i":286,"t":"The file name where persistence data will be read from on start-up and stored afterward. The file will be created if it does not already exist. If set to an empty string, persistence will be disabled. Can be specified as: a command line option, e.g. --persistence_file, an environment variable, e.g. COGMENT_DIRECTORY_PERSISTENCE_FILE, default value is \".cogment-directory-data\".","s":"persistence_file","u":"/docs/reference/cli/directory/directory-server","h":"#persistence_file","p":270},{"i":288,"t":"Whether or not to enable load balancing when services are inquired. Can be specified as: a command line option, e.g. --load_balancing, an environment variable, e.g. COGMENT_DIRECTORY_LOAD_BALANCING=1, by default, it is disabled.","s":"load_balancing","u":"/docs/reference/cli/directory/directory-server","h":"#load_balancing","p":270},{"i":290,"t":"Whether or not to enable health checking when a service is matched by an inquiry (in addition to being checked periodically). This can prevent unavailable services from being returned (before the periodic health check has time to run). It can also allow load balancing to use more recent/dynamic values. But it can significantly slow down directory inquiries, especially when a health check fails. Can be specified as: a command line option, e.g. --check_on_inquire, an environment variable, e.g. COGMENT_DIRECTORY_CHECK_ON_INQUIRE=1, by default, it is disabled.","s":"check_on_inquire","u":"/docs/reference/cli/directory/directory-server","h":"#check_on_inquire","p":270},{"i":292,"t":"At its most basic, the Directory contains services searchable by type and property, and returns endpoints where to reach the matched services. Every registered service has a unique ID (it is unique among currently registered services). When registering a service, the ID of the new service is provided with a \"secret\" key (a string). This \"secret\" (in combination with the ID) is required to deregister the service. If a new service matches an existing one (i.e. an inquiry would match them), it is considered a duplicate. Duplicates are acceptable for non-permanent services. For permanent services (both the old and new services must be permanent), duplicates are not allowed; instead, an update of the old service is performed (i.e. the ID and secret are kept the same). Every service is also associated with an authentication token. This token is provided by users when registering a new service, and it must be provided to inquire or deregister that service. For example, any inquiry can only find services that have the same authentication token as the one provided to the inquiry. Similarly for deregistering: a service cannot be deregistered without the appropriate authentication token. In closed environments, the authentication token can be left empty to facilitate directory management.","s":"Operation","u":"/docs/reference/cli/directory/directory-server","h":"#operation","p":270},{"i":294,"t":"Each entry is normally checked for connectivity on a regular basis (every 60 seconds), but can also be checked when an entry matches an inquiry (see check_on_inquire). The type of the entry determines the extent of the health check. For Cogment services, the Status procedure will be called and a response expected. For non-Cogment services, a simple tcp connection will be attempted, and if successful, the service will be considered healthy. If a service fails the health check multiple times, it will be removed from the directory. But after the first failure, the service will not be reported on inquiries until and unless it succeeds a health check. When services are recovered from a persistence file, they will immediately be subjected to a health check.","s":"Health Checking","u":"/docs/reference/cli/directory/directory-server","h":"#health-checking","p":270},{"i":296,"t":"By default load balancing is disabled, and thus when inquiring, the services returned are in increasing order of age (since registration). So the first is always the most recently registered service. note Permanent services do not change their registration timestamp when updated. When load balancing is enabled, and an inquiry is made, the order of services returned is different: For each service that match the inquiry, the last read \"overall_load\" Status (see below) is used. If check_on_inquire is enabled, then the service's current \"overall_load\" is read at this point. Services with a load of 255 are considered unserviceable and removed from the list of potential candidates. The service with the lowest load is found. That service, and services with a load close to that one, are retained. The retained services are shuffled randomly, and returned as a reply to the inquiry. note Non-Cogment services (with no Status gRPC procedure) are always considered fully available (with a load of 0). And thus will always be returned, but in random order, when load balancing is enabled. The Status gRPC procedure's \"overall_load\" status is expected to be a string representation of an integer from 0 to 255 (8 bit unsigned integer). If the string cannot be converted to such an integer, a load of 0 is assumed (e.g. \"256\" will result in a load of 0). A normal value is between 0 and 100, representing the load on the machine where the service is running. A value of 0 means that there is no load, and a value of 100 means that the machine is very loaded (and may not be able to do processing in a timely manner). The exact meaning of the value is dependent on the service reporting. A value of 255 indicates that the machine is not fit to run any new service (and thus it is \"unserviceable\").","s":"Load Balancing","u":"/docs/reference/cli/directory/directory-server","h":"#load-balancing","p":270},{"i":298,"t":"The Directory maintains the following data for each service: service ID: This is a numerical (64 bits unsigned integer) value generated by the Directory and assigned to the service on registration. It is unique to that service as long as it is in the Directory. Although very unlikely, it is possible for this ID to be re-used after the service is deregistered. Zero (0) is not a valid ID. endpoint: It consists of four distinct information: protocol: The protocol (URL scheme) for the endpoint (grpc or cogment). The cogment protocol is not considered a \"network\" protocol and thus will not be checked for health (network connectivity). host: The host for the endpoint (e.g. somewhere.com). For the grpc protocol this represents a TCP/IP network resource; it can be a network hostname or an IP address. For the cogment protocol it must be a registered name (see cogment endpoints) and typically does not represent a network resource. port: The TCP port where the registered service is providing its services. This is required for grpc protocol hosts. ssl requirement: Whether the service requires an encrypted SSL connection. type: The type of service. This also determines how health checks are performed on the service (i.e. which gRPC service should be used to check the health of the service). client actor connection: Provides client actor gRPC API service trial lifecycle management: Provides lifecycle gRPC API service actor: Provides actor gRPC API service environment: Provides environment gRPC API service pre-hook: Provides pre-hook gRPC API service datalog: Provides datalog gRPC API service datastore: Provides datastore gRPC API service model registry: Provides model registry gRPC API service other: This type of service does not provide a gRPC API service or it is not a type of service known to Cogment. Only the ability to perform a tcp connection will be tested for health checking. permanent: This determines if the service should be kept in the directory regardless of health (network connectivity). It also prevents duplication of the service in the directory (i.e. if a duplicate is registered, the service will just be updated with the new information, and keep the same ID and secret). properties: This is a free form mapping of name and value strings. But Cogment may require properties of specific names for its operation, in particular for endpoint discovery. These special property names are prefixed with a double underscore (__), e.g. __implementation. Also, for proper use in Cogment, property names and values should be restricted to a limited character set (see endpoint query). secret: This is a secret string that is generated by the Directory on registering a new service. It must be provided to deregister a service. There is no way to recover this value, so it must be recorded after registration. authentication token: A string to authenticate users of the registered service. It is provided by the user for registration of a new service, and the same token must be provided to access (deregister or inquire) that service.","s":"Data","u":"/docs/reference/cli/directory/directory-server","h":"#data","p":270},{"i":300,"t":"Launch is a utility command meant to facilitate locally launching and shutting down an entire Cogment project at once. When launch is used, a set of processes will be launched to run in parallel, as described by a YAML definition file. Once any of these processes terminates, all other ones will be terminated as well. The order of of the script execution is undefined, which is to say that they may not start in the order they are defined, and may not always start in the same order. Script dependency can be used if a certain order must be used.","s":"Launch","u":"/docs/reference/cli/launch","h":"","p":299},{"i":302,"t":"cogment launch [options] filename [args...] filename: Name (and path) of the YAML definition file describing the processes to launch. options: [-q], [--quiet]: Disable some of the output generated by the launcher. Process output is never disabled by this option. To increase the level, more \"q\" can be added, up to -qqq disabling all launcher generated output except errors. args: These are arguments that will be used in variable substitution in the definition file. If some arguments start with a dash (-) a double dash (--) must be used to separate these from the launch options. E.g.: $ cogment launch --quiet ./launch.yaml 1000 8$ cogment launch -qq ./launch.yaml 1000 8$ cogment launch --quiet ./launch.yaml -- --file ./myfile --match_all","s":"Command line","u":"/docs/reference/cli/launch","h":"#command-line","p":299},{"i":304,"t":"The launch definition file is a YAML formatted file where the details of the parallel processes to run are defined. The file consists of at least a scripts top level node, and may also contain a global top level node.","s":"definition file","u":"/docs/reference/cli/launch","h":"#definition-file","p":299},{"i":306,"t":"Scripts​ The scripts node contains the details of the processes to run. Each node under scripts represents a process to run. The name of the node becomes the identity of the script/process and serves to identify the process output. Each process will run the contents of the commands list in sequence (i.e. the next command will start when the previous ends). Each command runs in an independent environment (e.g. environment variables set by one command will not be seen by the others). E.g.: scripts: process_a: # The name of this process is \"process_a\" commands: - [\"retrieve_db.sh\"] - [\"python3\", \"env/main.py\"] process_b: # The name of this process is \"process_b\" commands: - [\"cogment\", \"service\", \"orchestrator\"] The output will then look something like this: 2023-06-30T22:24:08Z [TRACE ] [process_a] Ready2023-06-30T22:24:08Z [TRACE ] [process_a:(1/2)] Launch [retrieve_db.sh]2023-06-30T22:24:08Z [TRACE ] [process_b] Ready2023-06-30T22:24:08Z [stdout] [process_a:(1/2)] Retrieving default database...2023-06-30T22:24:08Z [TRACE ] [process_b:(1/1)] Launch [cogment services orchestrator]2023-06-30T22:24:08Z [stderr] [process_b:(1/1)] 2023-06-30T22:24:08Z [INFO] [cmd] starting the orchestrator service [version:2.16.0]2023-06-30T22:24:09Z [stderr] [process_a:(1/2)] Record #2278 inconsistent2023-06-30T22:24:12Z [stdout] [process_a:(1/2)] Database retrieved in /app/sb/2023-06-30T22:24:12Z [TRACE ] [process_a:(1/2)] Completed2023-06-30T22:24:12Z [TRACE ] [process_a:(2/2)] Launch [python3 env/main.py]... Notes: \"[TRACE ]\" is low level information from the launcher (it could also be \"[INFO ]\" for more important information). \"[stdout]\", and \"[stderr]\" are the output from the process. \"process_a\" and \"process_b\" are the names given to the processes in the definition file. \"(1/2)\" means that it is the first command out of two for that process. The times/dates are in RFC3339 format. Environment Variables​ You can set environment variables using the environment node of the process. These will be part of the environment of all commands in the process. E.g: scripts: orchestrator: environment: COGMENT_ORCHESTRATOR_ACTOR_PORT: 9000 COGMENT_LIFECYCLE_PORT: 9000 commands: - [\"cogment\", \"services\", \"orchestrator\"] Working folder​ By default, the current working folder is set to the folder containing the launch definition file (not the folder where the Launch command is executed). You can change the working folder with the folder node for each process. E.g.: # Definition file is in \"/home/user\"scripts: actor_alpha: folder: ./actors/alpha # Working folder is \"/home/user/actors/alpha\" commands: - [\"python3\", \"main.py\"] Quiet​ You can control the process output by setting this value to True or False. By default this is False, in which case standard process output (stdout and stderr) are also output by the launcher. If set to True, standard process output is discarded and not output by the launcher. E.g.: scripts: setup: quiet: True commands: - [\"python3\", \"setup.py\"] Dependency (Cogment >= 2.16)​ Inter-process dependency can also be defined using the depends_on and ready_output nodes of the script. The depends_on node is a list of process names that this script depends on. Which means that all the listed processes must be \"ready\" before the current process is started. The ready_output node is a regex (regular expression) string to search for in the output of the process. When the regex matches the output, the process is considered to be \"ready\". If no regex string is provided (or the regex string is empty), the process is considered \"ready\" as soon as it starts. E.g.: scripts: process_a: quiet: True commands: - [\"retrieve_db.sh\"] - [\"python3\", \"env/main.py\"] ready_output: \"^Database retrieved in\" process_b: depends_on: - process_a commands: - [\"cogment\", \"service\", \"orchestrator\"] Notes: It is better to use single quotes to define the regex string to prevent YAML from interpreting control characters (e.g. backslash). Be aware that colors and other terminal controls (e.g. curses) in the process output can make matching difficult. The version of regex currently used mostly follows Google's RE2. The matching of the process output is not affected by the quiet script option. Global (Cogment >= 2.15)​ The global node contains values that have a global scope (i.e. they affect all scripts defined in the file). Some of these values can be overridden by the individual scripts. Environment Variables​ You can set global environment variables using the environment node under the global node. These variables will be part of the environment of all scripts, unless overridden locally in the script's own environment node. E.g: global: environment: COGMENT_LOG_LEVEL: info COGMENT_DIRECTORY_ENDPOINT: grpc://server:9010 Working folder​ By default, the current working folder is set to the folder containing the launch definition file (not the folder where the Launch command is executed). This can be changed with the folder node under the global node. It will then become the default folder for all scripts, unless locally changed by the script's own folder node. Each level can also build on the previous one if the provided folder is a relative folder. E.g.: # Definition file is in \"/home/user\"global: folder: ./app # Default folder for all scripts is set to \"/home/user/app\"scripts: local: folder: ./inside # Working folder is then \"/home/user/app/inside\" somewhere: folder: /home/away # Working folder is then \"/home/away\"","s":"Nodes","u":"/docs/reference/cli/launch","h":"#nodes","p":299},{"i":308,"t":"You can substitute launch variables using {{.VAR}} in strings anywhere in the commands, environment or ready_output nodes of the yaml definition file. All environment variables when launch is started are defined as launch variables. New environment variables set in the definition file also define launch variables. And launch defines some special variables internally also. In the concerned strings, the double open curly brackets (\"{{\") delimit the start of a variable to be substituted, therefore to include a literal double open brackets in a string, you have to surround them with backticks inside substitution brackets: {{`{{`}}. Undefined values will be replaced with . E.g.: $ export OWNER=Elvis$ cogment launch ./launch.yaml scripts: say_hi: environment: Type: \"How\" Question: \"{{.Type}} are you?\" commands: - [\"echo\", \"Hello, {{.OWNER}}. {{.Question}}\"] # echo \"Hello, Elvis. How are you?\" - [\"echo\", \"{{`{{`}} brackets }}\"] # echo \"{{ brackets }}\" - [\"echo\", \"no val: {{.MADE_UP_VARIABLE}}\"] # echo \"no val: \" ready_output: \"Hello, {{.OWNER}}.*\" Special Variables​ The launch program will also define variables that can be used in substitutions. These internally defined variables start with a double underscore (__). Environment variables with conflicting names will be replaced by these internal launch variables. Note that this only affects variable substitution, not the environment of the command execution. And internal launch variables are not available as environment variables. Arguments (Cogment >= 2.15)​ The arguments from the command line of launch define variables and can thus be substituted. E.g. cogment launch ./launch.yaml arg1 arg2 arg3 will define __1, __2 and __3 respectively corresponding to arg1, arg2 and arg3. They can then be substituted with {{.__1}}, {{.__2}}, {{.__3}}. __1 to __9 are always defined, but will be empty if no corresponding argument was given on the command line. Arguments 10 (__10) and above will only be defined if they were provided on the command line. E.g.: $ cogment launch -q ./launch.yaml 42 foo scripts: args_out: commands: - [\"echo\", \"args:\", \"{{.__1}}\", \"{{.__2}}\", \"{{.__3}}\"] # echo \"args:\" \"42\" \"foo\" \"\" - [\"echo\", \"empty: >{{.__3}}< >{{.__6}}<\"] # echo \"empty: >< ><\" - [\"echo\", \"no args: {{.__10}} {{.__42}}\"] # echo \"no args: \" ready_output: \".* {{.__2}} $\" All Arguments (Cogment >= 2.17)​ The number of arguments on the command line of launch is defined in __NB_ARGS. And all the launch arguments can be added to a script command with __ALL_ARGS. The __ALL_ARGS variable is special in terms of substitution; if the command argument string is exactly {{.__ALL_ARGS}}, then all launch arguments will be added to this command. Otherwise if it is only part of a string, it will substitute a string containing all launch arguments. In other words, a command argument \"{{.ALL_ARGS}}\" will expand to multiple arguments for the command, whereas something like \"--{{.ALL_ARGS}}\" will stay as one argument (a string that contains all launch arguments preceded by \"--\"). E.g.: $ cogment launch ./launch.yaml 42 foo extra scripts: args_out: commands: - [\"echo\", \"nb of args: {{.__NB_ARGS}}]\"] # echo \"nb of args: 3\" - [\"echo\", \"all:\", \"{{.__ALL_ARGS}}\", \"and more\"] # echo \"all:\" \"42\" \"foo\" \"extra\" \"and more\" - [\"echo\", \"all:\", \"args: {{.__ALL_ARGS}}\"] # echo \"all:\" \"args: 42 foo extra\" ready_output: \"args:.*{{.__2}}\"","s":"Variable substitution","u":"/docs/reference/cli/launch","h":"#variable-substitution","p":299},{"i":310,"t":"global: environment: RUN_NAME: \"COGRUN-{{.HOSTNAME}}-{{.__1}}\" COGMENT_LOG_LEVEL: info DIR_PORT: 9010 COGMENT_DIRECTORY_ENDPOINT: \"grpc://server:{{.DIR_PORT}}\" folder: /appscripts: prep: commands: - [\"./importdata.sh\"] - [\"./cudasetup.sh\"] - [\"sleep\", \"infinity\"] # To prevent process from ending ready_output: \"^Done\" directory: quiet: true folder: ./cogment environment: COGMENT_DIRECTORY_PORT: \"{{.DIR_PORT}}\" depends_on: - prep commands: - [\"cogment\", \"services\", \"directory\"] ready_output: 'Listening \\[port:[0-9]*\\]' # To match \"Listening [port:9010]\" orchestrator: folder: ./cogment environment: COGMENT_ORCHESTRATOR_ACTOR_PORT: 0 COGMENT_LIFECYCLE_PORT: 0 depends_on: - directory commands: - [\"cogment\", \"services\", \"orchestrator\"] runner: folder: ./pycode depends_on: - directory - orchestrator commands: - [ \"python3\", \"runner.py\", \"-u {{.USER}}\", \"-n {{.RUN_NAME}}\", \"{{.__2}}\", ] report: commands: - [\"reporting_service\"]","s":"File Example","u":"/docs/reference/cli/launch","h":"#file-example","p":299},{"i":312,"t":"Cogment Model Registry is designed to store and make available AI models to be used by Cogment actors. The Model Registry manages models in two ways: Transient (non-archived) model iterations can be used to publish an updated model to users, e.g. during training. Transient model iterations are stored in memory and can be evicted, in particular once the memory limit is reached. Stored model iterations are stored on the filesystem and should be used for long-term storage of specific iterations, e.g. for validation or deployment purposes.","s":"Model Registry","u":"/docs/reference/cli/model-registry","h":"","p":311},{"i":314,"t":"The Model Registry is simply called this way $ cogment services model_registry --port=9000 --archive_dir=./models/","s":"Command line","u":"/docs/reference/cli/model-registry","h":"#command-line","p":311},{"i":316,"t":"The Model Registry configuration can be specified either through the command line or environment variables.","s":"Configuration","u":"/docs/reference/cli/model-registry","h":"#configuration","p":311},{"i":318,"t":"The TCP port where to serve the The Model Registry API. If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory. Can be specified as: a command line option, e.g. --port=12000, an environment variable, e.g. COGMENT_MODEL_REGISTRY_PORT=12000, its default value is 9002.","s":"port","u":"/docs/reference/cli/model-registry","h":"#port","p":311},{"i":320,"t":"Whether or not to enable gRPC reflection on the served endpoints. Can be specified as: a command line flag, e.g. --grpc_reflection, an environment variable, e.g. COGMENT_MODEL_REGISTRY_GRPC_REFLECTION=1, by default, it is disabled.","s":"grpc_reflection","u":"/docs/reference/cli/model-registry","h":"#grpc_reflection","p":311},{"i":322,"t":"Path to the directory to store archived model iterations and model metadata. Can be specified as: a command line option, e.g. --archive_dir=./path/to/models/, an environment variable, e.g. COGMENT_MODEL_REGISTRY_ARCHIVE_DIR=./path/to/models/, its default value is .cogment/model_registry","s":"archive_dir","u":"/docs/reference/cli/model-registry","h":"#archive_dir","p":311},{"i":324,"t":"This defines the maximum number of model iterations that can be stored in the transient cache. Can be specified as: a command line option, e.g. --cache_max_items=500, an environment variable, e.g. COGMENT_MODEL_REGISTRY_VERSION_CACHE_MAX_ITEMS=500, its default value is 100.","s":"cache_max_items","u":"/docs/reference/cli/model-registry","h":"#cache_max_items","p":311},{"i":326,"t":"The maximum size for model iteration data chunk sent by the server. It is defined in bytes. Can be specified as: a command line option, e.g. --sent_version_chunk_size=100000, an environment variable, e.g. COGMENT_MODEL_REGISTRY_SENT_MODEL_VERSION_DATA_CHUNK_SIZE=100000, its default value is 2097152 Bytes, i.e. 2MB.","s":"sent_version_chunk_size","u":"/docs/reference/cli/model-registry","h":"#sent_version_chunk_size","p":311},{"i":328,"t":"Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator. Can be specified as: a command line option, e.g. --log_level=debug, an environment variable, e.g. COGMENT_LOG_LEVEL=5, default value is info.","s":"log_level","u":"/docs/reference/cli/model-registry","h":"#log_level","p":311},{"i":330,"t":"Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout. Can be specified as: a command line option, e.g. --log_file=./path/to/cogment.log, an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log, default value is info.","s":"log_file","u":"/docs/reference/cli/model-registry","h":"#log_file","p":311},{"i":332,"t":"Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the model registry service for discovery by other services. If not provided, the model registry will not auto register, in which case manual registration to the directory must be done, or an explicit address must be provided to access the model registry. Can be specified as: a command line option, e.g. --directory_endpoint=grpc://foo:9005, an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005, it has no default value.","s":"directory_endpoint","u":"/docs/reference/cli/model-registry","h":"#directory_endpoint","p":311},{"i":334,"t":"Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token. Can be specified as: a command line option, e.g. --directory_authentication_token=GH670ploT, an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT, it has no default value.","s":"directory_authentication_token","u":"/docs/reference/cli/model-registry","h":"#directory_authentication_token","p":311},{"i":336,"t":"This is the host that will be registered to the Directory for the Model Registry service. If not provided, the Model Registry will determine its own IP address and use that as the registration host. In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided. Can be specified as: a command line option, e.g. --directory_registration_host=foo.bar, an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_HOST=foo.bar, it has no default value (i.e. self determined IP address is used).","s":"directory_registration_host","u":"/docs/reference/cli/model-registry","h":"#directory_registration_host","p":311},{"i":338,"t":"These are the properties that will be registered to the Directory for the Model Registry service. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form \"name=value,name=value,name=value\" where the values are optional. Can be specified as: a command line option, e.g. --directory_registration_properties=\"Sim=20,hpp,mem=HIGH\", an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_PROPERTIES=\"Sim=20,hpp,mem=HIGH\", it has no default value.","s":"directory_registration_properties","u":"/docs/reference/cli/model-registry","h":"#directory_registration_properties","p":311},{"i":340,"t":"::: tip The following examples require COGMENT_MODEL_REGISTRY_GRPC_REFLECTION to be enabled as well as grpcurl_ :::","s":"API usage examples","u":"/docs/reference/cli/model-registry","h":"#api-usage-examples","p":311},{"i":342,"t":"$ echo \"{\\\"model_info\\\":{\\\"model_id\\\":\\\"my_model\\\",\\\"user_data\\\":{\\\"type\\\":\\\"my_model_type\\\"}}}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/CreateOrUpdateModel{}","s":"Create or update a model - cogmentAPI.ModelRegistrySP/CreateOrUpdateModel( .cogmentAPI.CreateOrUpdateModelRequest ) returns ( .cogmentAPI.CreateOrUpdateModelReply );","u":"/docs/reference/cli/model-registry","h":"#create-or-update-a-model---cogmentapimodelregistryspcreateorupdatemodel-cogmentapicreateorupdatemodelrequest--returns--cogmentapicreateorupdatemodelreply-","p":311},{"i":344,"t":"$ echo \"{\\\"model_id\\\":\\\"my_model\\\"}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/DeleteModel{}","s":"Delete a model - cogmentAPI.ModelRegistrySP/DeleteModel( .cogmentAPI.DeleteModelRequest ) returns ( .cogmentAPI.DeleteModelReply );","u":"/docs/reference/cli/model-registry","h":"#delete-a-model---cogmentapimodelregistryspdeletemodel-cogmentapideletemodelrequest--returns--cogmentapideletemodelreply-","p":311},{"i":346,"t":"These examples require COGMENT_MODEL_REGISTRY_GRPC_REFLECTION to be enabled as well as grpcurl List the models​ $ echo \"{}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveModels{ \"modelInfos\": [ { \"modelId\": \"my_model\", \"userData\": { \"type\": \"my_model_type\" } }, { \"modelId\": \"my_other_model\", \"userData\": { \"type\": \"my_model_type\" } } ], \"nextModelHandle\": \"2\"} Retrieve specific model(s)​ $ echo \"{\\\"model_ids\\\":[\\\"my_other_model\\\"]}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveModels{ \"modelInfos\": [ { \"modelId\": \"my_other_model\", \"userData\": { \"type\": \"my_model_type\" } } ], \"nextModelHandle\": \"1\"}","s":"Retrieve models - cogmentAPI.ModelRegistrySP/RetrieveModels( .cogmentAPI.RetrieveModelsRequest ) returns ( .cogmentAPI.RetrieveModelsReply );","u":"/docs/reference/cli/model-registry","h":"#retrieve-models---cogmentapimodelregistryspretrievemodels-cogmentapiretrievemodelsrequest--returns--cogmentapiretrievemodelsreply-","p":311},{"i":348,"t":"$ echo \"{\\\"header\\\":{\\\"version_info\\\":{ \\\"model_id\\\":\\\"my_model\\\",\\ \\\"archived\\\":true,\\ \\\"data_size\\\":$(printf chunk_1chunk_2 | wc -c)\\ }}}\\ {\\\"body\\\":{\\ \\\"data_chunk\\\":\\\"$(printf chunk_1 | base64)\\\"\\ }}\\ {\\\"body\\\":{\\ \\\"data_chunk\\\":\\\"$(printf chunk_2 | base64)\\\"\\ }}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/CreateVersion{ \"versionInfo\": { \"modelId\": \"my_model\", \"versionNumber\": 2, \"creationTimestamp\": \"907957639\", \"archived\": true, \"dataHash\": \"jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=\", \"dataSize\": \"14\" }}","s":"Create a model iteration - cogmentAPI.ModelRegistrySP/CreateVersion( stream .cogmentAPI.CreateVersionRequestChunk ) returns ( .cogmentAPI.CreateVersionReply );","u":"/docs/reference/cli/model-registry","h":"#create-a-model-iteration---cogmentapimodelregistryspcreateversion-stream-cogmentapicreateversionrequestchunk--returns--cogmentapicreateversionreply-","p":311},{"i":350,"t":"List the iterations of a model​ $ echo \"{\\\"model_id\\\":\\\"my_model\\\"}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveVersionInfos{ \"versionInfos\": [ { \"modelId\": \"my_model\", \"versionNumber\": 1, \"creationTimestamp\": \"1633119005107454620\", \"archived\": true, \"dataHash\": \"jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=\", \"dataSize\": \"14\" }, { \"modelId\": \"my_model\", \"versionNumber\": 2, \"creationTimestamp\": \"1633119625907957639\", \"archived\": true, \"dataHash\": \"jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=\", \"dataSize\": \"14\" } ], \"nextVersionHandle\": \"3\"} Retrieve specific iterations of a model​ $ echo \"{\\\"model_id\\\":\\\"my_model\\\", \\\"version_numbers\\\":[1]}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveVersionInfos{ \"versionInfos\": [ { \"modelId\": \"my_model\", \"versionNumber\": 1, \"creationTimestamp\": \"1633119005107454620\", \"archived\": true, \"dataHash\": \"jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=\", \"dataSize\": \"14\" } ], \"nextVersionHandle\": \"2\"} Retrieve the n-th to last iterations of a model​ $ echo \"{\\\"model_id\\\":\\\"my_model\\\", \\\"version_numbers\\\":[-2]}\" | grpcurl -plaintext -d @ localhost:9000 cogmentAPI.ModelRegistrySP/RetrieveVersionInfos{ \"versionInfos\": [ { \"modelId\": \"my_model\", \"versionNumber\": 1, \"creationTimestamp\": \"1633119005107454620\", \"archived\": true, \"dataHash\": \"jY0g3VkUK62ILPr2JuaW5g7uQi0EcJVZJu8IYp3yfhI=\", \"dataSize\": \"14\" } ], \"nextVersionHandle\": \"2\"}","s":"Retrieve model iteration infos - cogmentAPI.ModelRegistrySP/RetrieveVersionInfos ( .cogmentAPI.RetrieveVersionInfosRequest ) returns ( .cogmentAPI.RetrieveVersionInfosReply );","u":"/docs/reference/cli/model-registry","h":"#retrieve-model-iteration-infos---cogmentapimodelregistryspretrieveversioninfos--cogmentapiretrieveversioninfosrequest--returns--cogmentapiretrieveversioninfosreply-","p":311},{"i":352,"t":"$ echo \"{\\\"model_id\\\":\\\"my_model\\\", \\\"version_number\\\":1}\" | grpcurl -plaintext -d @ localhost:9000 cogment.ModelRegistrySP/RetrieveVersionData{ \"dataChunk\": \"Y2h1bmtfMWNodW5rXzI=\"} To retrieve the n-th to last iteration, use version_number:-n (e.g. -1 for the latest, -2 for the 2nd to last).","s":"Retrieve given iteration data - cogmentAPI.ModelRegistrySP/RetrieveVersionData ( .cogmentAPI.RetrieveVersionDataRequest ) returns ( stream .cogmentAPI.RetrieveVersionDataReplyChunk );","u":"/docs/reference/cli/model-registry","h":"#retrieve-given-iteration-data---cogmentapimodelregistryspretrieveversiondata--cogmentapiretrieveversiondatarequest--returns--stream-cogmentapiretrieveversiondatareplychunk-","p":311},{"i":354,"t":"The Orchestrator is the heart of Cogment. It ties all services together to execute trials.","s":"Orchestrator","u":"/docs/reference/cli/orchestrator","h":"","p":353},{"i":356,"t":"The Orchestrator is simply called this way $ cogment services orchestrator --lifecycle_port=9001 --actor_port=9001 --pre_trial_hooks=grpc://config:9001","s":"Command line","u":"/docs/reference/cli/orchestrator","h":"#command-line","p":353},{"i":358,"t":"The orchestrator configuration can be specified either through the command line or environment variables.","s":"Configuration","u":"/docs/reference/cli/orchestrator","h":"#configuration","p":353},{"i":360,"t":"The TCP port where to serve the trial lifecycle gRPC service. This is where the Controller connects to. It can be the same as the actor_port. If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory. Can be specified as: a command line option, e.g. --lifecycle_port=12000, an environment variable, e.g. COGMENT_LIFECYCLE_PORT=12000, its default value is 9000.","s":"lifecycle_port","u":"/docs/reference/cli/orchestrator","h":"#lifecycle_port","p":353},{"i":362,"t":"The TCP port where to serve the client actor gRPC service. This is where Client Actors (as opposed to service actors) connect to. It can be the same as the lifecycle_port. If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory. Can be specified as: a command line option, e.g. --actor_port=12000, an environment variable, e.g. COGMENT_ACTOR_PORT=12000, its default value is 9000.","s":"actor_port","u":"/docs/reference/cli/orchestrator","h":"#actor_port","p":353},{"i":364,"t":"The TCP port used to serve the client actor gRPC service for consumption over websocket. This is required for Client Actors running in a web browser. Can be specified as: a command line option, e.g. --actor_web_port=8080, an environment variable, e.g. COGMENT_WEB_PROXY_PORT=12000, its default value is 0, which means the http port is disabled.","s":"actor_web_port","u":"/docs/reference/cli/orchestrator","h":"#actor_web_port","p":353},{"i":366,"t":"The name of the YAML file containing the default parameters for new trials. Some of the parameters must match their corresponding values in the spec file (typically cogment.yaml) and may therefore lock an Orchestrator instance to specific types of trials. If pre-trial hooks are defined, these parameters are sent to the first hook before a trial starts. These parameters are ignored if the parameters are provided on trial start (see TrialStartRequest). Can be specified as: a command line option, e.g. --params=./path/to/params.yaml, an environment variable, e.g. COGMENT_DEFAULT_PARAMS_FILE=./path/to/params.yaml, it has no default value.","s":"params","u":"/docs/reference/cli/orchestrator","h":"#params","p":353},{"i":368,"t":"Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the orchestrator services, and to discover services for new trials. If not provided, the endpoints provided to the Orchestrator or in the parameters must not be discovery endpoints (i.e. must not require a directory). And the Orchestrator will not auto register its services, in which case manual registration to the directory must be done, or an explicit address must be provided to access the Orchestrator. Can be specified as: a command line option, e.g. --directory_endpoint=grpc://foo:9005, an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005, it has no default value.","s":"directory_endpoint","u":"/docs/reference/cli/orchestrator","h":"#directory_endpoint","p":353},{"i":370,"t":"Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token. Can be specified as: a command line option, e.g. --directory_authentication_token=GH670ploT, an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT, it has no default value.","s":"directory_authentication_token","u":"/docs/reference/cli/orchestrator","h":"#directory_authentication_token","p":353},{"i":372,"t":"If 0, then the Orchestrator will not register its services to the Directory; The services must be externally registered, or gRPC endpoints used to reach the services. If 1, then the Orchestrator will register its services to the directory service if possible. Other values are reserved. Can be specified as: a command line option, e.g. --directory_auto_register=0, an environment variable, e.g. COGMENT_ORCHESTRATOR_DIRECTORY_AUTO_REGISTER=0, its default value is 1.","s":"directory_auto_register","u":"/docs/reference/cli/orchestrator","h":"#directory_auto_register","p":353},{"i":374,"t":"This is the host that will be registered to the Directory for the Orchestrator services. If not provided, the Orchestrator will determine its own IP address and use that as the registration host. In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided. Can be specified as: a command line option, e.g. --directory_registration_host=foo.bar, an environment variable, e.g. COGMENT_ORCHESTRATOR_DIRECTORY_REGISTRATION_HOST=foo.bar, it has no default value (i.e. self determined IP address is used).","s":"directory_registration_host","u":"/docs/reference/cli/orchestrator","h":"#directory_registration_host","p":353},{"i":376,"t":"These are the properties that will be registered to the Directory for the Orchestrator services. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form \"name=value,name=value,name=value\" where the values are optional. Can be specified as: a command line option, e.g. --directory_registration_properties=\"Sim=20,hpp,mem=HIGH\", an environment variable, e.g. COGMENT_ORCHESTRATOR_DIRECTORY_REGISTRATION_PROPERTIES=\"Sim=20,hpp,mem=HIGH\", it has no default value.","s":"directory_registration_properties","u":"/docs/reference/cli/orchestrator","h":"#directory_registration_properties","p":353},{"i":378,"t":"Cogment endpoint definitions for pre-trial hooks. Hooks may be called before a new trial starts; They are then called in order, in a pipeline fashion, to set the parameters for a new trial. The first hook will receive the default parameters, and the result of the last hook will be used as the parameters for the new trial. Can be specified as: a command line option with different endpoints separated by commas, e.g. --pre_trial_hooks=grpc://foo:9000,grpc://bar:9000, and/or with the option passed multiple times, e.g. --pre_trial_hooks=grpc://foo:9000 --pre_trial_hooks=grpc://bar:9000, an environment variable with different endpoints separated by spaces, e.g. COGMENT_PRE_TRIAL_HOOKS=\"grpc://foo:9000 grpc://bar:9000\", it has no default value.","s":"pre_trial_hooks","u":"/docs/reference/cli/orchestrator","h":"#pre_trial_hooks","p":353},{"i":380,"t":"The TCP port where to serve Prometheus metrics. Must be different than lifecycle_port and actor_port. If not specified, the Prometheus server is disabled. Can be specified as: a command line option, e.g. --prometheus_port=8000, an environment variable, e.g. COGMENT_ORCHESTRATOR_PROMETHEUS_PORT=8000, its default value is 0, which means the prometheus server is disabled.","s":"prometheus_port","u":"/docs/reference/cli/orchestrator","h":"#prometheus_port","p":353},{"i":382,"t":"File containing simple status for the Orchestrator. This is useful when running the Orchestrator inside containers or synchronizing with external components. The file is open and stays open while the Orchestrator runs. The file will contain one to three letters: I, R, T. \"I\" indicates that the Orchestrator is initializing. When the Orchestrator starts, the file only contains this letter. \"R\" indicates that the Orchestrator is ready. This letter is added to the file (thus the file will normally contain \"IR\" at this point). \"T\" indicates that the Orchestrator has terminated (crashes will not set this file to \"T\"). Thus after a normal end, the file will contain \"IRT\". Can be specified as: a command line option, e.g. --status_file=./path/to/status, an environment variable, e.g. COGMENT_STATUS_FILE=./path/to/status, it has no default value.","s":"status_file","u":"/docs/reference/cli/orchestrator","h":"#status_file","p":353},{"i":384,"t":"File name containg a PEM encoded private key for encrypted communication. Can be specified as: a command line option, e.g. --private_key=./path/to/key.pem, an environment variable, e.g. COGMENT_PRIVATE_KEY_FILE=./path/to/key.pem, it has no default value.","s":"private_key","u":"/docs/reference/cli/orchestrator","h":"#private_key","p":353},{"i":386,"t":"File name containing a PEM encoded trusted root certificate. Can be specified as: a command line option, e.g. --root_cert=./path/to/cert.pem, an environment variable, e.g. COGMENT_ROOT_CERT_FILE=./path/to/cert.pem, it has no default value.","s":"root_cert","u":"/docs/reference/cli/orchestrator","h":"#root_cert","p":353},{"i":388,"t":"File name containing a PEM encoded trust chain. Can be specified as: a command line option, e.g. --trust_chain=./path/to/chain.pem, an environment variable, e.g. COGMENT_TRUST_CHAIN_FILE=./path/to/chain.pem, it has no default value.","s":"trust_chain","u":"/docs/reference/cli/orchestrator","h":"#trust_chain","p":353},{"i":390,"t":"Number of (started) trials between trial garbage collection. The Orchestrator periodically deletes ended and stale trials; this parameter controls how often this cleanup happens. The garbage collection may happen on the start of any trial. Can be specified as: a command line option, e.g. --gc_frequency=5, an environment variable, e.g. COGMENT_GC_FREQUENCY=5, default value is 10.","s":"gc_frequency","u":"/docs/reference/cli/orchestrator","h":"#gc_frequency","p":353},{"i":392,"t":"Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator. Can be specified as: a command line option, e.g. --log_level=debug, an environment variable, e.g. COGMENT_LOG_LEVEL=debug, default value is info.","s":"log_level","u":"/docs/reference/cli/orchestrator","h":"#log_level","p":353},{"i":394,"t":"Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout. Can be specified as: a command line option, e.g. --log_file=./path/to/cogment.log, an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log, default value is info.","s":"log_file","u":"/docs/reference/cli/orchestrator","h":"#log_file","p":353},{"i":396,"t":"Status is a utility command to request the status of Cogment services. It can also inquire the directory to find services to request status. cogment status [options] [statuses...]","s":"Status","u":"/docs/reference/cli/status","h":"","p":395},{"i":399,"t":"Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to discover the services from which to request status. Can be specified as: a command line option, e.g. --directory_endpoint=grpc://foo:9005, an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005, its default value is \"grpc://localhost:9005\" (which is the default when running cogment services directory locally).","s":"directory_endpoint","u":"/docs/reference/cli/status","h":"#directory_endpoint","p":395},{"i":401,"t":"Authentication token for services registered in the Directory. An empty token is the same as no token. Only services with the matching authentication token will be found in the directory. Can be specified as: a command line option, e.g. --directory_authentication_token=GH670ploT, an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT, it has no default value.","s":"directory_authentication_token","u":"/docs/reference/cli/status","h":"#directory_authentication_token","p":395},{"i":403,"t":"Controls how much of the service information (received from the directory) is printed. The default only prints the directory ID of the service. To increase the amount of information, more \"v\" can be added, up to -vvvv to print all service information (similar to the Cogment Directory Client \"inquire\" command). Can be specified as: a command line option, e.g. --verbose, -v, -vv, -vvv, -vvvv it has no default value (i.e. minimal verbosity)","s":"verbose","u":"/docs/reference/cli/status","h":"#verbose","p":395},{"i":405,"t":"Cogment endpoint to the service from which to request statuses. If this is a discovery endpoint then a directory must be provided. If it is a grpc endpoint and a type option is provided, the service must match the type provided or the status request will fail. Can be specified as: a command line option, e.g. --endpoint=grpc://172.2.17.23:45367, its default value is \"cogment://discover\" (which will inquire the directory for all healthy services).","s":"endpoint","u":"/docs/reference/cli/status","h":"#endpoint","p":395},{"i":407,"t":"The type of service from which to request statuses. This is relevant only if the endpoint is a grpc endpoint (because directory entries include the type data). If this type is not provided, all types will be tried to determine if one works (if there are multiple services at the endpoint, only one will be reported). Possible values are: actor, environment, prehook, datalog, lifecycle, actservice, datastore, modelregistry or other. These are the same keywords used as paths in Cogment discovery endpoints. Can be specified as: a command line option, e.g. --type=actor, it has no default value.","s":"type","u":"/docs/reference/cli/status","h":"#type","p":395},{"i":409,"t":"The names of the statuses to request. If none is provided, a request will still be made for no statuses; This can serve as a health/communication test. The star (*) status can be used to request all \"standard\" statuses (note that at the command line, the star may need to be enclosed in quotation marks to prevent it from being interpreted by the command shell). What defines a \"standard\" status depends on the service, it often excludes debug statuses and statuses that require extra computation. Non-standard statuses must be requested explicitly by name. Explicit (named) statuses can precede the star (*) in the list of statuses to request, but all names following the star status will be ignored. E.g.: $ cogment status '*'$ cogment status overall_load nb_sessions$ cogment status nb_samples_processed '*'","s":"Statuses","u":"/docs/reference/cli/status","h":"#statuses","p":395},{"i":411,"t":"The Trial Datastore client provides command line access to some features of the Trial Datastore, and in general any service implementing the Trial Datastore API. It is called this way: $ cogment client trial_datastore --endpoint=\"grpc://trial_datastore:9003\" [command] The Trial Datastore client has the following commands: list_trials to list trials stored in the Trial Datastore, delete_trials to delete trials from the Trial Datastore, export to export trials and their samples from the Trial Datastore, import to import trials and their samples to the Trial Datastore.","s":"Trial Datastore Client","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"","p":410},{"i":413,"t":"A few configuration options are shared by the different commands, they can be specified either through the command line or environment variables. endpoint​ The gRPC endpoint of the target Trial Datastore. Can be specified as: a command line option, e.g. --endpoint=\"grpc://10.0.123.5:9003\", an environment variable, e.g. COGMENT_TRIAL_DATASTORE_ENDPOINT=grpc://trial_datastore:9003, its default value is \"grpc://localhost:9003\" (which is the default when running cogment services trial_datastore locally). timeout​ The maximum duration for the execution of the request. The duration should be specified as a sequence of numbers followed by a unit suffix: \"300ms\", \"1.5h\" or \"2h45m\" are valid timeouts. Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\". Can be specified as: a command line option, e.g. --timeout=1m, an environment variable, e.g. COGMENT_CLIENT_TIMEOUT=90s, its default value is 30 seconds. console_output​ The format for what the command outputs to stdout. Can be either set to: text, for human consumption, this output usually only includes partial information to ensure readability, json, for consumption through scripts, we recommend using a tool like jq to parse and manipulate it. Can be specified as: a command line option, e.g. --console_output=json, an environment variable, e.g. COGMENT_CLIENT_CONSOLE_OUTPUT=text, its default value is text.","s":"Common options","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#common-options","p":410},{"i":415,"t":"list_trials can be used to list the trials stored in a Trial Datastore. It can be called this way: $ cogment client trial_datastore --endpoint=\"grpc://trial_datastore:9003\" list_trials --count 20 In addition to the shared configuration, list_trials can be configured with the following options. count​ The maximum number of trials to retrieve. Can be specified as: a command line option, e.g. --count=45, its default value is 10. from​ The handle of the first trial to be retrieved: leave empty to retrieve a first page of results, for subsequent ones, set it to the next trial handle retrieved alongside the previous page. Can be specified as: a command line option, e.g. --from=23, it has no default value (which will retrieve the first page of results) Command output​ The text output of list_trials is an array listing the following information for each trial. trial id: the unique ID of the trial. user id: the ID of the user that started or imported the trial. state: the trial state for the last stored sample. samples: the number of samples received for this trial. actors: the number of actors involved in this trial. The number of retrieved trials and the next trial handle are also printed. The json output of list_trials is an instance of cogmentAPI.RetrieveTrialsReply serialized in JSON.","s":"list_trials command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#list_trials-command","p":410},{"i":417,"t":"delete_trials can be used to delete trials stored in a Trial Datastore. It can be called this way: $ cogment client delete_trials --endpoint=\"grpc://trial_datastore:9003\" delete_trials [...] Command output​ The text output of delete_trials is a human readable summary of the operation. The json output of delete_trials is an object holding: \"message\" a human readable summary, \"trial_ids\" the list of deleted trial IDs (this also includes the trial IDs that didn't exist).","s":"delete_trials command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#delete_trials-command","p":410},{"i":419,"t":"export can be used to export the samples of multiple trials. It can be called this way: $ cogment client trial_datastore --endpoint=\"grpc://trial_datastore:9003\" export [...] --file=\"data.dump\" In addition to the shared configuration, export can be configured with the following options. file​ Path to the file where the data will be exported. If none is provided the same export is written to stdout and no summary output is generated. Can be specified as: a command line option, e.g. --file=\"./path/to/data.dump\", it has no default value. The output format is binary, it is composed of the following: A 16 bytes magic string used for file identification, its current value is COGMENTTRIALS001, A cogmentAPI.TrialSamplesFileHeader protobuf message defining some metadata as well as the parameters of the trials exported in the file, A list of cogmentAPI.StoredTrialSample protobuf messages defining the samples. note Protobuf messages are stored in the file as: the size of the serialized message, as a 32 bits unsigned integer encoded in little endian, the serialized message. Command output​ The text output of export is a human readable summary of the operation. The json output of export is an object holding: \"message\", a human readable summary. \"bytes\", the size of the output file, in bytes, \"trial_ids\", the list of the exported trial IDs, \"filepath\", the path to the output file, note If the --file option is not provided, only the binary content is outputed, no other command output is printed.","s":"export command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#export-command","p":410},{"i":421,"t":"import can be used to import multiple trials and their samples from a previously exported source. It can be called this way: $ cogment client trial_datastore --endpoint=\"grpc://trial_datastore:9003\" import --file=\"data.dump\" In addition to the shared configuration, import can be configured with the following options. file​ Path to the file from which the data will be imported. If none is provided the import reads from stdin. Can be specified as: a command line option, e.g. --file=\"./path/to/data.dump\", it has no default value. The input file format is expected to match the export's. prefix​ Prefix to apply to the ID of trials present in the file. This option is useful to prevent ID conflicts as each trial ID needs to be unique. Can be specified as: a command line option, e.g. --prefix=\"2022-08-08-import-\", it has no default value. user_id​ The User ID to use for the imported trials. Can be specified as: a command line option, e.g. --user_id=\"Jane Doe\", its default value is \"cogment CLI\". Command output​ The text output of import is a message specifying the number of imported trials, the input file path and the number of imported samples. The json output of import is an object holding: \"message\", a human readable summary. \"samples_count\", the number of imported samples, \"trials\", a list containing an object for each trial defining, \"trial_id\", the trial ID, \"samples_count\", the number of imported samples for this trial, \"filepath\", the path to the input file,","s":"import command","u":"/docs/reference/cli/trial-datastore/trial-datastore-client","h":"#import-command","p":410},{"i":423,"t":"Cogment Trial Datastore implements the datalog API. It is designed to store the trajectory samples generated by the trials for online and offline usage. The Cogment CLI also includes an implementation of a client. The Trial Datastore service included in the Cogment CLI can work in two modes: Memory storage, which is the default mode, stores the data in memory up to a maximum size and then evicts the least recently used samples. File storage stores the data on disk in a file. The storage engine relies on bbolt. The Trial Datastore service is simply called this way $ cogment services trial_datastore --port=9000 --file_storage=./database.db","s":"Trial Datastore Server","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"","p":422},{"i":425,"t":"The Trial Datastore configuration can be specified either through the command line or environment variables.","s":"Configuration","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#configuration","p":422},{"i":427,"t":"The TCP port where to offer gRPC services. The Trial Datastore offers two services at the same TCP port: the Datalog API and the Trial Datastore API. The Datalog API is where the Datastore receives the raw trial data from the Orchestrator. The Trial Datastore API is is where the Datastore delivers online or offline stored data (typically to actors for training). If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory. Can be specified as: a command line option, e.g. --port=12000, an environment variable, e.g. COGMENT_TRIAL_DATASTORE_PORT=12000, its default value is 9003.","s":"port","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#port","p":422},{"i":429,"t":"Whether or not to enable gRPC reflection on the served endpoints. Can be specified as: a command line flag, e.g. --grpc_reflection, an environment variable, e.g. COGMENT_TRIAL_DATASTORE_GRPC_REFLECTION=1, by default, it is disabled.","s":"grpc_reflection","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#grpc_reflection","p":422},{"i":431,"t":"This defines the maximum cumulated size of samples the memory storage holds before evicting least recently used trials samples. It is defined in bytes. Can be specified as: a command line option, e.g. --memory_storage_max_samples_size=100000000, an environment variable, e.g. COGMENT_TRIAL_DATASTORE_MEMORY_STORAGE_MAX_SAMPLE_SIZE=100000000, its default value is 1073741824 Bytes, i.e. 1GB.","s":"memory_storage_max_samples_size","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#memory_storage_max_samples_size","p":422},{"i":433,"t":"Path to the database file used by the file storage. If provided, the trial datastore will use the file storage. Can be specified as: a command line flag, e.g. --file_storage, to use the default value .cogment/trial_datastore.db, a command line option, e.g. --file_storage=./path/to/trial_datastore.db, an environment variable, e.g. COGMENT_TRIAL_DATASTORE_FILE_STORAGE_PATH=./path/to/trial_datastore.db, it has no default value.","s":"file_storage","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#file_storage","p":422},{"i":435,"t":"Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator. Can be specified as: a command line option, e.g. --log_level=debug, an environment variable, e.g. COGMENT_LOG_LEVEL=5, default value is info.","s":"log_level","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#log_level","p":422},{"i":437,"t":"Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout. Can be specified as: a command line option, e.g. --log_file=./path/to/cogment.log, an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log, default value is info.","s":"log_file","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#log_file","p":422},{"i":439,"t":"Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the trial datastore services for discovery by other services. If not provided, the trial datastore will not auto register, in which case manual registration to the directory must be done, or an explicit address must be provided to access the services of the trial datastore. Can be specified as: a command line option, e.g. --directory_endpoint=grpc://foo:9005, an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005, it has no default value.","s":"directory_endpoint","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_endpoint","p":422},{"i":441,"t":"Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token. Can be specified as: a command line option, e.g. --directory_authentication_token=GH670ploT, an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT, it has no default value.","s":"directory_authentication_token","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_authentication_token","p":422},{"i":443,"t":"This is the host that will be registered to the Directory for the Trial Datastore services. If not provided, the Trial Datastore will determine its own IP address and use that as the registration host. In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided. Can be specified as: a command line option, e.g. --directory_registration_host=foo.bar, an environment variable, e.g. COGMENT_TRIAL_DATASTORE_DIRECTORY_REGISTRATION_HOST=foo.bar, it has no default value (i.e. self determined IP address is used).","s":"directory_registration_host","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_registration_host","p":422},{"i":445,"t":"These are the properties that will be registered to the Directory for the Trial Datastore services. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form \"name=value,name=value,name=value\" where the values are optional. Can be specified as: a command line option, e.g. --directory_registration_properties=\"Sim=20,hpp,mem=HIGH\", an environment variable, e.g. COGMENT_TRIAL_DATASTORE_DIRECTORY_REGISTRATION_PROPERTIES=\"Sim=20,hpp,mem=HIGH\", it has no default value.","s":"directory_registration_properties","u":"/docs/reference/cli/trial-datastore/trial-datastore-server","h":"#directory_registration_properties","p":422},{"i":447,"t":"caution This module is still in active development and should be considered a preview version. The Cogment Web Proxy is designed to facilitate the use of Cogment with web-based components. It implements a JSON HTTP API that can be easily used from a web application. Current features include the following. Using the web proxy as a Controller: list ongoing trials, start trial. Using the web proxy as an Actor: Join a trial, Leave a trial, Receive observations and rewards, send actions and rewards. Cogment Web Proxy aims at superceding the use of the grpc-web API that can be exposed by the orchestrator.","s":"Web Proxy","u":"/docs/reference/cli/web-proxy","h":"","p":446},{"i":449,"t":"The Web Proxy is simply called this way $ cogment services web_proxy --web_port=8080 --spec_file=./cogment.yaml","s":"Command line","u":"/docs/reference/cli/web-proxy","h":"#command-line","p":446},{"i":451,"t":"The Web Proxy configuration can be specified either through the command line or environment variables.","s":"Configuration","u":"/docs/reference/cli/web-proxy","h":"#configuration","p":446},{"i":453,"t":"The TCP port where to serve the Web Proxy HTTP API. Can be specified as: a command line option, e.g. --web_port=80, an environment variable, e.g. COGMENT_WEB_PROXY_WEB_PORT=8°, its default value is 8080.","s":"web_port","u":"/docs/reference/cli/web-proxy","h":"#web_port","p":446},{"i":455,"t":"Cogment endpoint of the orchestrator service. It can be a gRPC or discovery endpoint,in which case it'll rely on the directory configuration. This endpoint is used to access the gRPC Control API. Can be specified as: a command line option, e.g. --orchestrator_endpoint=grpc://foo:9005, an environment variable, e.g. COGMENT_ORCHESTRATOR_ENDPOINT=grpc://foo:9005, its default value is cogment://discover.","s":"orchestrator_endpoint","u":"/docs/reference/cli/web-proxy","h":"#orchestrator_endpoint","p":446},{"i":457,"t":"The TCP port where to serve the The Service Actor API. If set to 0, then the system will automatically choose a free port. This is normally used in combination with a Directory. Can be specified as: a command line option, e.g. --port=12000, an environment variable, e.g. COGMENT_WEB_PROXY_PORT=12000, its default value is 9002.","s":"port","u":"/docs/reference/cli/web-proxy","h":"#port","p":446},{"i":459,"t":"Path to the spec file specifiying the trial that the proxy will interact with. In particular it is used for JSON serialization of the echanged actions, observations, configurations, ... Can be specified as: a command line option, e.g. --spec_file=./path/to/cogment.yaml, an environment variable, e.g. COGMENT_SPEC_FILE=./path/to/cogment.yaml, its default value is ./cogment.yaml","s":"spec_file","u":"/docs/reference/cli/web-proxy","h":"#spec_file","p":446},{"i":461,"t":"This defines the name of the actor implementation managed by the proxy. Can be specified as: a command line option, e.g. --implementation=my_implementation, an environment variable, e.g. COGMENT_WEB_PROXY_IMPLEMENTATION=my_implementation, its default value is web.","s":"implementation","u":"/docs/reference/cli/web-proxy","h":"#implementation","p":446},{"i":463,"t":"The secret used to sign the generated actor trial tokens. info This value should be changed for any application in production Can be specified as: a command line option, e.g. --secret=rosebud, an environment variable, e.g. COGMENT_WEB_PROXY_SECRET=rosebud, its default value is web_proxy_secret.","s":"secret","u":"/docs/reference/cli/web-proxy","h":"#secret","p":446},{"i":465,"t":"Set to define the minimum level for logging. Possible values are: off, error, warning, info, debug, trace. Note however that all trace and most debug level logs will only output if running the debug compiled version of the Orchestrator. Can be specified as: a command line option, e.g. --log_level=debug, an environment variable, e.g. COGMENT_LOG_LEVEL=5, default value is info.","s":"log_level","u":"/docs/reference/cli/web-proxy","h":"#log_level","p":446},{"i":467,"t":"Base file name for daily log output. The name will be suffixed with the date and a new file will be made every day. If not provided the logs go to stdout. Can be specified as: a command line option, e.g. --log_file=./path/to/cogment.log, an environment variable, e.g. COGMENT_LOG_FILE=./path/to/cogment.log, default value is info.","s":"log_file","u":"/docs/reference/cli/web-proxy","h":"#log_file","p":446},{"i":469,"t":"Cogment endpoint of the directory service. It must be a gRPC endpoint. The directory will be used to register the web proxy actor service for discovery by other services and to access the orchestrator. If not provided, the web proxy will not auto register, in which case manual registration to the directory must be done, or an explicit address must be provided to access the web proxy. Can be specified as: a command line option, e.g. --directory_endpoint=grpc://foo:9005, an environment variable, e.g. COGMENT_DIRECTORY_ENDPOINT=grpc://foo:9005, it has no default value.","s":"directory_endpoint","u":"/docs/reference/cli/web-proxy","h":"#directory_endpoint","p":446},{"i":471,"t":"Authentication token for services registered in the Directory. It is recorded in the Directory when registering a service. And a matching token must be provided to inquire for the service. An empty token is the same as no token. Can be specified as: a command line option, e.g. --directory_authentication_token=GH670ploT, an environment variable, e.g. COGMENT_DIRECTORY_AUTHENTICATION_TOKEN=GH670ploT, it has no default value.","s":"directory_authentication_token","u":"/docs/reference/cli/web-proxy","h":"#directory_authentication_token","p":446},{"i":473,"t":"This is the host that will be registered to the Directory for the web proxy service. If not provided, the web proxy will determine its own IP address and use that as the registration host. In some circumstances, the IP address determined by Cogment may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host (hostname or IP address) must be explicitly provided. Can be specified as: a command line option, e.g. --directory_registration_host=foo.bar, an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_HOST=foo.bar, it has no default value (i.e. self determined IP address is used).","s":"directory_registration_host","u":"/docs/reference/cli/web-proxy","h":"#directory_registration_host","p":446},{"i":475,"t":"These are the properties that will be registered to the Directory for the web proxy service. When inquiring the Directory, the properties inquired must match the properties registered. This is a string representing multiple properties in the form \"name=value,name=value,name=value\" where the values are optional. Can be specified as: a command line option, e.g. --directory_registration_properties=\"Sim=20,hpp,mem=HIGH\", an environment variable, e.g. COGMENT_MODEL_REGISTRY_DIRECTORY_REGISTRATION_PROPERTIES=\"Sim=20,hpp,mem=HIGH\", it has no default value.","s":"directory_registration_properties","u":"/docs/reference/cli/web-proxy","h":"#directory_registration_properties","p":446},{"i":478,"t":"List trials​ GET /controller/trials List all active trials. 🚧 Start a trial​ POST /controller/trials Start a trial from given trial parameters. info It is forbidden to pass gRPC endpoint as part of the trial parameters here 🚧","s":"Controller","u":"/docs/reference/cli/web-proxy","h":"#controller","p":446},{"i":480,"t":"Join a trial​ POST /actor/:actor_name/:trial_id: Join trial trial_id as actor actor_name, retrieve the initial observation and the actor trial token 🚧 Leave a trial​ DELETE /actor/:actor_name/:trial_id: Explicitly close the trial connection. Requires matching actor trial token passed in the Cogment-Actor-Trial-Token header 🚧 Act​ POST/GET /actor/:actor_name/:trial_id/:tick_id: Post the action (and potential sent rewards) for a tick (empty action on GET), retrieve the next observation (and potential received rewards). Requires matching actor trial token passed in the Cogment-Actor-Trial-Token header","s":"Actor","u":"/docs/reference/cli/web-proxy","h":"#actor","p":446},{"i":482,"t":"tip This document describes the full list of the changes for Cogment 2.O. A migration guide is available here. Cogment 2.0 is a massive internal change to Cogment, starting with the underlying gRPC API that has seen a major refactoring. But there is a minimal amount of changes that affect the use of cogment. The changes that affect users are in three categories: breaking changes, deprecated behavior and new functionalities.","s":"Cogment 2.0","u":"/docs/reference/cogment-v2-changes","h":"","p":481},{"i":484,"t":"These are changes that, if the related features were used, will prevent Cogment v1 projects from working with Cogment v2. They represent the minimum changes necessary to upgrade to v2.","s":"Breaking changes","u":"/docs/reference/cogment-v2-changes","h":"#breaking-changes","p":481},{"i":486,"t":"Delta types of observations (and all related settings) are not supported anymore. This means that in cogment.yaml, these sections are now ignored: import::python import::javascript actor_classes::observation::delta actor_classes::observation::delta_apply_fn config (for trial, environment and actor) are not accepted in the parameters section anymore.","s":"Cogment.yaml","u":"/docs/reference/cogment-v2-changes","h":"#cogmentyaml","p":481},{"i":488,"t":"The Session.get_active_actors() method has been restricted to the environment only. This means that actors cannot call this method anymore (it will raise an exception). If actors need the full list of actors, there are a few possibilities: Create a controller in the actor implementation and use the Controller.get_actors() method. Receive the actor list in the config from the pre-trial hooks; the pre-trial hooks have implicit knowledge of all actors (at least the last hook). Add the information in the actors observation space. Send the information in a message. The EnvironmentSession.send_message() method will not accept a to_environment parameter anymore (since it does not make sense anyway). The Controller.terminate_trial() method parameter trial_id has been renamed trial_ids. The Controller.get_trial_info() method parameter trial_id has been renamed trial_ids.","s":"Python SDK","u":"/docs/reference/cogment-v2-changes","h":"#python-sdk","p":481},{"i":490,"t":"Except for the following, everything has been subject to breaking changes: The shape of the observation object has remained the same You can keep the actor function that you have in your v1 project Please refer to the new Javascript API Reference","s":"Javascript SDK","u":"/docs/reference/cogment-v2-changes","h":"#javascript-sdk","p":481},{"i":492,"t":"Since the Datalog samples, unlike everything else in the SDK, used the raw API protobuf, it has implicitly changed. But in v2, there is now a wrapper for it, which replaces direct access to the protobuf content. If people still have serialized v1 data stored (e.g. in a database), v1 versions of the sample protobuf messages (DatalogSample_v1) are provided in the API for convenience, so users can deserialize the data into v1 samples and extract the information. For more info, visit the gRPC api documentation","s":"Datalog sample","u":"/docs/reference/cogment-v2-changes","h":"#datalog-sample","p":481},{"i":494,"t":"The environment variables read by the Orchestrator on start have changed names to help prevent clashes. TRIAL_LIFECYCLE_PORT becomes COGMENT_LIFECYCLE_PORT TRIAL_ACTOR_PORT becomes COGMENT_ACTOR_PORT PROMETHEUS_PORT becomes COGMENT_ORCHESTRATOR_PROMETHEUS_PORT The Orchestrator does not search for the file named cogment.yaml as the default spec file anymore. The spec file name must be explicit on the command line using --config=cogment.yaml. For further information, refer to the Orchestrator documentation.","s":"Orchestrator","u":"/docs/reference/cogment-v2-changes","h":"#orchestrator","p":481},{"i":496,"t":"These are changes that are optional to upgrade to Cogment v2, but will eventually be phased out and become breaking changes in a future version. If these features are used with Cogment v2, warnings will be issued.","s":"Deprecated Behaviors","u":"/docs/reference/cogment-v2-changes","h":"#deprecated-behaviors","p":481},{"i":498,"t":"The spec file is not used by the Orchestrator anymore, and when used by the other components, these sections of the file will be ignored: The trial_params section is not needed anymore (since the Orchestrator has its own parameters file) The datalog section is deprecated (the details of the datalog have been moved to the Orchestrator parameters file) The trial:pre-hooks section is deprecated (these values are now passed to the Orchestrator on the command line) For more information, visit the Cogment.yaml documentation.","s":"Cogment.yaml","u":"/docs/reference/cogment-v2-changes","h":"#cogmentyaml-1","p":481},{"i":500,"t":"Providing a spec file (cogment.yaml) to the Orchestrator is deprecated. The new behavior is as follows: Provide a YAML default parameters file (command line option --params) with the top level section trial_params. Add the datalog section to the parameters (if desired), without type (for type none just omit the datalog section). I.e. Whereas the spec file was defining a single data logger for all trials, the new Orchestrator can have a different data logger for each trial, and thus a datalog section is now found in the trial default parameters. Example of the new parameters datalog section: trial_params: datalog: - endpoint: grpc://logger:9000 - exclude_fields: [messages, actions] The endpoint for a client actor in the parameters must now be cogment://client instead of just client. E.g.: trial_params: actors: - endpoint: cogment://client Pre-trial hooks are defined on the command line (or environment variable) as opposed to being found in the spec file. tip The Cogment Orchestrator and the generate tools ignore the sections of the YAML files that are not relevant to them, therefore the content of the spec and parameters files can be combined in a single file safely. The Orchestrator needs a parameters file or pre-trial hooks (or both). Thus with pre-trial hooks and no parameters file (or a carefully defined parameters file) the Orchestrator is now independent of any trial specifications (spec file) and can run any type of trial. With a fully defined parameters file and no hooks, the Orchestrator can work as before for simple projects.","s":"Orchestrator","u":"/docs/reference/cogment-v2-changes","h":"#orchestrator-1","p":481},{"i":502,"t":"The ActorSession.send_message() method should not use the to_environment parameter anymore. The environment is targeted using its name (defaulted to \"env\" if not given specifically, or ActorSession.env_name). The joining of a trial by a client actor (Context.join_trial()) should now be made by providing an actor name or class (unlike previously where an implementation name was provided). This is to allow the pre-trial hooks to decide on the details of the actor (including implementation) that should be used, the same way as for service actors. In RecvObservation, the snapshot attribute is deprecated. A new attribute observation takes its place. The Controller.terminate_trial() method parameter trial_ids now takes a list of IDs (instead of a single string for one ID). The Controller.get_trial_info() method parameter trial_ids now takes a list of IDs (instead of a single string for one ID or None). The url attribute of cogment.Endpoint must now be a gRPC type URL (i.e. start with grpc://). Endpoint is used to join a trial and to get a Controller.","s":"Python SDK","u":"/docs/reference/cogment-v2-changes","h":"#python-sdk-1","p":481},{"i":504,"t":"These are changes that are additional and transparent to a v1 project.","s":"New Functionalities","u":"/docs/reference/cogment-v2-changes","h":"#new-functionalities","p":481},{"i":506,"t":"These are the parameters defined in the new file given to the Orchestrator, and that can be changed by pre-trial hooks. The environment can be given a name, similarly to the actors. If not given, it defaults to \"env\".","s":"Parameters","u":"/docs/reference/cogment-v2-changes","h":"#parameters","p":481},{"i":508,"t":"When starting a trial (Controller.start_trial()), a new trial_id_requested parameter requests the trial ID to be a specific string instead of an automatic UUID. It is a \"request\" because the trial will not start if the id conflicts with another active trial; an empty ID string will be returned if the trial is not started. Controller.terminate_trial() method has a new parameter hard. This parameter forces a hard/immediate termination of the trial. As opposed to a \"soft\" termination which will wait for the next tick to terminate nicely. The ActorSession and EnvironmentSession have a new method sending_done() to indicate that they have finished sending data and will now only be listening until the end of the trial. This is required only if the new auto_done_sending parameter of the start() method is False (It is True by default for backward compatibility). This only needs to be manually done (i.e. auto_done_sending=False) in special situations. PrehookSession.get_user_id() new method. PrehookSession.environment_name new attribute. DatalogSession.user_id new attribute (this info used to be available in the protobuf DatalogSample). RecvAction.tick_id new attribute.","s":"Python SDK","u":"/docs/reference/cogment-v2-changes","h":"#python-sdk-2","p":481},{"i":510,"t":"The specifications file (typically named cogment.yaml) is central to every Cogment project that use a Cogment SDK. This file is used to define the specifics of a type of trials. It can also contain data (the commands section) used by the Cogment CLI tool. A generator tool specific to each SDK takes this file as its main input to, among other things, configure the SDK. The top level sections in the file are: import: Used to import other proto files into the definition of the project commands: Optional. Defines the commands that can be run by the Cogment CLI trial: Define trial specific properties environment: Define environment specific properties actor_classes: Define actor specific properties (for each actor class) In this document, \"section\" refers to YAML mappings.","s":"Specifications File","u":"/docs/reference/cogment-yaml","h":"","p":509},{"i":512,"t":"The import section is used to specify external data structures, and optionally code, that is referenced in other parts of the file. The referenced files must be in the same folder as the spec file. The import sections are: proto: List of protobuf definition files. Message types defined in these files are used to communicate between the various components All Cogment projects will need at least one proto import to define the data structures exchanged between the various components. E.g.: import: proto: - filename1.proto - filename2.proto ⚠️ N.B. When using message types imported from a .proto file, types need to be referred through their package namespace, not the filename containing them.","s":"Import","u":"/docs/reference/cogment-yaml","h":"#import","p":509},{"i":514,"t":"This section is optional and defines commands that can then be executed using the Cogment CLI run command. The commands will be executed by a sub-shell and thus can be any shell command. The commands can also recursively call Cogment, either built-in CLI commands, or other commands defined here. But care should be taken not to create infinite recursive calls. E.g.: commands: generate: | cd client && python -m cogment.generate --spec cogment.yaml && cd .. cd environment && python -m cogment.generate --spec cogment.yaml && cd .. copy: cogment copy cogment.yaml *.proto params.yaml client environment start: docker-compose up orchestrator agent env play: cogment run start && docker-compose run launcher To run one of these commands, the Cogment CLI command run must be used, e.g.: cogment run start. And as such there is no problem differentiating between cogment run copy and cogment copy (the latter is the builtin CLI command, and the former is the command defined in the cogment.yaml file). The cogment command section exists so that commands can be executed in a platform independant manner.","s":"Commands","u":"/docs/reference/cogment-yaml","h":"#commands","p":509},{"i":516,"t":"This section defines properties related to the trial and trial management. It has the properties: config_type: (optional) The protobuf message type (data structure) that will be passed on to the pre-trial hooks. E.g.: trial: config_type: namespace.DataType","s":"Trial","u":"/docs/reference/cogment-yaml","h":"#trial","p":509},{"i":518,"t":"This section defines properties related to the environment. It has the properties: config_type: (optional) The protobuf message type used to configure the environment environment: config_type: namespace.DataType","s":"Environment","u":"/docs/reference/cogment-yaml","h":"#environment","p":509},{"i":520,"t":"Arguably the most important section of the spec file, the actor classes section describes the actor types that can be present in the project's trials. The content of this section is a list of actor classes, each containing the necessary properties to define an actor class. These properties are: name: The name by which this actor class is known action: Mapping of properties- space: The protobuf message type that represents all the possible actions that this actor class can perform (its action space) observation: Mapping of properties space: The protobuf message type that represents a snapshot of the data that this actor class has access to (its observation space) config_type: (optional) Defines the protobuf message type used to configure this actor class Each actor class should define both an observation and action space as protobuf message types. actor_classes: - name: BigPlayer action: space: namespace.PlayerAction observation: space: namespace.PlayerObservation config_type: namespace.PlayerConfig - name: SmallPlayer action: space: namespace.PlayerAction observation: space: namespace.PlayerObservation config_type: namespace.PlayerConfig - name: Referee action: space: namespace.RefereeAction observation: space: namespace.RefereeObservation config_type: namespace.RefereeConfig","s":"Actor Classes","u":"/docs/reference/cogment-yaml","h":"#actor-classes","p":509},{"i":522,"t":"The low-level cogment communication API is implemented using gRPC services. These services are collections of procedures to be called remotely (RPC). gRPC abstracts the network communication with familiar looking functions (representing the defined procedures), in any number of programming languages. How services are implemented or accessed is highly dependant on the programming language being interfaced, and is beyond the scope of this document (see gRPC API documentation). This reference requires a basic understanding of gRPC, and in particular the format of the *.proto files. info Cogment's gRPC API is defined and released alongside the Cogment CLI, the latest version can be accessed at https://github.com/cogment/cogment/tree/main/packages/grpc_api.","s":"gRPC API","u":"/docs/reference/grpc","h":"","p":521},{"i":524,"t":"In this API, the bytes data type is normally used to contain the serialized data of externally defined messages. These messages are well defined in the trial specifications file. On the other hand, the google.protobuf.Any data type is normally used to contain messages that are not pre-defined (thus unknown by the framework), and may be decided at runtime. It is then the responsibility of the receiver to deserialize in the correct message type. Empty messages are normally used as a placeholder for easy future, backward compatible, extension to the API. In this API, gRPC metadata is normally used only for service request (by the caller) for identifying purposes. The details of the required metadata are described with the service calls. Service replies (the callees) are not expected to provide metadata. In some places in the API, we use a list of actor data without information about which actor is where in the list. These lists have a constant length and order throughout a trial (set in the trial parameters), and thus can/must be cross referenced with other such lists within the same trial (e.g. actors_in_trial, actors_map). The actor can be inferred by the position in the list, and the index into the list can sometimes be used to identify an actor. gRPC service names in Cogment are suffixed with \"SP\" (Service Point).","s":"General","u":"/docs/reference/grpc","h":"#general","p":521},{"i":526,"t":"Due to normal network delays and unpredictability of the various components, there are limitations related to the communication with the Orchestrator that translate in issues that can arise. In the current version, to simplify the implementation, there is an expectation of \"good behavior\" from the various components: Actors are expected to respond with an action only after receiving an observation, and to send only one action per observation received. The environment is expected to respond with an observation set only after receiving an action set, and to send only one observation set per action set received (and one initial observation set). All components are expected to respond within a reasonable amount of time. Hooks do not assume to receive specific parameters, they reply only with well formed parameters, and they do not assume a specific order of hooks being called (when multiple hooks are defined). A TerminateTrial (from the Control API) is called only a reasonable delay after a StartTrial (e.g. after at least two ticks have executed). Note that what constitutes a \"reasonable\" amount of time is dependent on many variables.","s":"Limitations","u":"/docs/reference/grpc","h":"#limitations","p":521},{"i":528,"t":"Most of the common messages are defined in the common.proto file. ObservationSet and ActionSet are defined in environment.proto.","s":"Common types","u":"/docs/reference/grpc","h":"#common-types","p":521},{"i":530,"t":"Some values (and their standardized names) are recurrent throughout the gRPC API. tick_id: (uint64/sint64) The monotonic time, in number of steps, since the start of the trial. As an ID, it represents a discrete step in the processing of the trial. A step starts with observations representing a specific point in time, that are followed by actions, rewards and messages in relation to these observations. The first tick ID is 0. Some of these values may accept -1, meaning the latest step (e.g. when sending an action). timestamp: (fixed64) The wall-clock time in nanoseconds since 00:00:00UTC January 1, 1970 (Unix Epoch time). trial_id: (string) The identifier (name) of the trial.","s":"Common Values","u":"/docs/reference/grpc","h":"#common-values","p":521},{"i":532,"t":"Empty message to serve as the request for the Version procedure (present in all gRPC services defined in the Cogment API). message VersionRequest {}","s":"VersionRequest","u":"/docs/reference/grpc","h":"#versionrequest","p":521},{"i":534,"t":"Reply message for the Version procedure (present in all gRPC services defined in the API). It contains a list of version information. The Cogment framework expects at least \"cogment-api\" and \"grpc\" versions to be present in the list. The \"cogment-api\" is for the local version of the Cogment API used by the service. The \"grpc\" is for the version of gRPC used by the service. Other reported versions are specific to the service called, possibly for use by utility and management tools. message Version { string name = 1; string version = 2;}message VersionInfo { repeated Version versions = 1;} versions: List of version information. name: The name/software/module for which the version is given. E.g. \"cogment-api\". version: The version related to the name. E.g. \"1.0.0b5\".","s":"VersionInfo","u":"/docs/reference/grpc","h":"#versioninfo","p":521},{"i":536,"t":"Request message for Status procedure (present in all gRPC services defined in the Cogment API). It contains the list of states and statuses (hereafter referred as \"statuses\") to request from the service. message StatusRequest { repeated string names = 1;} names: The names of the statuses to request. If a name does not exist, it is ignored (i.e. it does not cause an error). If no names are requested, the reply will be empty. This can be used as a health/communication check for the service. The \"*\" name is always defined. It is not really a status in itself, but requests all standard statuses. What it means for a status to be standard depends on the service. Non-standard statuses need to be requested explicitly. Names that are usually defined: \"overall_load\": A representation of the load on the machine where the service is running. A specific meaning is associated with this status by the Cogment Directory Load Balancing mechanism.","s":"StatusRequest","u":"/docs/reference/grpc","h":"#statusrequest","p":521},{"i":538,"t":"Reply message for the Status procedure (present in all gRPC services defined in the API). It contains the list of requested (and available) statuses. Reported statuses are specific to the service called (or the machine/system/network it is running on). message StatusReply { map statuses = 1; // } statuses: Requested statuses (name/value) that are available, in no particular order.","s":"StatusReply","u":"/docs/reference/grpc","h":"#statusreply","p":521},{"i":540,"t":"Global parameters for a trial (see Trial Parameters). message TrialParams { SerializedMessage trial_config = 1; DatalogParams datalog = 2; EnvironmentParams environment = 3; repeated ActorParams actors = 4; uint32 max_steps = 5; uint32 max_inactivity = 6;} trial_config datalog: (optional) The parameters for the datalog of the trial. If not present, data logging is disabled. environment: The parameters for the environment of the trial. actors: The parameters for all actors involved in the trial. This list's length and order define the length and order of the lists of actors provided in different places in the API (e.g. actors_in_trial) for the trial. max_steps max_inactivity","s":"TrialParams","u":"/docs/reference/grpc","h":"#trialparams","p":521},{"i":542,"t":"Parameters related to the data logger (see Trial Parameters). message DatalogParams { string endpoint = 1; repeated string exclude_fields = 2;} endpoint: This is used by the Orchestrator to connect to the datalog using the LogExporterSP gRPC service. exclude_fields","s":"DatalogParams","u":"/docs/reference/grpc","h":"#datalogparams","p":521},{"i":544,"t":"Parameters related to an environment (see Trial Parameters). message EnvironmentParams { string endpoint = 1; SerializedMessage config = 2; string implementation = 3;} endpoint: This is used by the Orchestrator to connect to the environment using the EnvironmentSP gRPC service. config implementation","s":"EnvironmentParams","u":"/docs/reference/grpc","h":"#environmentparams","p":521},{"i":546,"t":"Parameters related to an actor (see Trial Parameters). message ActorParams { string name = 1; string actor_class = 2; string endpoint = 3; string implementation = 4; SerializedMessage config = 5; float initial_connection_timeout = 6; float response_timeout = 7; bool optional = 8; SerializedMessage default_action = 9;} name actor_class endpoint: The endpoint is used by the Orchestrator to connect to the actor using the ServiceActorSP gRPC service. If set to \"cogment://client\", then the actor is a client and will connect to the Orchestrator instead, using the ClientActorSP gRPC service. implementation config initial_connection_timeout response_timeout optional default_action","s":"ActorParams","u":"/docs/reference/grpc","h":"#actorparams","p":521},{"i":548,"t":"This contains an optional serialized protobuf message (e.g. config) defined by the user in the spec file. The bytes content is wrapped in a message to be able to differentiate between a default content (i.e. length 0) and the absence of content. This is easily done by testing for the presence of the message. message SerializedMessage { bytes content = 1;} content: A serialized protobuf message. E.g. for configs of a particular trial, the actual message type is defined in the spec file in its respective section: trial:config_type, environment:config_type, and actor_classes:config_type.","s":"SerializedMessage","u":"/docs/reference/grpc","h":"#serializedmessage","p":521},{"i":550,"t":"Details of an actor participating in a trial. message TrialActor { string name = 1; string actor_class = 2;} name: The name of the actor. actor_class: The name of the class of actor. For a particular trial, the possible actor classes are defined in the the spec file in the actor_classes:name sections.","s":"TrialActor","u":"/docs/reference/grpc","h":"#trialactor","p":521},{"i":552,"t":"A singular observation. message Observation { uint64 tick_id = 1; fixed64 timestamp = 2; bytes content = 3;} tick_id: Tick of this observation. timestamp: The time of the observation. content: The serialized protobuf message representing an observation for a specific actor. In a particular trial, the actual message type for the observation space is defined in the spec file for each actor class in section actor_classes:observation:space. Note that the specific actor represented is defined by the enclosing message.","s":"Observation","u":"/docs/reference/grpc","h":"#observation","p":521},{"i":554,"t":"Data associated with an actor's action. message Action { uint64 tick_id = 1; fixed64 timestamp = 2; bytes content = 3;} tick_id: The tick of the observation on which the action is taken. timestamp: The time of the action. content: The serialized protobuf message representing an action from a specific actor. In a particular trial, the actual message type for the action space is defined in the spec file for each actor class in section actor_classes:action:space. Note that the specific actor represented is defined by the enclosing message.","s":"Action","u":"/docs/reference/grpc","h":"#action","p":521},{"i":556,"t":"Data associated with a communication (message) destined for an actor or the environment. message Message { sint64 tick_id = 1; string sender_name = 2; string receiver_name = 3; google.protobuf.Any payload = 4;} tick_id: Tick associated with the message. sender_name: The name of the sending actor/environment. This is optional when sending messages (i.e. the sender is already known). receiver_name: The name of the target/receiving actor/environment. payload: Data for the target actor/environment. It is the responsibility of the target to understand the type received.","s":"Message","u":"/docs/reference/grpc","h":"#message","p":521},{"i":558,"t":"Data representing a simple reward source made by a single component/sender, usually for the purpose of training automated agents. message RewardSource { string sender_name = 1; float value = 2; float confidence = 3; google.protobuf.Any user_data = 4;} sender_name: Name of the sender that sent the reward. This is not needed when sending because it will be set by the orchestrator. It is only used by receiving actors. value: The numerical value of the provided reward. confidence: The weight of this reward in computing the final (aggregated) reward. user_data: Additional user data to be consumed by the receiving actor. It is the responsibility of the receiver to understand the type received.","s":"RewardSource","u":"/docs/reference/grpc","h":"#rewardsource","p":521},{"i":560,"t":"Data representing a reward sent or received, usually for the purpose of training automated agents. This is an aggregate of possibly multiple RewardSource (but at least one). message Reward { sint64 tick_id = 1; string receiver_name = 2; float value = 3; repeated RewardSource sources = 4;} tick_id: The tick associated with the reward. If set to -1 when sending a reward, the orchestrator will automatically assign the latest tick. This will always be a valid tick (i.e. >= 0) when receiving a reward. receiver_name: Name of the receiving actor (the reward destination). value: The aggregated value (weighted sum) of the provided reward sources. May be ignored when sending a reward; The final value will be computed by the orchestrator. sources: The simple reward sources that form this aggregated reward. There must be at least one.","s":"Reward","u":"/docs/reference/grpc","h":"#reward","p":521},{"i":562,"t":"A set of environment observations for all actors in the trial. message ObservationSet { uint64 tick_id = 1; fixed64 timestamp = 2; repeated bytes observations = 3; repeated int32 actors_map = 4;} tick_id: The tick to which the observations relate to. timestamp: The time when the observation set was made. observations: A list of observations. Indexed into by the actors_map. Each bytes chunk is a serialized protobuf message representing an observation for a specific actor class. For a particular trial, the actual message type for the observation space is defined in the spec file for each actor class in section actor_classes:observation:space. Note that the specific actor represented is defined by the actors_map. actors_map: A list of indexes into the observations list above. This list of indexes has the same length and order as the list of actors provided in different places in the API (e.g. actors_in_trial), for the same trial.","s":"ObservationSet","u":"/docs/reference/grpc","h":"#observationset","p":521},{"i":564,"t":"A set of actions from all actors in the trial. message ActionSet { uint64 tick_id = 1; fixed64 timestamp = 2; repeated bytes actions = 3; repeated uint32 unavailable_actors = 4;} tick_id: The tick to which the actions relate to. timestamp: The time when the action set was made (usually after the last action arrived at the Orchestrator). actions: A list of actions. Each bytes chunk is a serialized protobuf message representing an action from a specific actor. For an particular trial, the actual message type for the action space is defined in the spec file for each actor class in section actor_classes:action:space. This list has the same length and order as the list of actors provided in different places in the API (e.g. actors_in_trial), for the same trial. unavailable_actors: List of actors (index of actors) that were not available. Actors in this list have invalid data in the actions list.","s":"ActionSet","u":"/docs/reference/grpc","h":"#actionset","p":521},{"i":566,"t":"Enum representing the state of a trial. enum TrialState { UNKNOWN = 0; INITIALIZING = 1; PENDING = 2; RUNNING = 3; TERMINATING = 4; ENDED = 5;} UNKNOWN: Should not be used (it's a requirement of protobuf enums to have a 0 default value). INITIALIZING: The trial is in the process of starting. PENDING: The trial is waiting for its final parameters, all its components to be ready, and the first observation. RUNNING: The trial is running. TERMINATING: The trial is in the process of ending (either a request to end has been received or the last observation has been received). ENDED: The trial has ended. Only a set number of ended trials will be kept in memory (configured in the Orchestrator).","s":"TrialState","u":"/docs/reference/grpc","h":"#trialstate","p":521},{"i":568,"t":"Enum representing the state of communication with the actors and environment. enum CommunicationState { UNKNOWN_COM_STATE = 0; NORMAL = 1; HEARTBEAT = 2; LAST = 3; LAST_ACK = 4; END = 5;} UNKNOWN_COM_STATE: Should not be used (it's a requirement of protobuf enums to have a 0 default value). NORMAL: Normal communication message. Always contains data. HEARTBEAT: Heartbeat request/reply message. Contains no data. When received, must be responded in kind. LAST: Message indicating that the trial is ending, and ending data is following (as NORMAL). Contains no data. LAST_ACK: Message indicating that the last data has been sent (i.e. this is the last outgoing message). Contains no data. END: Message indicating that the trial has ended (i.e. this is the final message). Contains no data, except maybe for details. The normal (soft) end of a trial follows this sequence : Orchestrator or Environment sends LAST Exchange of NORMAL finalizing data Component sends LAST_ACK (component stops sending after this) Orchestrator sends NORMAL finalizing data Orchestrator terminates communication with END For a hard termination of a trial, the Orchestrator will send END to all components (with no LAST/LAST_ACK handshake).","s":"CommunicationState","u":"/docs/reference/grpc","h":"#communicationstate","p":521},{"i":570,"t":"This API is defined in orchestrator.proto. It is implemented by the cogment orchestrator, and client applications are expected to connect to it using the gRPC client API. This API is used for general control and services related to trials.","s":"Control API","u":"/docs/reference/grpc","h":"#control-api","p":521},{"i":572,"t":"service TrialLifecycleSP { rpc StartTrial(TrialStartRequest) returns (TrialStartReply) {} rpc TerminateTrial(TerminateTrialRequest) returns (TerminateTrialReply) {} rpc GetTrialInfo(TrialInfoRequest) returns (TrialInfoReply) {} rpc WatchTrials(TrialListRequest) returns (stream TrialListEntry) {} rpc Version(VersionRequest) returns (VersionInfo) {}} StartTrial()​ Start a new trial. Metadata: None TerminateTrial()​ Request the environment to terminate existing trial(s). Metadata: trial-id: (one or more) Identifier(s) of the trial(s) to terminate. GetTrialInfo()​ Get extra information about an existing trial. Metadata: trial-id: (zero or more) Identifier(s) of the trial(s) we are requesting information about. If no trial id is provided, the request is for information about all active trials. WatchTrials()​ Stream state changes from trials. Metadata: None Version()​ Request version data. Metadata: None","s":"Service TrialLifecycleSP","u":"/docs/reference/grpc","h":"#service-triallifecyclesp","p":521},{"i":574,"t":"Request message for the StartTrial procedure. message TrialStartRequest { oneof start_data { SerializedMessage config = 1; TrialParams params = 4; } string user_id = 2; string trial_id_requested = 3;} config: The trial config data. This data can be used by the pre-trial hooks to determine the config for the rest of the components. params: The fully defined parameters for the new trial. When this is given to start the trial, the default parameters are ignored, and the pre-trial hooks will not be called. user_id: The ID of the user that is starting the trial. user_id: The ID of the user that is starting the trial. trial_id_requested: The trial identifier requested for the new trial. It must be unique. If not empty, the Orchestrator will try to use this trial_id, otherwise, a UUID will be created.","s":"TrialStartRequest","u":"/docs/reference/grpc","h":"#trialstartrequest","p":521},{"i":576,"t":"Reply message for the StartTrial procedure. message TrialStartReply { string trial_id = 1;} trial_id: ID of the newly started trial. Empty if the requested trial ID could not be used.","s":"TrialStartReply","u":"/docs/reference/grpc","h":"#trialstartreply","p":521},{"i":578,"t":"Request message for the TerminateTrial procedure. message TerminateTrialRequest {}","s":"TerminateTrialRequest","u":"/docs/reference/grpc","h":"#terminatetrialrequest","p":521},{"i":580,"t":"Reply message for the TerminateTrial procedure. message TerminateTrialReply {}","s":"TerminateTrialReply","u":"/docs/reference/grpc","h":"#terminatetrialreply","p":521},{"i":582,"t":"Request message for the GetTrialInfo procedure. message TrialInfoRequest { bool get_latest_observation = 1;} get_latest_observation: If true, request the latest environment observation available for the trial (in addition to standard information).","s":"TrialInfoRequest","u":"/docs/reference/grpc","h":"#trialinforequest","p":521},{"i":584,"t":"Reply message for the GetTrialInfo procedure. message TrialInfoReply { repeated TrialInfo trial = 1;} trial: List of information about the trials. Contains only the requested trial info if a trial ID was provided when the call was made (as metadata to the procedure). Otherwise contains information about all active trials.","s":"TrialInfoReply","u":"/docs/reference/grpc","h":"#trialinforeply","p":521},{"i":586,"t":"Message containing information about a trial. message TrialInfo { string trial_id = 1; string env_name = 2; TrialState state = 3; uint64 tick_id = 4; fixed64 trial_duration = 5; ObservationSet latest_observation = 6; repeated TrialActor actors_in_trial = 7;} trial_id: The Identifier of the trial. env_name: The name of the environment running the trial. state: The state of the trial. tick_id: The current tick of the trial. trial_duration: The duration of the trial so far, in nanoseconds. If the trial has ended, this is the duration from start to end of the trial. This is meant as an indicator; resolution may not be a nanosecond, and precision is not guaranteed. latest_observation: The latest environment observations for all actors. This will be provided only if requested in the TrialInfoRequest. actors_in_trial: The list of active actors in the trial.","s":"TrialInfo","u":"/docs/reference/grpc","h":"#trialinfo","p":521},{"i":588,"t":"Request message for the WatchTrials procedure. message TrialListRequest { repeated TrialState filter = 1; bool full_info = 2;} filter: The list of states that are requested. If a trial is not in a state found in this list, it will not be reported. If the list is empty, all states will be reported. full_info: If true, full trial information will be returned instead of just trial ID and trial state.","s":"TrialListRequest","u":"/docs/reference/grpc","h":"#triallistrequest","p":521},{"i":590,"t":"Stream reply message for the WatchTrials procedure. message TrialListEntry { string trial_id = 1; TrialState state = 2; TrialInfo info = 3;} trial_id: The Identifier of the trial. Only set if info is not present. state: The state of the trial. Only set if info is not present. info: Trial basic information (i.e. without latest_observation and actors_in_trials). Present only if requested with full_info in the TrialListRequest.","s":"TrialListEntry","u":"/docs/reference/grpc","h":"#triallistentry","p":521},{"i":592,"t":"There are two kinds of actors: Service and Client. They each have their own separate service (respectively ServiceActorSP and ClientActorSP). But the messages are identical and work almost the same way (except for the initial phase).","s":"Actor API","u":"/docs/reference/grpc","h":"#actor-api","p":521},{"i":594,"t":"This API is defined in agent.proto. It is implemented by the service actor application using the gRPC server API, and the Orchestrator connects to the service actor application using the gRPC client API. This API is used by service actors that will be participating in new trials. They are connected at the start of a trial in which they participate. Multiple simultaneous service actors can be served from a single service application instance (i.e. same endpoint). An actor endpoint, for the Orchestrator to connect to, is defined in the trial parameters. Service ServiceActorSP​ service ServiceActorSP { rpc RunTrial(stream ActorRunTrialInput) returns (stream ActorRunTrialOutput) {} rpc Version(VersionRequest) returns (VersionInfo) {}}","s":"Service Actor API","u":"/docs/reference/grpc","h":"#service-actor-api","p":521},{"i":596,"t":"This API is defined in orchestrator.proto. It is implemented by the Orchestrator using the gRPC server API, and client applications are expected to connect to the Orchestrator using the gRPC client API. This API is used by client actors participating in existing (initializing) trials. The trial expecting client actors will wait for all actors to be connected before starting the trial. The actors connecting this way must have an endpoint set to \"cogment://client\" in the trial parameters. Note the reversal of the input and output messages compared to the service actor RunTrial procedure. Service ClientActorSP​ service ClientActorSP { rpc RunTrial(stream ActorRunTrialOutput) returns (stream ActorRunTrialInput) {} rpc Version(VersionRequest) returns (VersionInfo) {}}","s":"Client Actor API","u":"/docs/reference/grpc","h":"#client-actor-api","p":521},{"i":598,"t":"Procedure call to participate in a trial. It is active for the duration of the trial. Actor actions and data are provided to the Orchestrator in the output message stream, and observations and data are provided by the Orchestrator in the input message stream. Metadata: trial-id: Identifier of the trial the actor is participating in. This is supplied to service actors, but must be supplied by client actors.","s":"RunTrial()","u":"/docs/reference/grpc","h":"#runtrial","p":521},{"i":600,"t":"Request version data. Metadata: None","s":"Version()","u":"/docs/reference/grpc","h":"#version-1","p":521},{"i":602,"t":"Message received by actors during the streaming RunTrial procedure. data should contain a message only when state is NORMAL (or in the case of a hard termination, details can be sent with state END). Defined in the common.proto file. message ActorRunTrialInput { CommunicationState state = 1; oneof data { ActorInitialInput init_input = 2; Observation observation = 3; Reward reward = 4; Message message = 5; string details = 6; }} state: The state of this communication message. Identifies this message as a data or a control message. init_input: The initial communication data at the start of a trial. It should always be the first NORMAL state message in the stream. Used to report the details of the trial the actor is participating in. observation: An observation from the environment. reward: Rewards from other participants in the trial. message: A message from other participants in the trial. details: Explanation for special circumstances, for example when receiving a hard termination signal (a state of END without LAST or LAST_ACK).","s":"ActorRunTrialInput","u":"/docs/reference/grpc","h":"#actorruntrialinput","p":521},{"i":604,"t":"Message sent by actors during the streaming RunTrial procedure. data should contain a message only when state is NORMAL. Defined in the common.proto file. message ActorRunTrialOutput { CommunicationState state = 1; oneof data { ActorInitialOutput init_output = 2; Action action = 3; Reward reward = 4; Message message = 5; string details = 6; }} state: The state of this communication message. Identifies this message as a data or a control message. init_output: The initial communication data at the start of a trial. It should always be the first NORMAL state message in the stream. Used to initiate or acknowledge connection to a trial. action: An action from the actor. reward: A reward for other participants in the trial. message: A message for other participants in the trial. details: Reserved.","s":"ActorRunTrialOutput","u":"/docs/reference/grpc","h":"#actorruntrialoutput","p":521},{"i":606,"t":"The initial communication message at the start of a trial. Used to report the details of the trial the actor is participating in. For service actors, this message initiates the connection stream for a new trial. The trial ID is provided in the metadata of the RunTrial procedure. For client actors, this message is a reply to a connection request to an existing trial. message ActorInitialInput { string actor_name = 1; string actor_class = 2; string impl_name = 3; string env_name = 4; SerializedMessage config = 5;} actor_name: The name of the actor participating in the trial. actor_class: The actor class of the actor participating in the trial. impl_name: (optional) Name of the implementation that should run the actor in this trial. If not provided, an arbitrary implementation will be used. env_name: The name of the environment running the trial the actor is participating in. config: The configuration to start the actor.","s":"ActorInitialInput","u":"/docs/reference/grpc","h":"#actorinitialinput","p":521},{"i":608,"t":"The initial communication message at the start of a trial. Used to initiate or acknowledge connection to a trial. For service actors, this message is empty and serves to acknowledge that the actor is ready to start the trial. For client actors, this message serves as a request to connect to an existing trial. The trial ID is provided in the metadata of the RunTrial procedure. message ActorInitialOutput { oneof slot_selection { string actor_class = 1; string actor_name = 2; }} actor_name: The name in the trial that the client actor wants to participate as. actor_class: The class in the trial that the client actor wants to participate as. In this case, there may be many options, and the Orchestrator will decide precisely which name the client actor will receive.","s":"ActorInitialOutput","u":"/docs/reference/grpc","h":"#actorinitialoutput","p":521},{"i":610,"t":"This API is defined in environment.proto. It is implemented by the environment application using the gRPC server API, and the Orchestrator connects to the environment application using the gRPC client API. This API is used by environments that will run trials. There is only one environment per trial. Multiple simultaneous environments (for different trials) can be served from a single environment application instance (endpoint). The environment endpoint, for the Orchestrator to connect to, is defined in the trial parameters.","s":"Environment API","u":"/docs/reference/grpc","h":"#environment-api","p":521},{"i":612,"t":"service EnvironmentSP { rpc RunTrial(stream EnvRunTrialInput) returns (stream EnvRunTrialOutput) {} rpc Version(VersionRequest) returns (VersionInfo) {}} RunTrial()​ Procedure call to participate in a trial. It is active for the duration of the trial. Actor actions and data are provided by the Orchestrator in the input message stream, and observations and data are provided to the Orchestrator in the output message stream. Metadata: trial-id: Identifier of the trial the environment is participating in. Version()​ Called to request version data. Metadata: None","s":"Service EnvironmentSP","u":"/docs/reference/grpc","h":"#service-environmentsp","p":521},{"i":614,"t":"Message received by the environment during the streaming RunTrial procedure. data should contain a message only when state is NORMAL (or in the case of a hard termination, details can be sent with state END). message EnvRunTrialInput { CommunicationState state = 1; oneof data { EnvInitialInput init_input = 2; ActionSet action_set = 3; Message message = 4; string details = 5; }} state: The state of this communication message. Identifies this message as a data or a control message. init_input: The initial communication data at the start of a trial. It should always be the first NORMAL state message in the stream. Used to provide the details of the trial the environment will run. action_set: Actions from all actors in the trial. message: A message from other participants in the trial. details: Explanation for special circumstances, for example when receiving a hard termination signal (a state of END without LAST or LAST_ACK).","s":"EnvrRunTrialInput","u":"/docs/reference/grpc","h":"#envrruntrialinput","p":521},{"i":616,"t":"Message sent by the environment during the streaming RunTrial procedure. data should contain a message only when state is NORMAL. message EnvRunTrialOutput { CommunicationState state = 1; oneof data { EnvInitialOutput init_output = 2; ObservationSet observation_set = 3; Reward reward = 4; Message message = 5; string details = 6; }} state: The state of this communication message. Identifies this message as a data or a control message. init_output: The initial communication data at the start of a trial. It should always be the first NORMAL state message in the stream. Used to acknowledge that the environment is ready to run the trial. Note that the trial will only really start when the environment sends the first set of observations. observation_set: Observations for all actors in the trial. reward: A reward for other participants in the trial. message: A message for other participants in the trial. details: Reserved.","s":"EnvRunTrialOutput","u":"/docs/reference/grpc","h":"#envruntrialoutput","p":521},{"i":618,"t":"The initial communication message at the start of a trial. This message initiates the connection stream for a new trial. The trial ID is provided in the metadata of the RunTrial procedure. message EnvInitialInput { string name = 1; string impl_name = 2; uint64 tick_id = 3; repeated TrialActor actors_in_trial = 4; SerializedMessage config = 5;} name: The name of the environment participating in the trial. impl_name: (optional) Name of the implementation that should run the environment in this trial. If not provided, an arbitrary implementation will be used. tick_id: Initial tick id requested to start the environment. actors_in_trial: The list of all actors participating in the trial. This list has the same length and order as the list of actors provided in different places in the API, for the same trial. config: The configuration to start the environment.","s":"EnvInitialInput","u":"/docs/reference/grpc","h":"#envinitialinput","p":521},{"i":620,"t":"The initial communication message at the start of a trial. This message is empty and serves to acknowledge that the environment is ready to run the trial. message EnvInitialOutput {}","s":"EnvInitialOutput","u":"/docs/reference/grpc","h":"#envinitialoutput","p":521},{"i":622,"t":"This API is defined in datalog.proto. It is implemented by the data logger application using the gRPC server API, including the out-of-the-box component cogment-trial-datastore. The data logger endpoint, for the orchestrator to connect to, is defined in the trial parameters.","s":"Data/Log API","u":"/docs/reference/grpc","h":"#datalog-api","p":521},{"i":624,"t":"service LogExporterSP { rpc RunTrialDatalog(stream LogExporterSampleRequest) returns (LogExporterSampleReply) {} rpc Version(VersionRequest) returns (VersionInfo) {}} RunTrialDatalog()​ Called for each trial, at the start of the trial. The first data received are the parameters. Data samples are provided in the request stream following the parameters. The stream is maintained for the duration of the trial. Metadata: trial-id: Identifier of the trial that is the source of the data. user-id: Identifier of the user that started the trial. Version()​ Called to request version data. Metadata: None","s":"Service LogExporterSP","u":"/docs/reference/grpc","h":"#service-logexportersp","p":521},{"i":626,"t":"Stream request message for the RunTrialDatalog procedure. message SampleInfo { bool out_of_sync = 5; uint64 tick_id = 1; fixed64 timestamp = 2; TrialState state = 3; repeated string special_events = 4;}message DatalogSample { SampleInfo info = 1; ObservationSet observations = 2; repeated Action actions = 3; repeated Reward rewards = 4; repeated Message messages = 5; repeated uint32 default_actors = 6; repeated uint32 unavailable_actors = 7;}message LogExporterSampleRequest { oneof msg { TrialParams trial_params = 1; DatalogSample sample = 2; }} out_of_sync: If false, this sample is a normal and full sample. If true, it is an out-of-sync sample that is partially filled, and some of the other value may have a slightly different meaning than for a normal sample. tick_id: The tick the data relates to. timestamp: The time the data was received. For a full sample, this is the time the observation set was received by the Orchestrator. state: The state of the trial at the end of the tick. For out-of-sync samples, the state is undefined. special_events: Events not visible from the rest of the data may appear in here. Out-of-sync samples will usually have an explanation of data in the special events list. observations: Observations from the environment. Out-of-sync samples may not have observations. actions: Actions from all actors. This list has the same length and order as the list of actors provided in trial_params. This list may be empty for out-of-sync samples. rewards: List of rewards sent to actors. messages: List of user data sent to actors or the environment. default_actors: List of actors (index of actors) that were not available but had a default action. Actors in this list have invalid data in the actions list. unavailable_actors: List of actors (index of actors) that were not available and did not have a default action. Actors in this list have invalid data in the actions list. trial_params: Trial parameters used for a trial. This is sent on start of a trial, as the first message in the RunTrialDatalog stream. sample: A data sample to be logged. It can be an out-of-sync sample which contains only partial data.","s":"LogExporterSampleRequest","u":"/docs/reference/grpc","h":"#logexportersamplerequest","p":521},{"i":628,"t":"Reply message for the RunTrialDatalog procedure. message LogExporterSampleReply {}","s":"LogExporterSampleReply","u":"/docs/reference/grpc","h":"#logexportersamplereply","p":521},{"i":630,"t":"This API is defined in hooks.proto. It is implemented by the pre-trial hook application using the gRPC server API, and the orchestrator connects to the application. The pre-trial hook endpoint, for the orchestrator to connect to, are defined on the command line of the Orchestrator (or in environment variables).","s":"Hook API","u":"/docs/reference/grpc","h":"#hook-api","p":521},{"i":632,"t":"service TrialHooksSP { rpc OnPreTrial(PreTrialParams) returns (PreTrialParams) {} rpc Version(VersionRequest) returns (VersionInfo) {}} OnPreTrial()​ Called before a trial is started to set or modify the parameters for the trial. Metadata: trial-id: Identifier of the new trial that will be started. user-id: Identifier of the user that started the trial. Version()​ Called to request version data. Metadata: None","s":"Service TrialHooksSP","u":"/docs/reference/grpc","h":"#service-trialhookssp","p":521},{"i":634,"t":"This API is defined in directory.proto. It is implemented by the Directory application using the gRPC server API.","s":"Directory API","u":"/docs/reference/grpc","h":"#directory-api","p":521},{"i":636,"t":"service DirectorySP { rpc Register(stream RegisterRequest) returns (stream RegisterReply) {} rpc Deregister(stream DeregisterRequest) returns (stream DeregisterReply) {} rpc Inquire(InquireRequest) returns (stream InquireReply) {} rpc Version(VersionRequest) returns (VersionInfo) {}} Register()​ Called to register (add) services to the directory. Metadata: authentication_token: (Optional) Token of the services being registered. This will be registered with the services and must match when inquiring or deregistering a service. Deregister()​ Called to deregister (remove) previously registered services to the directory. Metadata: authentication_token: (Optional) Token to authenticate services. This must match the token of the registered services. Inquire()​ Called to inquire (search) the directory for registered services. Metadata: authentication_token: (Optional) Token to identify the services. This must match the token of the inquired services. Version()​ Called to request version data. Metadata: None","s":"Service DirectorySP","u":"/docs/reference/grpc","h":"#service-directorysp","p":521},{"i":638,"t":"Type of service registered. This serves to know how to test for health. enum ServiceType { UNKNOWN_SERVICE = 0; TRIAL_LIFE_CYCLE_SERVICE = 1; CLIENT_ACTOR_CONNECTION_SERVICE = 2; ACTOR_SERVICE = 3; ENVIRONMENT_SERVICE = 4; PRE_HOOK_SERVICE = 5; DATALOG_SERVICE = 6; DATASTORE_SERVICE = 7; MODEL_REGISTRY_SERVICE = 8; DIRECTORY_SERVICE = 9; OTHER_SERVICE = 100;} UNKNOWN_SERVICE: Should not be used (it's a requirement of protobuf enums to have a 0 default value). TRIAL_LIFE_CYCLE_SERVICE: Cogment service accessed with gRPC service TrialLifecycleSP. CLIENT_ACTOR_CONNECTION_SERVICE: Cogment service accessed with gRPC service ClientActorSP. ACTOR_SERVICE: Cogment service accessed with gRPC service ServiceActorSP. ENVIRONMENT_SERVICE: Cogment service accessed with gRPC service EnvironmentSP. PRE_HOOK_SERVICE: Cogment service accessed with gRPC service TrialHooksSP. DATALOG_SERVICE: Cogment service accessed with gRPC service DatalogSP. DATASTORE_SERVICE: Cogment service accessed with gRPC service TrialDatastoreSP. MODEL_REGISTRY_SERVICE: Cogment service accessed with gRPC service ModelRegistrySP. DIRECTORY_SERVICE: Cogment service accessed with gRPC service DirectorySP. OTHER_SERVICE: This is for services not provided by Cogment or that do not have a dedicated service type. The properties registered in the directory should provide the necessary information, but this is left to the users to manage, and no health checking is performed.","s":"ServiceType","u":"/docs/reference/grpc","h":"#servicetype","p":521},{"i":640,"t":"Message containing registration details of a service. message ServiceDetails { ServiceType type = 1; map properties = 2;} type: The type of service. properties: Properties associated with the service, in a map (property name : property value).","s":"ServiceDetails","u":"/docs/reference/grpc","h":"#servicedetails","p":521},{"i":642,"t":"Message containing endpoint (connection) details for a service. message ServiceEndpoint { enum Protocol { UNKNOWN = 0; GRPC = 1; GRPC_SSL = 2; COGMENT = 3; } Protocol protocol = 1; string host = 2; uint32 port = 3;} Protocol: The communication protocol for the service. UNKNOWN: Should not be used (it's a requirement of protobuf enums to have a 0 default value). GRPC: The service connection is using gRPC and does not require encryption (SSL). GRPC_SSL: The service connection is using gRPC and is expecting encryption (SSL). COGMENT: This is a protocol specific to Cogment. The host will provide more details. host: For gRPC, this is a network accessible hostname or IP address. For Cogment, this can only be client, which indicates that the service is not really a service, but a client, and will connect and not be connected to. port: For gRPC, this is the TCP port to connect to. For Cogment, this is not used.","s":"ServiceEndpoint","u":"/docs/reference/grpc","h":"#serviceendpoint","p":521},{"i":644,"t":"Request message for the Register procedure. message RegisterRequest { // URL where to connect to the service. ServiceEndpoint endpoint = 1; ServiceDetails details = 2;} endpoint: The connection endpoint of the service to be registered. details: The service details to be registered for the service.","s":"RegisterRequest","u":"/docs/reference/grpc","h":"#registerrequest","p":521},{"i":646,"t":"Reply message for the Register procedure. message RegisterReply { enum Status { UNKNOWN = 0; OK = 1; FAILED = 2; } Status status = 1; string error_msg = 2; uint64 service_id = 3; string secret = 4;} Status: The result status. UNKNOWN: Should not be used (it's a requirement of protobuf enums to have a 0 default value). OK: Registration succeeded and the data is valid. FAILED: Registration failed, the data is invalid (more details may be available in the error message). status: The status of the corresponding registration request. error_msg: Any extra details about the failure of the registration (if status == FAILED). service_id: The ID that the service was given when it was registered in the Directory. secret: This is a string that must be provided to deregister the service, and cannot be inquired.","s":"RegisterReply","u":"/docs/reference/grpc","h":"#registerreply","p":521},{"i":648,"t":"Request message for the Deregister procedure. message DeregisterRequest { uint64 service_id = 1; string secret = 2;} service_id: The ID of the service. secret: The string that was given when the service was registered.","s":"DeregisterRequest","u":"/docs/reference/grpc","h":"#deregisterrequest","p":521},{"i":650,"t":"Reply message for the Deregister procedure. message DeregisterReply { enum Status { UNKNOWN = 0; OK = 1; FAILED = 2; } Status status = 1; string error_msg = 2;} Status: The result status. UNKNOWN: Should not be used (it's a requirement of protobuf enums to have a 0 default value). OK: Deregistration succeeded. FAILED: Deregistration failed (more details may be available in the error message). status: The status of the corresponding deregistration request. error_msg: Any extra details about the failure to deregister the service (if status == FAILED).","s":"DeregisterReply","u":"/docs/reference/grpc","h":"#deregisterreply","p":521},{"i":652,"t":"Request message for the Inquire procedure. Requires either a service ID, or details of services to find. message InquireRequest { oneof inquiry { uint64 service_id = 1; ServiceDetails details = 2; }} service_id: The ID of the service. details: The details of services to find.","s":"InquireRequest","u":"/docs/reference/grpc","h":"#inquirerequest","p":521},{"i":654,"t":"Reply message for the Inquire procedure. message FullServiceData { ServiceEndpoint endpoint = 1; uint64 service_id = 2; ServiceDetails details = 3;}message InquireReply { FullServiceData data = 1;} endpoint: The connection endpoint of the service. service_id: The ID of the service. details: The details of the service.","s":"InquireReply","u":"/docs/reference/grpc","h":"#inquirereply","p":521},{"i":656,"t":"This API is defined in model_registry.proto. It is implemented by cogment-model-registry.","s":"Model Registry API","u":"/docs/reference/grpc","h":"#model-registry-api","p":521},{"i":658,"t":"This gRPC API defines a service able to store models, e.g. neural network architecture, weights and any additional parameters. service ModelRegistrySP { rpc CreateOrUpdateModel(CreateOrUpdateModelRequest) returns (CreateOrUpdateModelReply) {} rpc DeleteModel(DeleteModelRequest) returns (DeleteModelReply) {} rpc RetrieveModels(RetrieveModelsRequest) returns (RetrieveModelsReply) {} rpc CreateVersion(stream CreateVersionRequestChunk) returns (CreateVersionReply) {} rpc RetrieveVersionInfos(RetrieveVersionInfosRequest) returns (RetrieveVersionInfosReply) {} rpc RetrieveVersionData(RetrieveVersionDataRequest) returns (stream RetrieveVersionDataReplyChunk) {} rpc Version(VersionRequest) returns (VersionInfo) {}} CreateOrUpdateModel()​ Create or update a model in the registry having the given unique (within the registry) model_id. Metadata: None Request: CreateOrUpdateModelRequest Reply: CreateOrUpdateModelReply DeleteModel()​ Delete a given model and all its iterations from the registry. Metadata: None Request: DeleteModelRequest Reply: DeleteModelReply RetrieveModels()​ Retrieve all or selected models. This procedure supports paginated requests. Metadata: None Request: RetrieveModelsRequest Reply: RetrieveModelsReply CreateVersion()​ Create a new iteration of a given model. Because of their potential large size, model iteration data are uploaded as a stream. Metadata: None Request: Stream of CreateVersionRequestChunk Reply: CreateVersionReply RetrieveVersionInfos()​ Retrieve the information for all or selected iterations of a given model. Metadata: None Request: RetrieveVersionInfosRequest Reply: RetrieveVersionInfosReply RetrieveVersionData()​ Retrieve the data for a specific iteration of the model. Because of their potential large size, data are retrieved as a stream. Metadata: None Request: RetrieveVersionDataRequest Reply: Stream of RetrieveVersionDataReplyChunk","s":"Service ModelRegistrySP","u":"/docs/reference/grpc","h":"#service-modelregistrysp","p":521},{"i":660,"t":"Request for ModelRegistrySP.CreateOrUpdateModel() message CreateOrUpdateModelRequest { ModelInfo model_info = 1;} model_info: Defines the unique model identifier within the registry and the user_data to use to create or update the model.","s":"CreateOrUpdateModelRequest","u":"/docs/reference/grpc","h":"#createorupdatemodelrequest","p":521},{"i":662,"t":"Reply for ModelRegistrySP.CreateOrUpdateModel() message CreateOrUpdateModelReply {}","s":"CreateOrUpdateModelReply","u":"/docs/reference/grpc","h":"#createorupdatemodelreply","p":521},{"i":664,"t":"Request for ModelRegistrySP.DeleteModel() message DeleteModelRequest { string model_id = 1;} model_ids: Identifier of the model to be deleted.","s":"DeleteModelRequest","u":"/docs/reference/grpc","h":"#deletemodelrequest","p":521},{"i":666,"t":"Reply for ModelRegistrySP.DeleteModel() message DeleteModelReply {}","s":"DeleteModelReply","u":"/docs/reference/grpc","h":"#deletemodelreply","p":521},{"i":668,"t":"Request for ModelRegistrySP.RetrieveModel(). message RetrieveModelsRequest { repeated string model_ids = 1; uint32 models_count = 3; string model_handle = 4;} model_ids: List of the identifiers of the desired models, leave empty to retrieve all models. models_count: (optional) The desired number of models to be retrieved, leave empty (or set to 0) to retrieve all models matching the request. model_handle: (optional) Leave empty for the initial request, use previously provided RetrieveModelsReply.next_model_handle on the next calls to retrieve the next models.","s":"RetrieveModelsRequest","u":"/docs/reference/grpc","h":"#retrievemodelsrequest","p":521},{"i":670,"t":"Reply for ModelRegistrySP.RetrieveModel(). message RetrieveModelsReply { repeated ModelInfo model_infos = 1; string next_model_handle = 2;} model_infos: At most RetrieveModelsRequest.models_count models. next_model_handle: Opaque handle to be used to retrieve the next models matching the request.","s":"RetrieveModelsReply","u":"/docs/reference/grpc","h":"#retrievemodelsreply","p":521},{"i":672,"t":"Part of the request stream for ModelRegistrySP.CreateVersion(). message CreateVersionRequestChunk { message Header { ModelVersionInfo version_info = 1; } message Body { bytes data_chunk = 1; } oneof msg { Header header = 1; Body body = 2; }} The first message in the stream should define header: version_info: Information regarding the model iteration to create, version_number will be ignored. data_hash and data_size should be computed from the total final data and will be used by the server to validate it. The following messages should define body: data_chunk: A chunk of the iteration data, all the chunks in the stream will be concatenated.","s":"CreateVersionRequestChunk","u":"/docs/reference/grpc","h":"#createversionrequestchunk","p":521},{"i":674,"t":"Reply for ModelRegistrySP.CreateVersion(). message CreateVersionReply { ModelVersionInfo version_info = 1;} version_info: The information relative to the created model iteration, in particular the defined version_number.","s":"CreateVersionReply","u":"/docs/reference/grpc","h":"#createversionreply","p":521},{"i":676,"t":"Request for ModelRegistrySP.RetrieveVersionInfos(). message RetrieveVersionInfosRequest { string model_id = 1; repeated int32 version_numbers = 2; uint32 versions_count = 3; string version_handle = 4;} model_id: Identifier of the model we want to retrieve iterations from. version_numbers: List of desired iteration number (or -1 to denote the latest iteration). Leave empty to retrieve all iterations of the given model. versions_count: (optional) The desired number of iterations to be retrieved, leave empty (or set to 0) to retrieve all the iterations matching the request. version_handle: (optional) Leave empty for the initial request, use previously provided RetrieveVersionInfosReply.next_version_handle on the next calls to retrieve the next iterations.","s":"RetrieveVersionInfosRequest","u":"/docs/reference/grpc","h":"#retrieveversioninfosrequest","p":521},{"i":678,"t":"Reply for ModelRegistrySP.RetrieveVersionInfos(). message RetrieveVersionInfosReply { repeated ModelVersionInfo version_infos = 1; string next_version_handle = 2;} version_infos: At most RetrieveVersionInfosRequest.versions_count iterations. next_version_handle: Opaque handle to be used to retrieve the next iterations matching the request.","s":"RetrieveVersionInfosReply","u":"/docs/reference/grpc","h":"#retrieveversioninfosreply","p":521},{"i":680,"t":"Request for ModelRegistrySP.RetrieveVersionData(). message RetrieveVersionDataRequest { string model_id = 1; int32 version_number = 2;} model_id: Identifier of the model we want to retrieve iteration from. version_numbers: Number of the desired iteration.","s":"RetrieveVersionDataRequest","u":"/docs/reference/grpc","h":"#retrieveversiondatarequest","p":521},{"i":682,"t":"Part of the reply stream of ModelRegistrySP.RetrieveVersionData(). message RetrieveVersionDataReplyChunk { bytes data_chunk = 1;} data_chunk: A chunk of the iteration data. All the chunks in the stream need to be concatenated. The completeness and validity of the received data can be checked using the iteration's data_size and data_hash respectively.","s":"RetrieveVersionDataReplyChunk","u":"/docs/reference/grpc","h":"#retrieveversiondatareplychunk","p":521},{"i":684,"t":"Defines a model identifier and associated user data. message ModelInfo { string model_id = 1; map user_data = 2;} model_id: Unique model identifier. user_data: Key/value user data associated with the model.","s":"ModelInfo","u":"/docs/reference/grpc","h":"#modelinfo","p":521},{"i":686,"t":"Defines a model iteration and associated user data. message ModelVersionInfo { string model_id = 1; uint32 version_number = 2; fixed64 creation_timestamp = 3; bool archived = 4; string data_hash = 5; fixed64 data_size = 6; map user_data = 7;} model_id: Unique identifier, within the registry, of this iteration's model. version_number: Unique iteration number, assigned incrementally at creation by the model registry. creation_timestamp: When the model was created as nanosecond Unix epoch time. archived: If true, this iteration is archived and should be stored in a long-term storage. If false, this iteration is not archived and can be evicted after a while. Non-archived iterations should be used to broadcast an update of the model during training. data_hash: SHA 256 hash (encoded in base64 with standard 64 characters with padding) of this iteration's data, can be used to validate the data and for caching purposes. data_size: Size (in bytes) of this iteration's data. user_data: Key/value user data associated with the model, in particular it can be used to provide information required for the deserialization of the data. Version()​ Called to request iteration data. Metadata: None","s":"ModelVersionInfo","u":"/docs/reference/grpc","h":"#modelversioninfo","p":521},{"i":688,"t":"This API is defined in trial_datastore.proto. It is implemented by cogment-trial-datastore.","s":"Trial Datastore API","u":"/docs/reference/grpc","h":"#trial-datastore-api","p":521},{"i":690,"t":"This gRPC API defines a service to manage and access data generated by trials. service TrialDatastoreSP { rpc RetrieveTrials(RetrieveTrialsRequest) returns (RetrieveTrialsReply) {} rpc RetrieveSamples(RetrieveSamplesRequest) returns (stream RetrieveSampleReply) {} rpc AddTrial(AddTrialRequest) returns (AddTrialReply) {} rpc AddSample(stream AddSampleRequest) returns (AddSamplesReply) {} rpc DeleteTrials(DeleteTrialsRequest) returns (DeleteTrialsReply) {} rpc Version(VersionRequest) returns (VersionInfo) {}} RetrieveTrials()​ Retrieve stored trials matching the given request. Metadata: None Request: RetrieveTrialsRequest Reply: RetrieveTrialsRequest RetrieveSamples()​ Retrieve samples from matching trials, trials can be ongoing. Metadata: None Request: RetrieveSamplesRequest Reply: Stream of RetrieveSampleReply AddTrial()​ Add a trial to the activity logger, as soon as a trial is added, samples can be retrieved using RetrieveSamples(). Metadata: None Request: AddTrialRequest Reply: AddTrialReply AddSample()​ Add samples to a trial in the activity logger as a stream, as soon as a sample is added it is pushed to the matching ongoing RetrieveSamples() requests. Metadata: trial-id: UUID of the trial to add to the activity logger. Request: Stream of AddSampleRequest Reply: AddSamplesReply DeleteTrials()​ Delete the trials matching the given request, on failure no trial is deleted. Metadata: None Request: DeleteTrialsRequest Reply: DeleteTrialsReply","s":"Service TrialDatastoreSP","u":"/docs/reference/grpc","h":"#service-trialdatastoresp","p":521},{"i":692,"t":"Defines a information about a stored trial message StoredTrialInfo { string trial_id = 1; TrialState last_state = 2; string user_id = 3; uint32 samples_count = 4; TrialParams params = 5;} trial_id: Unique identifier of the trial. last_state: Last known trial state. user_id: The id of the user that has started the trial. samples_count: The number samples that are stored for this trial. params: Parameters of the trial.","s":"StoredTrialInfo","u":"/docs/reference/grpc","h":"#storedtrialinfo","p":521},{"i":694,"t":"Represents a sample generated by a trial at a given tick. message StoredTrialSample { string user_id = 1; string trial_id = 2; uint64 tick_id = 3; fixed64 timestamp = 4; TrialState state = 5; repeated StoredTrialActorSample actor_samples = 6; repeated bytes payloads = 7;} user_id: The identifier of the user that has started the trial. trial_id: Unique identifier of the trial. tick_id: Tick of this sample. timestamp: Time of the sample. state: Trial state of the sample. actor_samples: Sample data related to each actor. payloads: Serialized payload for the actors observations, actions, rewards and messages during this sample.","s":"StoredTrialSample","u":"/docs/reference/grpc","h":"#storedtrialsample","p":521},{"i":696,"t":"Represents a sample generated by an actor in a trial at a given tick, only makes sense as a part of a StoredTrialSample. Actors are referenced by their index in the trial params TrialParams.actors field. Where it make sense, the actor index can be set to -1 to reference the trial's environment. Payloads (ie observations data, actions data, reward user data and messages payloads) are grouped in the payloads field of StoredTrialSample and referenced by their index in this field. message StoredTrialActorSample { uint32 actor = 1; optional uint32 observation = 2; optional uint32 action = 3; optional float reward = 4; repeated StoredTrialActorSampleReward received_rewards = 6; repeated StoredTrialActorSampleReward sent_rewards = 7; repeated StoredTrialActorSampleMessage received_messages = 8; repeated StoredTrialActorSampleMessage sent_messages = 9;} actor: The index of the actor. observation: Observation received by the actor at the current tick, as an index of the observation payload in the parent StoredTrialSample. action: Action performed by the actor at the current tick, as an index of the action payload in the parent StoredTrialSample reward: Aggregated value of the rewards received by the actor for the current tick. received_rewards: List of the rewards received by the actor for the current tick. sent_rewards: List of the rewards sent by the actor for the current tick. received_messages: List of the messages received by the actor between the current tick and the next. sent_messages: List of the messages sent by the actor between the current tick and the next.","s":"StoredTrialActorSample","u":"/docs/reference/grpc","h":"#storedtrialactorsample","p":521},{"i":698,"t":"Represents a reward sent or received by an actor, only makes sense as a part of a StoredTrialActorSample. message StoredTrialActorSampleReward { int32 sender = 1; int32 receiver = 2; float reward = 4; float confidence = 5; optional uint32 user_data = 6;} sender: Index of the actor, -1 for the environment, ignored for sent rewards. receiver: Index of the actor, -1 for the environment, received for sent rewards. reward: The numerical value of the provided reward. confidence: The weight of this reward in computing the final (aggregated) reward. user_data: User data attached to the reward, as an index of the payload in the parent StoredTrialSample.","s":"StoredTrialActorSampleReward","u":"/docs/reference/grpc","h":"#storedtrialactorsamplereward","p":521},{"i":700,"t":"Represents a message sent or received by an actor, only makes sense as a part of a StoredTrialActorSample. message StoredTrialActorSampleMessage { int32 sender = 1; int32 receiver = 2; uint32 payload = 3;} sender: Index of the actor, -1 for the environment, ignored for sent messages. receiver: Index of the actor, -1 for the environment, received for sent messages. payload: Payload of the message, as an index of the payload in the parent StoredTrialSample.","s":"StoredTrialActorSampleMessage","u":"/docs/reference/grpc","h":"#storedtrialactorsamplemessage","p":521},{"i":702,"t":"Enums representing the fields available in a StoredTrialSample. Used to filter desired fields. enum StoredTrialSampleField { STORED_TRIAL_SAMPLE_FIELD_UNKNOWN = 0; STORED_TRIAL_SAMPLE_FIELD_OBSERVATION = 1; STORED_TRIAL_SAMPLE_FIELD_ACTION = 2; STORED_TRIAL_SAMPLE_FIELD_REWARD = 3; STORED_TRIAL_SAMPLE_FIELD_RECEIVED_REWARDS = 4; STORED_TRIAL_SAMPLE_FIELD_SENT_REWARDS = 5; STORED_TRIAL_SAMPLE_FIELD_RECEIVED_MESSAGES = 6; STORED_TRIAL_SAMPLE_FIELD_SENT_MESSAGES = 7;}","s":"StoredTrialSampleField","u":"/docs/reference/grpc","h":"#storedtrialsamplefield","p":521},{"i":704,"t":"Request for TrialDatastoreSP.RetrieveTrials(). message RetrieveTrialsRequest { repeated string trial_ids = 1; uint32 timeout = 2; uint32 trials_count = 3; string trial_handle = 4;} trial_ids: List of desired trial identifiers, if empty all trials are returned. timeout: (optional - in ms) Wait for trials that might be created within this duration. trials_count: (optional) The desired number of trials to be retrieved, leave empty (or set to 0) for no limit. trial_handle: (optional) Leave empty for the initial request, use previously provided RetrieveTrialsReply.next_trial_handle on the next calls to retrieve the next versions.","s":"RetrieveTrialsRequest","u":"/docs/reference/grpc","h":"#retrievetrialsrequest","p":521},{"i":706,"t":"Reply for TrialDatastoreSP.RetrieveTrials(). message RetrieveTrialsReply { repeated StoredTrialInfo trial_infos = 1; string next_trial_handle = 2;} version_infos: At most RetrieveVersionInfosRequest.versions_count versions. next_version_handle: Opaque handle to be used to retrieve the next versions matching the request.","s":"RetrieveTrialsReply","u":"/docs/reference/grpc","h":"#retrievetrialsreply","p":521},{"i":708,"t":"Request for TrialDatastoreSP.RetrieveSamples(). message RetrieveSamplesRequest { repeated string trial_ids = 1; repeated string actor_names = 2; repeated string actor_classes = 3; repeated string actor_implementations = 4; repeated StoredTrialSampleField selected_sample_fields = 5;} trial_ids: List of desired trial ids, if empty no data will be returned. actor_names: List of desired actor names, if empty all actor samples will be returned. actor_classes: List of desired actor names, if empty all actor samples will be returned. actor_implementations: List of desired actor classes, if empty all actor samples will be returned. selected_sample_fields: (optional) Which fields of StoredTrialSample.ActorSample should be returned, if empty all fields are returned.","s":"RetrieveSamplesRequest","u":"/docs/reference/grpc","h":"#retrievesamplesrequest","p":521},{"i":710,"t":"Part of the reply stream of TrialDatastoreSP.RetrieveSamples(). message RetrieveSampleReply { StoredTrialSample trial_sample = 1;} trial_sample: One trial sample matching the requested trial_ids and filtered according to the desired actors and fields.","s":"RetrieveSampleReply","u":"/docs/reference/grpc","h":"#retrievesamplereply","p":521},{"i":712,"t":"Request for TrialDatastoreSP.AddTrial(). message AddTrialRequest { string user_id = 1; TrialParams trial_params = 2;} user_id: The ID of the user that is adding the trial. trial_params: Parameters of the trial.","s":"AddTrialRequest","u":"/docs/reference/grpc","h":"#addtrialrequest","p":521},{"i":714,"t":"Reply for TrialDatastoreSP.AddTrial(). message AddTrialReply {}","s":"AddTrialReply","u":"/docs/reference/grpc","h":"#addtrialreply","p":521},{"i":716,"t":"Part of the request stream of TrialDatastoreSP.AddSample(). message AddSampleRequest { StoredTrialSample trial_sample = 1;} trial_sample: One trial sample that should match the parameters of the target trial.","s":"AddSampleRequest","u":"/docs/reference/grpc","h":"#addsamplerequest","p":521},{"i":718,"t":"Reply for TrialDatastoreSP.AddSample(). message AddSamplesReply {}","s":"AddSamplesReply","u":"/docs/reference/grpc","h":"#addsamplesreply","p":521},{"i":720,"t":"Request for TrialDatastoreSP.DeleteTrials(). message DeleteTrialsRequest { repeated string trial_ids = 1;} trial_ids: List of the trial ids to delete, if empty no trial is deleted.","s":"DeleteTrialsRequest","u":"/docs/reference/grpc","h":"#deletetrialsrequest","p":521},{"i":722,"t":"Reply for TrialDatastoreSP.DeleteTrials(). message DeleteTrialsReply {}","s":"DeleteTrialsReply","u":"/docs/reference/grpc","h":"#deletetrialsreply","p":521},{"i":724,"t":"Header for the trial samples file that can be exported using cogment client export. message TrialSamplesFileHeader { VersionInfo version_info = 1; fixed64 export_timestamp = 2; map trial_params = 3;} version_info: (cogmentAPI.VersionInfo) Version information for the used Cogment CLI. export_timestamp: (fixed64) The wall-clock time in nanoseconds since 00:00:00UTC January 1, 1970 (Unix Epoch time) at export. trial_params: (map) Parameters of the trials exported in the file referenced by their ID. Version()​ Called to request version data. Metadata: None","s":"TrialSamplesFileHeader","u":"/docs/reference/grpc","h":"#trialsamplesfileheader","p":521},{"i":727,"t":"The simplest way to install the Javascript SDK is to just install it using npm: npm install @cogment/cogment-js-sdk","s":"Installation","u":"/docs/reference/javascript","h":"#installation","p":725},{"i":730,"t":"The specifications of a trial type are contained in a spec file and the imported files defined in the spec. This file is typically named cogment.yaml. For example, an actor class is defined by its required observation space and action space. These \"spaces\" are defined by using protobuf message types (from the imported files). Observations and actions will simply be instances of the appropriate type. Messages and feedback user data don't have a set type, they can be any type as long as the receiver can manage that type. The type is determined by the provided message from the originator. They will mostly arrive as an instance of cogment.MessageBase and have fields according to their definition in your proto files.","s":"The spec file","u":"/docs/reference/javascript","h":"#the-spec-file","p":725},{"i":732,"t":"The trial parameters can come from the default parameters provided to the Orchestrator on startup, or from the pre-trial hooks (themselves provided to the Orchestrator on startup). The parameters are mostly indepedent of the spec file (cogment.yaml), except that the active actors listed in the parameters must have their actor class match an actor class defined in the spec file. Below, when we refer to the trial parameters, we mean the final parameters after any pre-trial hooks. Compiling the spec file​ In order to use the specification found in the spec file within Javascript scripts, it needs to be compiled into Javascript modules. This is done by a tool called \"cogment-js-sdk-generate\".","s":"Trial Parameters","u":"/docs/reference/javascript","h":"#trial-parameters","p":725},{"i":734,"t":"All API entry points require a cogment specification object. This specification object can be determined from the content of a project's spec file. As such, it should be generated using the cogment-js-sdk-generate tool npx cogment-js-sdk-generate config.yaml This will generate both a CogSettings.js file, as well as any required compiled protocol buffer files.","s":"CogSettings.js","u":"/docs/reference/javascript","h":"#cogsettingsjs","p":725},{"i":736,"t":"Whether a script implements an actor or environment, it should import both the cogment module (generic Javascript SDK for Cogment) and the cogSettings module (project specific definitions created from the spec file). import { cogSettings } from './CogSettings';import * as cogment from '@cogment/cogment-js-sdk'","s":"Imports","u":"/docs/reference/javascript","h":"#imports","p":725},{"i":738,"t":"Class to setup and run all the different aspects of trials.","s":"class cogment.Context","u":"/docs/reference/javascript","h":"#class-cogmentcontext","p":725},{"i":740,"t":"Parameters: userId: string - Identifier for the user of this context. cogSettings: cogment.CogSettings - Settings module associated with trials that will be run (cogSettings namespace).","s":"constructor(userId, cogSettings)","u":"/docs/reference/javascript","h":"#constructoruserid-cogsettings","p":725},{"i":742,"t":"Method to get a controller instance to manage trials (start, stop, inquire, etc). Parameters: endpoint: string - URL of the connection to the Orchestrator. Return: Controller - An instance of the Controller class used to manage trials.","s":"getController(endpoint)","u":"/docs/reference/javascript","h":"#getcontrollerendpoint","p":725},{"i":744,"t":"Method for an actor to asynchronously join an existing trial. This task will normally end after the user implementation has exited. Parameters: trialId: string - The UUID of the trial to join. endpoint: string - URL of the connection to the Orchestrator. actorName: string - Name of the actor joining the trial. Return: void","s":"async joinTrial(trialId, endpoint, actorName)","u":"/docs/reference/javascript","h":"#async-jointrialtrialid-endpoint-actorname","p":725},{"i":746,"t":"Method to register the asynchronous callback function that will run an actor for a trial. Parameters: impl: async function(ActorSession instance) - Callback function to be registered. actorName: string - Name for the actor implementation being run by the given callback function. actorClass: string - The actor class name that can be run by the given callback function. The possible names are specified in spec file under section actorClasses:name. If the list is empty, this implementation can run any actor class. Return: void","s":"registerActor(impl, actorName, actorClass)","u":"/docs/reference/javascript","h":"#registeractorimpl-actorname-actorclass","p":725},{"i":748,"t":"Class containing data and methods to control and manage trials.","s":"class Controller","u":"/docs/reference/javascript","h":"#class-controller","p":725},{"i":750,"t":"Method to start a new trial. The parameters of the trial will be set by the pre-trial hooks (registered in cogment.Context), and the hooks will receive the provided trial config. Parameters: trialConfig: cogment.MessageBase - Configuration for the trial. The type is specified in the spec file under the section trial:config_type. Can be undefined if no configuration is provided. This is provided to the first pre-trial hook. trialIdRequested: string - The trial identifier requested for the new trial. It must be unique among all active trials and a limited set of the latest ended trials (this list of trials can be retrieved with getTrialInfo or watchTrial). If provided, the Orchestrator will try to use this trialId, otherwise, a UUID will be created. Return: string - The newly started trial ID.","s":"async startTrial(trialConfig = undefined, trialIdRequested = undefined)","u":"/docs/reference/javascript","h":"#async-starttrialtrialconfig--undefined-trialidrequested--undefined","p":725},{"i":752,"t":"Method to request the end of a trial. Parameters: trialIds: string[] - The trial ID(s) to request to terminate. There must be at least one ID. hard: boolean - If true, the termination will be forced and not wait for any action or observation. If false, the trial will wait for the next tick, to end gracefully (i.e. wait for the next full set of actions and response observations). Return: void","s":"terminateTrial(trialIds, hard = false)","u":"/docs/reference/javascript","h":"#terminatetrialtrialids-hard--false","p":725},{"i":754,"t":"Method to get information about a trial. Parameters: trialIds: string[] - The trial ID(s) from which to request information. If no ID is provided, returns information about all trials. Note that ended trials may only appear for a short time in this list after they have ended. Return: TrialInfo[] - List of trial information, one per trial. Can be empty if no trial matches.","s":"async getTrialInfo(trialIds)","u":"/docs/reference/javascript","h":"#async-gettrialinfotrialids","p":725},{"i":756,"t":"Generator method to iterate, in real-time, through all trial states matching the filters. When called, it will first iterate over the current states matching the filters, for all trials. Afterwards, it will iterate in real-time over the matching states as they change. Parameters: trialStateFilters: cogment.TrialState[] - List of enum values from cogment.TrialState for which we are interested in receiving state changes. Return: generator(TrialInfo instance) - A generator for the state changes that arrive. The TrialInfo received here only contains the trial ID and the state.","s":"async watchTrials(trialStateFilters=[])","u":"/docs/reference/javascript","h":"#async-watchtrialstrialstatefilters","p":725},{"i":758,"t":"Method to get the list of configured actors in a trial. Parameters: trialId: string - The trial ID from which to request the list of actors. Return: ActorInfo[] - List of actors configured in this trial.","s":"async getActors(trialId)","u":"/docs/reference/javascript","h":"#async-getactorstrialid","p":725},{"i":760,"t":"Method to get the versions from the remote Orchestrator. Parameters: None Return: {[key: string]: string} - The key of the object is the name of the component (string), and the value is the version (string).","s":"async getRemoteVersions()","u":"/docs/reference/javascript","h":"#async-getremoteversions","p":725},{"i":762,"t":"Abstract class that manages aspects of a trial. Contains data and methods common to all sessions .","s":"class Session","u":"/docs/reference/javascript","h":"#class-session","p":725},{"i":764,"t":"Method to get the UUID of the trial managed by this session. Parameters: None Return: string - UUID of the trial.","s":"getTrialId()","u":"/docs/reference/javascript","h":"#gettrialid","p":725},{"i":766,"t":"Method to get the current tick id of the trial (i.e. time step). Parameters: None Return: number - The current tick id.","s":"getTickId()","u":"/docs/reference/javascript","h":"#gettickid","p":725},{"i":768,"t":"Method to inquire if the current trial has ended. Parameters: None Return: boolean - True if the trial has ended, false otherwise.","s":"isTrialOver()","u":"/docs/reference/javascript","h":"#istrialover","p":725},{"i":770,"t":"Method to notify the Orchestrator that all data for the trial, from this session, has been sent. This can be called only when the session is ending. When starting the session (see ActorSession), if the autoDoneSending parameter is True, this method should not be called, and if the parameter is False, it MUST be called to end the trial properly. Parameters: None Return: void","s":"sendingDone()","u":"/docs/reference/javascript","h":"#sendingdone","p":725},{"i":773,"t":"Method to start the actor. This method should be called before any other method in the session. Parameters: autoDoneSending: boolean - Controls when to notify the Orchestrator that all data has been sent. If True, the session will automatically send the notification after receiving the last observation. If False, the user MUST call sendingDone to end the trial properly. Return: void","s":"start(autoDoneSending=True)","u":"/docs/reference/javascript","h":"#startautodonesendingtrue","p":725},{"i":775,"t":"Generator method to iterate over all events (observations, rewards, messages) as they are received. This will block and wait for an event. When this generator exits, the callback function (registered with registerActor) should return to end the trial cleanly. The generator will exit for various reasons indicating the end of the trial, a loss of communication with the orchestrator, or if the generator is sent \"False\". Parameters: None Return: AsyncGenerator - A generator for the events that arrive. The RecvEvent instances received from this generator will not contain actions. When receiving an observation in the event, the this.doAction method is normally used to \"reply\" (if the event type is EventType.ACTIVE).","s":"async *eventLoop()","u":"/docs/reference/javascript","h":"#async-eventloop","p":725},{"i":777,"t":"Method to send actions to the environment. Parameters: action: ActionT - An instance of the action space class specified in the corresponding section actorClasses:action:space of the spec file. If undefined, then no action space is sent (empty content) and the environment will receive a default initialized action space of the appropriate type. Return: void","s":"doAction(action)","u":"/docs/reference/javascript","h":"#doactionaction","p":725},{"i":779,"t":"Method to send a message related to the current time step (tick id). Parameters: payload: cogment.MessageBase - The message data to be sent. The class can be any protobuf class. It is the responsibility of the receiving actor to manage the class received. to: string[] - Targets of feedback. Each value could be the name of an actor in the trial, or the name of the environment (from this.envName). Or it could represent a set of actors (with wildcards); A set of actors can be represented with the wildcard character \"*\" for all actors (of all classes), or \"actorClass.*\" for all actors of a specific class (the actorClass must match one of the classes listed in the trial parameters). Note that the wildcard does not include the environment. Return: void","s":"sendMessage(payload, to)","u":"/docs/reference/javascript","h":"#sendmessagepayload-to","p":725},{"i":781,"t":"Enum representing the various states of trials. UNKNOWN: Should not be used. INITIALIZING: The trial is in the process of starting. PENDING: The trial is waiting for its final parameters, before running. RUNNING: The trial is running. TERMINATING: The trial is in the process of terminating (either a request to terminate has been received or the last observation has been received). ENDED: The trial has ended. Only a set number of ended trials will be kept (configured in the Orchestrator). For further information on trial lifetime, check the dedicated section.","s":"enum cogment.TrialState","u":"/docs/reference/javascript","h":"#enum-cogmenttrialstate","p":725},{"i":783,"t":"Class enclosing the details of a trial. trialId: string - The trial ID to which the details pertain. state: cogment.TrialState - The current state of the trial. envName: string - The name of the environment running the trial. tickId: number - The time step that the information relates to. Only provided from a call to getTrialInfo. duration: number - The time (in nanoseconds) that the trial has run. Only provided from a call to getTrialInfo.","s":"class TrialInfo","u":"/docs/reference/javascript","h":"#class-trialinfo","p":725},{"i":785,"t":"Class representing a received event (for environments and actors). It can contain any combination of data according to the receiver needs, or even be empty, but it will always have a type. type: EventType - Type of event the enclosed data represents. observation: ObservationT - Observation data. This can only be received by actors. undefined if not present. actions: ActionT - Action data from actors. This can only be received by the environment. The list is empty if not present. rewards: Reward[] - Reward values and data. This can only be received by actors. The list is empty if not present. messages: MessageBase[] - Message data. The list is empty if not present.","s":"class RecvEvent","u":"/docs/reference/javascript","h":"#class-recvevent","p":725},{"i":787,"t":"Enum representing the type of an event. EventType.NONE: Empty event. This kind of event should never be received. EventType.ACTIVE: Normal event from an active trial. Most events will be of this type. EventType.ENDING: Events from a trial in the process of ending. For the environment, this means that these events contain the last actions from the actors, and the trial is awaiting a final observation. For the actors, this means that the trial is ending and no action can/need to be sent in response. Note that because of network timing, there may be ACTIVE events (e.g. rewards or messages) arriving after some ENDING events, but the trial is ending regardless. EventType.FINAL: Final event for the trial. This does not contain data. The event loop will exit after this event is delivered. This event can be ignored if nothing needs to be done before exiting the loop. For further information on trial lifetime, check the dedicated section.","s":"enum cogment.EventType","u":"/docs/reference/javascript","h":"#enum-cogmenteventtype","p":725},{"i":789,"t":"Type containing the details of an actor's observation. This will be different depending on what the ActionSpace defined in your spec file contains","s":"type ObservationT","u":"/docs/reference/javascript","h":"#type-observationt","p":725},{"i":791,"t":"Type containing the details of an action from an actor. This will be different depending on what the ActionSpace defined in your spec file contains","s":"type ActionT","u":"/docs/reference/javascript","h":"#type-actiont","p":725},{"i":793,"t":"Base Class of all messages, this will contain different fields depending on what fields are in the specific message you are receiving (defined in proto files)","s":"class MessageBase","u":"/docs/reference/javascript","h":"#class-messagebase","p":725},{"i":795,"t":"type containing the details of a received reward. tickId: number - The tick id (time step) for which the reward should be applied. receiverName: string - Name of the receiver for the reward (the name of an actor, or wildcard string). value: float - Value of the reward (aggregated from the sources) sources: IRewardSource[] - List of sources that gave this reward","s":"type Reward","u":"/docs/reference/javascript","h":"#type-reward","p":725},{"i":797,"t":"senderName: string - Name of the reward sender; value: number - Value of the reward; confidence: number - Confidence of this reward; userData: google.protobuf.IAny - Extra data;","s":"interface IRewardSource","u":"/docs/reference/javascript","h":"#interface-irewardsource","p":725},{"i":799,"t":"The trial parameters are a set of parameters that define the details of a trial. They may be generated from the default parameters provided to the Orchestrator (see Parameter File), and updated by the pre-trial hooks (see TrialParameters and register_pre_trial_hook). Or they can be provided whole to the trial start call (see start_trial). In the parameters, are optional config messages for the trial, environment and actors. The trial config is only used by the pre-trial hooks, whereas the other configs are sent to their respective destination at the start of the trial. The config protobuf messages are defined in the spec file. The pre-trial hooks exist to allow dynamic parameter setting at the start of a trial, with the use of the trial config. Another way to set the parameters dynamically is by providing them to the start trial call. The parameters of the trial start call take priority over all others, and thus when provided, the default parameters will be ignored and the pre-trial hooks will not be called.","s":"Trial Parameters","u":"/docs/reference/parameters","h":"","p":798},{"i":801,"t":"config: User defined configuration sent to the first trial pre-hook before the start of the trial. The type is defined in the spec file under section trial:config_type. DEFAULT: not set. properties: User defined key/value properties (in a map/dictionary style) that are associated with the trial. Key names starting with a double underscore (__) are reserved for Cogment internal use. DEFAULT: empty. max_steps: The maximum number of time steps (ticks) that the trial will run before requesting a soft termination at the next step. DEFAULT: 0 (infinite nb steps). max_inactivity: The number of seconds of inactivity after which a trial will be hard terminated. \"Activity\" is defined as a message received by the Orchestrator from a user component. If 0, the trial will not be terminated because of inactivity. DEFAULT: 30 seconds. nb_buffered_ticks: The number of ticks (steps) to buffer in the Orchestrator before sending the data to the datalog. This is in effect the delay between the currently running trial and the datalog data. It is also the time window for past data (e.g. rewards) to still make it in the correct normal sample of the datalog. If data is too far in the past (the tick ID is more in the past than nb_buffered_ticks) then a special out-of-sync sample will be sent to the datalog. This value must be larger than 1. DEFAULT: 2. datalog_endpoint: Endpoint of the datalog service. DEFAULT: not set (data logging is disabled). datalog_exclude_fields: List of fields to exclude from the data samples sent to the datalog service. environment_config: User defined configuration sent to the environment at the start of the trial. The type is defined in spec file under section environment:config_type. DEFAULT: not set. environment_name: The name of the environment. DEFAULT: \"env\". environment_endpoint: Endpoint of the environment service. DEFAULT: context discovery endpoint (the Directory will be inquired). environment_implementation: The name of the implementation to run the environment. This must match an implementation that is defined at the endpoint. DEFAULT: not set (an arbitrary implementation will be chosen at runtime). actors: List of actor parameter sets. config: User defined configuration sent to the actor at the start of the trial. The type is defined in the spec file under section actor_classes:config_type for the appropriate actor class. DEFAULT: not set. name: The name of the actor (must be unique in the trial). DEFAULT: none (required parameter). actor_class: The name of the actor class. This must match a value in the spec file under section actor_classes:name. DEFAULT: none (required parameter). endpoint: Endpoint of the actor. This can be \"cogment://client\", which indicates a client actor. DEFAULT: context discovery endpoint (the Directory will be inquired). implementation: The name of the implementation to run this actor. This must match an implementation that is defined at the endpoint. DEFAULT: not set (an arbitrary implementation will be chosen at runtime). initial_connection_timeout: Maximum amount of time (in seconds) to wait for an actor to connect to a new trial, after which it is considered unavailable for the trial duration. If the wait is too long (see max_inactivity), the trial may be terminated. The trial may wait longer than the requested timeout. DEFAULT: 0.0 (no timeout; indefinite wait). response_timeout: Maximum amount of time (in seconds) to wait for an actor to respond with an action after an observation is sent, after which it is considered unavailable. If the wait is too long, the trial may be terminated (see max_inactivity). The trial may wait longer than the requested timeout. DEFAULT: 0.0 (no timeout; indefinite wait). optional: If set (true), the actor is optional. An optional actor is not necessary for a trial to continue. If an actor is required (i.e not optional), the trial will be terminated if the actor is not available. DEFAULT: false. default_action: This is only relevant for optional actors (see optional). If set, and the actor is not available, the environment will receive this action (the environment will not be informed that the actor is unavailable). If not set, the environment will be informed that the actor is unavailable (the environment will not receive an action). The type is defined in the spec file under section actor_classes:action:space for the appropriate actor class. DEFAULT: not set.","s":"Parameters reference","u":"/docs/reference/parameters","h":"#parameters-reference","p":798},{"i":803,"t":"The parameter file serves to initialize the Orchestrator default parameters. It is able to set all parameters except for the configs and actor default actions. The file uses the YAML configuration language. It consists of one top level YAML section called trial_params. Any other top level section will be ignored. The layout is hierarchical, so the name of the parameters may be different than the parameter description above: properties: Dictionary of user defined key/value pairs. max_steps max_inactivity nb_buffered_ticks datalog: List of parameters related to the data logger. If this section is not present, data logging is disabled. endpoint exclude_fields environment: List of parameters for the environment name endpoint implementation actors: List of actor parameter sets. Note that as defaults, the number of actors may not be suited for all trials. name actor_class endpoint implementation initial_connection_timeout response_timeout optional E.g.: trial_params: properties: days_to_retain: 10 training: no with_humans: yes params_source: default processor: \"Alpha-67+\" max_steps: 1000 max_inactivity: 30 nb_buffered_ticks: 5 datalog: endpoint: grpc://logserver:9000 exclude_fields: [messages, actions] environment: name: Arena endpoint: grpc://env:9000 implementation: simple actors: - name: Alice actor_class: BigPlayer endpoint: cogment://discover implementation: - name: Bob actor_class: BigPlayer endpoint: grpc://bp2:9000 implementation: Test initial_connection_timeout: 10.0 - name: Carol actor_class: SmallPlayer endpoint: grpc://sp:9000 implementation: DQN_Hotel3 initial_connection_timeout: 5.0 optional: True - name: Dave actor_class: SmallPlayer endpoint: cogment://discover/service?id=8390256 implementation: DNN_Karma3.1.17 initial_connection_timeout: 3.0 optional: True - name: Olivia actor_class: Referee endpoint: cogment://client implementation: Standard response_timeout: 20.0","s":"Parameter file","u":"/docs/reference/parameters","h":"#parameter-file","p":798},{"i":805,"t":"If no parameters were given to the trial start call, the default parameters and pre-trial hooks are used. And if no pre-trial hooks are defined, the default parameters will be used directly to start the trial. Pre-trial hooks are gRPC services that may be called to set up the parameters for a new trial. Multiple hooks can be defined and they will all be called in order, in a pipeline fashion (i.e. the output of one becomes the input of the next). The first hook service to be called will receive the default parameters (augmented by the trial config that may be given to the trial start call). The output of the last hook is used as final parameters to start the new trial. The response of the last hook will be waited on before the trial starts. The hooks will be called to update or generate all the parameter data (presented here) in addition to the configurations for the environment and the actors (if needed). Pre-trial hooks are defined on the command line (or an environment variable) when starting the Orchestrator.","s":"Parameters and pre-trial hooks","u":"/docs/reference/parameters","h":"#parameters-and-pre-trial-hooks","p":798},{"i":807,"t":"Cogment endpoints are basic URLs (scheme://host/path?query) that can have one of two schemes: grpc or cogment. The path and query are optional, but a valid endpoint must have a scheme and a host. The context is used to determine what API service will be used to connect to the endpoint; e.g. if this is the endpoint for an environment, then the EnvironmentSP gRPC API will be used.","s":"Cogment endpoints","u":"/docs/reference/parameters","h":"#cogment-endpoints","p":798},{"i":809,"t":"The grpc scheme is used to access a network resource using one of the Cogment gRPC API directly, without the need of a Directory. An endpoint with this scheme is also called a grpc endpoint. The rest of the URL is a standard HTTP address (with port) and points to the gRPC server waiting for connection. E.g.: grpc://10.0.123.5:9000grpc://SomeServer:9011grpc://second.actors.base.com:9050","s":"grpc scheme","u":"/docs/reference/parameters","h":"#grpc-scheme","p":798},{"i":811,"t":"The cogment scheme is specific to Cogment and has two possible hosts: client or discover. client host​ The client host is used in the very specific case of an actor being a \"client actor\". This endpoint (i.e. exactly \"cogment://client\") is a special endpoint. Only actors can use this endpoint. In this case, the actor with such an endpoint will connect as a client, the Orchestrator being the server. The client will connect to the actor port of the [Orchestrator][../reference/cli/orchestrator.md]. discover host​ The discover host is to indicate that a Directory needs to be inquired. An endpoint with this host (i.e. starting with \"cogment://discover\") is also called a discovery endpoint. The directory returns an actual endpoint where to reach the service; either a grpc endpoint (e.g. grpc://10.5.134.2:9000), or for an actor, it can also be a special endpoint (e.g. cogment://client). The result should not be another discovery endpoint. The endpoint for the directory must be a grpc endpoint and is provided beforehand (e.g. for the Orchestrator, it is an option on start). With a context discovery endpoint there is no path in the URL, and some of the details of the service will be obtained from the context of the endpoint (i.e. where the endpoint was provided and for what). This type of endpoint is the simple form of discovery endpoints. When there is no query, it is in its simplest form and referred as a pure context discovery endpoint: \"cogment://discover\". It is the default in Cogment when no endpoint is provided by the user (where discovery endpoints are valid). Example of context discovery endpoints: cogment://discovercogment://discover?tag=bluecogment://discover?tag=red&zone=1 If these endpoints were provided for actors, they would be equivalent to these explicit discovery endpoints: cogment://discover/actor?__actor_class=xxx&__implementation=yyycogment://discover/actor?__actor_class=xxx&__implementation=yyy&tag=bluecogment://discover/actor?__actor_class=xxx&__implementation=yyy&tag=red&zone=1 Where \"xxx\" and \"yyy\" are values taken from the context (typically the trial start parameters). For each type of endpoint, the context provides the path as described below, and these properties (if available): For actor contexts: properties are __actor_class and __implementation For environment contexts: property is __implementation For all other contexts, no properties are provided by the context These properties are implicitly registered in the directory when starting an actor or environment service from a SDK. But if explicitly registering the services to the directory, these properties must be provided if a context discovery endpoint is used (otherwise the service will not be found). An explicit discovery endpoint, as opposed to a context discovery endpoint, is a URL with a path, and needs to explicitly provide all the necessary information in the URL (the context of the endpoint will be ignored). In other words, no context property will be implicitly added to the URL query sent to the directory, the user is fully responsible to match the URL to the need (and match the properties). Discovery path​ There are two categories of path for discovery endpoints, one for generic service types and the other for specific service types. The generic path service is used to find services of any type. In this case, the query must be __id=XXX where XXX is a 64 bit unsigned integer representing the ID of a service registered in the directory, e.g.: cogment://discover/service?__id=67834892cogment://discover/service?__id=42 The specific paths are used to find a specific type of service: actor: To find an actor service environment: To find an environment service datalog: To find a data logger service prehook: To find a pre-trial hook service lifecycle: To find a service offering trial life cycle management actservice: To find a service offering client actor connection datastore: To find a data store service modelregistry: To find a model registry service directory: To find a directory service The actor, environment and datalog paths will normally be used in the trial parameters to start a new trial. They will be interpreted and managed by the Orchestrator, which will inquire the Directory. The prehook path is for use on the command line of the Orchestrator. The others are for use by services themselves, e.g. to find an Orchestrator to connect to. Discovery query​ Following the path in the discovery endpoint, is the optional query; properties to find a suitable service. All the properties provided in the query must match properties registered in the directory (with some exceptions, see below). Which properties are acceptable depends on the directory (and how the services are registered in the directory). The query in the discovery endpoint must follow these guidelines: Entries are separated by the ampersand (&) Property name and associated value are separated by an equal sign (=) Property names and values must be composed of only these characters: A-Z, a-z, 0-9, underscore (_), dash (-), dot (.) Property values are optional Property names starting with a double underscore (__) are reserved. E.g __authentication-token E.g.: cogment://discover/actor?__implementation=d3qncogment://discover/environment?__implementation=fqdn3&type=fast-2x&ping=lowcogment://discover/datalog?name=high&open&color=green_blue Reserved query properties​ Some endpoint query properties are reserved for Cogment use. They may be interpreted by other services than the directory, and thus may not correspond to directory properties that participate in service discovery. Some of these names may not be used as properties to inquire from (or register in) the directory. They may be used for special purposes that differ for each name. __actor_class: This is a property name implicitly used by Cogment. It is registered in the Directory for services that were implicitly registered by Cogment or a Cogment SDK. It is also used by Cogment to inquire for context discovery endpoints. __authentication-token: This query property is not a directory property. It is used to provide authentication to the directory. The value (and need) depends on the directory implementation and/or how the registration of the service is made in the directory. This is not registered as a property in the Directory. __id: This query property is not a directory property. It is used to provide a service ID for inquiry to the directory for a specific service. This is not registered as a property in the Directory. __implementation: This is a property name implicitly used by Cogment. It is registered in the Directory for services that were implicitly registered by Cogment or a Cogment SDK. It is also used by Cogment to inquire for context discovery endpoints.","s":"cogment scheme","u":"/docs/reference/parameters","h":"#cogment-scheme","p":798},{"i":814,"t":"The simplest way to install the python SDK is to just install it using pip: pip install cogment. To install the generator (for cog_settings.py) it is done similarly with pip: pip install cogment[generate]. If both are needed, installing the generator will install the Python SDK. The basic requirement is Python 3.7.","s":"Installation","u":"/docs/reference/python","h":"#installation","p":812},{"i":817,"t":"The Python SDK is designed to run concurrently and asynchronously using the Python asyncio library. As such, it should be run in an asyncio.Task. E.g. asyncio.run(MyMainFunction())","s":"asyncio","u":"/docs/reference/python","h":"#asyncio","p":812},{"i":819,"t":"The Python SDK uses the cogment.sdk logger, and the default log level is INFO. E.g. to change the log level to WARNING: import cogmentimport logginglogging.getLogger(\"cogment.sdk\").setLevel(logging.WARNING) Or set the environment variable COGMENT_LOG_LEVEL to one of the values: off, error, warning, info, debug, trace (which match the respective Python levels logging.CRITICAL, logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG). Since the Cogment Python SDK does not output any critical logs, the logging.CRITICAL level effectively turns logging off. The trace level does not match a standard Python logging level and is mostly for internal use with a level lower than logging.DEBUG. The Cogment logger does not define a handler, and the handler management is left to the application (as is standard for a library in Python). Thus the Python logging.lastResort handler will be used if no explicit handler is defined by the application (i.e. only warnings and errors will be output to stderr, with no formatting). The application should enable a handler as required. E.g. for a default logging setup (including a stream handler): import cogmentimport logginglogging.basicConfig() note Calling any of the module level functions logging.log, logging.debug, logging.info, logging.warning, logging.error, logging.critical or logging.exception, will implicitly call logging.basicConfig. And calling logging.basicConfig does nothing if there is a root handler already defined. See Python documentation for logging.basicConfig","s":"Logging","u":"/docs/reference/python","h":"#logging","p":812},{"i":821,"t":"The specifications (specs) of a trial type are contained in a spec file and the imported files defined in the spec file. This file is typically named cogment.yaml. For example, an actor class is defined by its required observation space and action space. These \"spaces\" are defined by using protobuf message types (from the imported files). Observations and actions will simply be instances of the appropriate type. Messages and feedback user data don't have a set type, they can be any type of protobuf message as long as the receiver can manage that type (i.e. the object received is an instance of google.protobuf.Any and the contained type should be checked against known types before handling). The type is determined by the provided message from the originator.","s":"Trial Specifications","u":"/docs/reference/python","h":"#trial-specifications","p":812},{"i":823,"t":"The trial parameters can come from the Controller start_trial command, from the default parameters provided to the Orchestrator on startup, or from the pre-trial hooks (themselves provided to the Orchestrator on startup). The parameters are mostly independent of the spec file (cogment.yaml), except that the active actors listed in the parameters must have their actor class match an actor class defined in the spec file. Below, when we refer to the trial parameters, we mean the final parameters after any pre-trial hooks.","s":"Trial Parameters","u":"/docs/reference/python","h":"#trial-parameters","p":812},{"i":825,"t":"In order to use the specifications within python scripts, the spec file needs to be compiled into python modules. This is done by the Python SDK generator (see [#installation]). The generator is used this way: $ python3 -m cogment.generate --spec cogment.yaml --output ./cog_settings.py This will create a cog_settings.py specs module in the current directory (--output ./). The generator will also compile the imported *.proto files into python modules that will be saved in the same location as the specified output file (cog_settings.py) and they will be named according to their proto names: .proto is compiled to _pb2.py. The cog_settings.py Python module is required by all API entry points.","s":"Compiling the spec file into cog_settings.py","u":"/docs/reference/python","h":"#compiling-the-spec-file-into-cog_settingspy","p":812},{"i":827,"t":"The main module of the Cogment SDK is cogment. But all cogment scripts need to start with a cogment.Context, which also requires the generated module cog_settings (project specific definitions created from the spec file). If one needs to create a cogment.TrialParameters or cogment.ActorParameters from scratch, the cog_settings module is also required. import cog_settingsimport cogment","s":"Top-level import","u":"/docs/reference/python","h":"#top-level-import","p":812},{"i":829,"t":"Class to setup and run all the different aspects of Cogment trials. served_port: int - The port on which serve_all_registered is offering the various registered services. The port is 0 if no services are offered (e.g. serve_all_registered was not called yet). asyncio_loop: asyncio.EventLoop instance - The Python asyncio loop used by the context (note that the actual type is specific to the platform).","s":"class cogment.Context","u":"/docs/reference/python","h":"#class-cogmentcontext","p":812},{"i":831,"t":"Parameters: user_id: str - Identifier for the user of this context. cog_settings: module - Specs module associated with trials that will be run, observed or inquired (see cog_settings generation). This can be None in some circumstances. asyncio_loop: asyncio.EventLoop instance - The Python asyncio loop into which the Context should operate. If None, the current loop will be used. prometheus_registry: prometheus_client.core.CollectorRegistry instance - Prometheus registry that'll be used by the Cogment metrics in this context. Can be set to None to completely deactivate them. The default value is Prometheus' default global registry. directory_endpoint: Endpoint instance - Grpc endpoint (i.e. starting with \"grpc://\") to access the directory. The directory will be used to inquire discovery endpoints, and to register the services for discovery. If no endpoint is provided, a check for the environment variable COGMENT_DIRECTORY_ENDPOINT will be made and if it exists, it will be used as the URL of a basic endpoint. directory_auth_token: str - Authentication token for access to the directory. This token will be registered with the services, and must match registered tokens when inquiring the directory. If no token is provided, a check for the environment variable COGMENT_DIRECTORY_AUTHENTICATION_TOKEN will be made and if it exists, it will be used as the token.","s":"__init__(self, user_id, cog_settings, asyncio_loop=None, prometheus_registry=prometheus_client.core.REGISTRY, directory_endpoint=None, directory_auth_token=None)","u":"/docs/reference/python","h":"#__init__self-user_id-cog_settings-asyncio_loopnone-prometheus_registryprometheus_clientcoreregistry-directory_endpointnone-directory_auth_tokennone","p":812},{"i":833,"t":"Parameters: None Return: bool - True if the specs are known. False otherwise. The specs are known if the cog_settings argument was provided and not None. A context instantiated without specs has limited functionality and will produce objects without specs (thus also having limited functionality).","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself","p":812},{"i":835,"t":"Method to start and run the communication server for the registered components (environment, actor, prehook, datalog). This coroutine will end when all activity has stopped. If a directory is defined in the Context, then this method will also register the services in the defined directory. Parameters: served_endpoint: ServedEndpoint instance - Details of the connection for the served components. If served_endpoint.port is zero (0), then the system will choose a free port; in which case the port chosen is found in the served_port attribute of the Context. prometheus_port: int - TCP/IP port number for Prometheus. Set to None to disable the Prometheus metrics server. directory_registration_host: str - Hostname (or IP address) of the host to register to the directory (the port is taken from the served_endpoint) for the services registered. If None, the SDK will determine the current host IP address automatically. In some circumstances, the IP address determined by the SDK may be wrong (e.g. multiple interfaces, load balancing, firewall), thus a host must be explicitly provided. Return: None","s":"async serve_all_registered(self, served_endpoint=ServedEndpoint(), prometheus_port=None, directory_registration_host=None)","u":"/docs/reference/python","h":"#async-serve_all_registeredself-served_endpointservedendpoint-prometheus_portnone-directory_registration_hostnone","p":812},{"i":837,"t":"Method to get a controller instance to manage trials (start, stop, inquire, etc). Parameters: endpoint: Endpoint instance - Details of the connection to the Orchestrator. Return: Controller instance - An instance of the Controller class used to manage trials.","s":"async get_controller(self, endpoint=Endpoint())","u":"/docs/reference/python","h":"#async-get_controllerself-endpointendpoint","p":812},{"i":839,"t":"Method to get a class instance to retrieve and manage data in a Datastore. Parameters: endpoint: Endpoint instance - Details of the connection to the Datastore. Return: Datastore instance - An instance of the Datastore class.","s":"async get_datastore(self, endpoint=Endpoint())","u":"/docs/reference/python","h":"#async-get_datastoreself-endpointendpoint","p":812},{"i":841,"t":"Method to get a class instance to store and retrieve models in a Model Registry Parameters: endpoint: Endpoint instance - Details of the connection to the Model Registry. Return: ModelRegistry instance - An instance of the ModelRegistry class.","s":"async get_model_registry_v2(self, endpoint=Endpoint())","u":"/docs/reference/python","h":"#async-get_model_registry_v2self-endpointendpoint","p":812},{"i":843,"t":"Method for an actor to asynchronously join an existing trial. This task will normally end after the user implementation has exited. Parameters: trial_id: str - The UUID of the trial to join. endpoint: Endpoint instance - Details of the connection to the Orchestrator. impl_name: str - deprecated actor_name: str - Name of the actor joining the trial. If None, actor_class will be used to find the actor to join. The name must match an active actor in the trial as found in the trial parameters in the sections trial_params:actors:name with trial_params:actors:endpoint set to \"cogment://client\". actor_class: str - The class of actor to join the trial. If None, actor_name will be used to find the actor to join. The class must match an active actor in the trial as found in the trial parameters in the sections trial_params:actors:actor_class with trial_params:actors:endpoint set to \"cogment://client\". Return: None","s":"async join_trial(self, trial_id, endpoint=Endpoint(), impl_name=None, actor_name=None, actor_class=None)","u":"/docs/reference/python","h":"#async-join_trialself-trial_id-endpointendpoint-impl_namenone-actor_namenone-actor_classnone","p":812},{"i":845,"t":"Method to register the asynchronous callback function that will run an environment for a trial. Parameters: impl: async function(EnvironmentSession instance) - Callback function to be registered. impl_name: str - Name for the environment being run by the given callback function. properties: dict{str:str} : Properties associated with the environment to be registered in the directory. These properties may be used for inquiries into the directory to find this environment. Return: None","s":"register_environment(self, impl, impl_name, properties={})","u":"/docs/reference/python","h":"#register_environmentself-impl-impl_name-properties","p":812},{"i":847,"t":"Method to register the asynchronous callback function that will run an actor for a trial. Parameters: impl: async func(ActorSession instance) - Callback function to be registered. impl_name: str - Name for the actor implementation being run by the given callback function. actor_classes: list[str] - The actor class name(s) that can be run by the given callback function. The possible names are specified in the spec file under section actor_classes:name. properties: dict{str:str} : Properties associated with the actor to be registered in the directory. These properties may be used for inquiries into the directory to find this actor. Return: None","s":"register_actor(self, impl, impl_name, actor_classes=[], properties={})","u":"/docs/reference/python","h":"#register_actorself-impl-impl_name-actor_classes-properties","p":812},{"i":849,"t":"Method to register an asynchronous callback function that will be called before a trial is started. Only one such function can be registered. But there may be multiple hook services for an Orchestrator. They are provided to the Orchestrator at startup. All hooks registered with the Orchestrator will be called in a pipeline fashion before each new trial. Parameters: impl: async func(PrehookSession instance) - Callback function to be registered. The PrehookSession instance member data should be changed as needed for the new trial before returning from this function. properties: dict{str:str} : Properties associated with the hook to be registered in the directory. These properties may be used for inquiries into the directory to find this hook. Return: None","s":"register_pre_trial_hook(self, impl, properties={})","u":"/docs/reference/python","h":"#register_pre_trial_hookself-impl-properties","p":812},{"i":851,"t":"Method to register an asynchronous callback function that will be called for each trial to serve log requests. Only one such function can be registered. This service is addressed in the trial parameters in the datalog section. Parameters: impl: async func(DatalogSession instance) - Callback function to be registered properties: dict{str:str} : Properties associated with the datalog to be registered in the directory. These properties may be used for inquiries into the directory to find this datalog. Return: None","s":"register_datalog(self, impl, properties={})","u":"/docs/reference/python","h":"#register_datalogself-impl-properties","p":812},{"i":853,"t":"Class containing data and methods to control and manage trials.","s":"class Controller","u":"/docs/reference/python","h":"#class-controller","p":812},{"i":855,"t":"Parameters: None Return: bool - Always True since the Controller does not rely on trial specs.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-1","p":812},{"i":857,"t":"Method to start a new trial. The config and parameter options are mutually exclusive. Parameters: trial_config: protobuf class instance - Configuration for the trial. The type is specified in the spec file under the section trial:config_type. The config will be added to the default parameters (in the Orchestrator) and sent to the pre-trial hooks (if any). The pre-trial hooks will set the trial parameters according to the config. If there is no pre-trial hooks, the config is ignored and the default parameters are used. This cannot be provided with the trial_params. trial_id_requested: str - The trial identifier requested for the new trial. It must be unique among all active trials and a limited set of the latest ended trials (this list of trials can be retrieved with get_trial_info or watch_trial). If provided, the Orchestrator will try to use this trial_id, otherwise, a UUID will be created. trial_params: TrialParameters instance - Fully defined parameters to start the new trial. This will be used as the trial parameters (I.e. the default parameters and pre-trial hooks are ignored). This cannot be provided with the trial_config. Return: str - The newly started trial ID. An empty string if the trial was not started due to a non-unique requested ID.","s":"async start_trial(self, trial_config=None, trial_id_requested=None, trial_params=None)","u":"/docs/reference/python","h":"#async-start_trialself-trial_confignone-trial_id_requestednone-trial_paramsnone","p":812},{"i":859,"t":"Method to request the end of a trial. Parameters: trial_ids: list[str] - The trial ID(s) to request to terminate. There must be at least one ID. hard: bool - If True, the termination will be forced and immediate, it will not wait for any action or observation. If False, the trial will wait for the end of the next step, to end gracefully (i.e. wait for the next full set of actions and response observations), and the environment will have a chance to respond to an end request (an event of type ENDING). Return: None","s":"async terminate_trial(self, trial_ids, hard=False)","u":"/docs/reference/python","h":"#async-terminate_trialself-trial_ids-hardfalse","p":812},{"i":861,"t":"Method to get information about a trial. Parameters: trial_ids: list[str] - The trial ID(s) from which to request information. If no ID is provided, returns information about all trials. Note that ended trials may only appear for a short time in this list after they have ended. Return: list[TrialInfo instance] - List of trial information, one per trial. Can be empty if no trial matches.","s":"async get_trial_info(self, trial_ids)","u":"/docs/reference/python","h":"#async-get_trial_infoself-trial_ids","p":812},{"i":863,"t":"Generator method to iterate, in real-time, through all trials with state matching the filters. When called, it will first iterate over the trials with current state matching the filters. Afterwards, it will wait, and yield in real-time, as trial states change and match the filters. Parameters: trial_state_filters: list[cogment.TrialState] - List of enum values from cogment.TrialState for which we are interested in receiving state changes. full_info: bool - If True, all the fields of the returned TrialInfo will be set. Otherwise only the trial ID and state will be set. Return: generator(TrialInfo instance) - A generator for the relevant trial info.","s":"async watch_trials(self, trial_state_filters=[], full_info=False)","u":"/docs/reference/python","h":"#async-watch_trialsself-trial_state_filters-full_infofalse","p":812},{"i":865,"t":"Method to get the list of configured actors in a trial. Parameters: trial_id: str - The trial ID from which to request the list of actors. Return: list[ActorInfo instance] - List of actors configured in this trial.","s":"async get_actors(self, trial_id)","u":"/docs/reference/python","h":"#async-get_actorsself-trial_id","p":812},{"i":867,"t":"Method to get the versions from the remote Orchestrator. Parameters: None Return: dict - The key of the dictionary is the name of the component (str), and the value is the version (str).","s":"async get_remote_versions(self)","u":"/docs/reference/python","h":"#async-get_remote_versionsself","p":812},{"i":869,"t":"Class containing data and methods to retrieve historical (or real-time) trial samples from a Datastore. This class can also be used to delete trials from a Datastore.","s":"class Datastore","u":"/docs/reference/python","h":"#class-datastore","p":812},{"i":871,"t":"Parameters: None Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-2","p":812},{"i":873,"t":"Method to get information about historical (or ongoing) trials in the Datastore. This method is more efficient than all_trials(), but can be problematic if too many trials are to be returned. Parameters: ids: list[str] - The trial IDs for which to request information. If no ID is provided (empty list), returns information about all trials in the Datastore. properties: dict{str:str} - Properties that must match the trial properties (see trial parameters). Return: list[DatastoreTrialInfo instance] - List of trial information, one per trial. Can be empty if no trial matches any of the provided trial IDs and properties.","s":"async get_trials(self, ids=[], properties={})","u":"/docs/reference/python","h":"#async-get_trialsself-ids-properties","p":812},{"i":875,"t":"Generator method to iterate through the trials in the Datastore that match the given properties. Parameters: bundle_size: int - Number of trials to retrieve at a time from the Datastore. This may be increased to more efficiently inquire the Datastore at the price of increased memory use. wait_for_trials: float - Number of seconds to wait for new trials (to reach bundle size). If 0, only the trials currently in the datastore will be returned. If the bundle size is not reached within that time limit, whatever trials were found are returned, and if no trials were found, the iterator exits. properties: dict{str:str} - Properties that must match the trial properties (see trial parameters). If empty, all trials match. ids: list[str] - The trial IDs that are considered for retrieval. If no ID is provided (empty list), all trials are considered. Return: generator(DatastoreTrialInfo instance) - A generator for the trials in the Datastore.","s":"async all_trials(self, bundle_size=1, wait_for_trials=0, properties={}, ids=[])","u":"/docs/reference/python","h":"#async-all_trialsself-bundle_size1-wait_for_trials0-properties-ids","p":812},{"i":877,"t":"Method to delete historical trials recorded in the Datastore. Parameters: ids: list[str] - The trial IDs to remove from the Datastore. Return: None","s":"async delete_trials(self, ids)","u":"/docs/reference/python","h":"#async-delete_trialsself-ids","p":812},{"i":879,"t":"Generator method to iterate through the samples from trials in the Datastore. The samples can be historical (if the trial has ended) or real-time (if a trial is ongoing). Parameters: trial_infos: list[DatastoreTrialInfo] - Trials to request samples from. These should be the info instances received from get_trials. actor_names: list[str] - Names of actors to consider including in the samples. If empty, all actors will be considered. actor_classes: list[str] - Actor classes to match for an actor to be included in the samples. If empty, actors in any class will be considered. actor_implementations: list[str] - Actor implementations to match for an actor to be included in the samples. If empty, actors with any implementation will be considered. fields: list[cogment.DatastoreFields] - Data fields to be filled in DatastoreActorData (otherwise left empty). If the list is empty, all data will be filled in. Return: generator(DatastoreSample instance) - A generator for the samples from the Datastore.","s":"async all_samples(self, trial_infos, actor_names=[], actor_classes=[], actor_implementations=[], fields=[])","u":"/docs/reference/python","h":"#async-all_samplesself-trial_infos-actor_names-actor_classes-actor_implementations-fields","p":812},{"i":881,"t":"Class containing data and methods to store and retrieve models from a ModelRegistry.","s":"class ModelRegistry","u":"/docs/reference/python","h":"#class-modelregistry","p":812},{"i":883,"t":"Parameters: None Return: bool - Always True since the ModelRegistry does not rely on trial specs.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-3","p":812},{"i":885,"t":"Method to publish and save the model to storage in the Model Registry. When stored, a model name will be available until explicitly deleted. If the model name already exists, the model will be saved as a new iteration of the existing model name. Iteration numbers start at 1 (the first model sent to the Model Registry) and increase by 1 for every new iteration. But not all iterations may be in storage (see publish_model). Parameters: name: str - The model name to be stored. model: bytes - The data representing the model. iteration_properties: dict{str:str} - Custom information that is specific to this iteration and will be stored with it. Return: ModelIterationInfo instance - The information about the newly stored model iteration.","s":"async store_model(self, name, model, iteration_properties=None)","u":"/docs/reference/python","h":"#async-store_modelself-name-model-iteration_propertiesnone","p":812},{"i":887,"t":"Method to send a model to the Model Registry for the sole purpose of being published to other services. This model will be transient and not saved in storage. It will stay available in the Model Registry for a time, dependent on the Model Registry max_cache_item option, then be deleted automatically. If the model name already exists, the model will be seen as a new iteration of the existing model name. Iteration numbers start at 1 (the first model sent to the Model Registry) and increase by 1 for every new iteration. Parameters: name: str - The model name to be published. model: bytes - The data representing the model. iteration_properties: dict{str:str} - Custom information that is specific to this iteration. Return: ModelIterationInfo instance - The information about the newly published model iteration.","s":"async publish_model(self, name, model, iteration_properties=None)","u":"/docs/reference/python","h":"#async-publish_modelself-name-model-iteration_propertiesnone","p":812},{"i":889,"t":"Method to retrieve the data of a specific model iteration from the ModelRegistry. Transient iterations may become unavailable at any time. Parameters: name: str - The model name to be retrieved. iteration: int - The number of the model iteration to be retrieved. If -1, then the latest (most recent) iteration will be retrieved. Return: bytes - The model data representing the specific iteration requested. None if the iteration is not available (if iteration = -1, it means the model has no iteration available).","s":"async retrieve_model(self, name, iteration=-1)","u":"/docs/reference/python","h":"#async-retrieve_modelself-name-iteration-1","p":812},{"i":891,"t":"Method to delete a model (and all its stored and transient iterations) from the Model Registry. Parameters: name: str - The model name to be removed from the Model Registry. Return: None","s":"async remove_model(self, name)","u":"/docs/reference/python","h":"#async-remove_modelself-name","p":812},{"i":893,"t":"Method to retrieve the list of all models stored in the Model Registry. Parameters: None Return: list[ModelInfo instance] - List of model info for all models stored in the Model Registry.","s":"async list_models(self)","u":"/docs/reference/python","h":"#async-list_modelsself","p":812},{"i":895,"t":"Method to retrieve the list of all available iterations for a model in the Model Registry. Parameters: model_name: str - The model name. Return: list[ModelIterationInfo instance] - List of iteration info for all available iterations of the model. This includes all stored iterations and all currently available transient iterations.","s":"async list_iterations(self, model_name)","u":"/docs/reference/python","h":"#async-list_iterationsself-model_name","p":812},{"i":897,"t":"Method to retrieve information about a specific model iteration. Parameters: name: str - The model name. iteration: int - The iteration number. If -1, then information about the latest (most recent) iteration will be retrieved. Return: ModelIterationInfo instance - The information about the model iteration. None if the iteration is not available (if iteration = -1, it means the model has no iteration available).","s":"async get_iteration_info(self, name, iteration)","u":"/docs/reference/python","h":"#async-get_iteration_infoself-name-iteration","p":812},{"i":899,"t":"Method to store or update properties associated with the model name (not specific to any iteration). Parameters: name: str - The model name. properties: dict{str:str} - Custom information that will be stored with the model name, independently of any iteration. If the model name already has properties, they will be overwritten. Return: None","s":"async update_model_info(self, name, properties)","u":"/docs/reference/python","h":"#async-update_model_infoself-name-properties","p":812},{"i":901,"t":"Method to retrieve information associated with the model name (not specific to any iteration). Parameters: name: str - The model name. Return: ModelInfo instance - Info associated with the model name, independent of any iteration. None if the model is not found in the Model Registry.","s":"async get_model_info(self, name)","u":"/docs/reference/python","h":"#async-get_model_infoself-name","p":812},{"i":903,"t":"Generator method to receive the information about the model iterations as they are stored or published. Information about the latest iteration will be returned immediately, then the function will wait for new iterations to be stored or published to the Model Registry and return their information when they are made available. Parameters: model_name: str - The model name for which to receive iteration information. Return: generator(ModelIterationInfo instance) - A generator for the model iteration information.","s":"async iteration_updates(self, model_name)","u":"/docs/reference/python","h":"#async-iteration_updatesself-model_name","p":812},{"i":905,"t":"Method to start automatically tracking a specific model and make the latest iteration available seamlessly. A background task will be started (running iteration_updates) to track the latest model iteration and retrieve it automatically. Multiple calls for the same model will not duplicate the background task and will point to the same underlying model. Thus if the model is changed by a caller, all callers will see the changes (unless and until a new model is retrieved from the Model Registry). Due to background processing and caching, this method is not thread safe. It is best used for simple cases. More complicated use-cases should explicitly use iteration_updates. Parameters: name: str - The model name to track. deserialize_func: func(bytes) - Callback function to deserialize the model iteration from a bytes string to a user defined object instance. This is called asynchronously in the background to deserialize the raw bytes from the Model Registry, and the user object is made available in LatestModel. If not provided, the raw bytes string from the Model Registry is made available in LatestModel instead of a user object. initial_wait: int - Number of seconds to wait for the model name to be available in the Model Registry. The method will return once the model name is available, or raise an exception if the model name was not available within the given time. The model name being available only means that it is registered in the Model Registry, not necessarily that it has iterations; i.e. the background task may wait more for iterations to be available. Return: LatestModel instance - An instance of the LatestModel class.","s":"async track_latest_model(self, name, deserialize_func=None, initial_wait=0)","u":"/docs/reference/python","h":"#async-track_latest_modelself-name-deserialize_funcnone-initial_wait0","p":812},{"i":907,"t":"Abstract class that manages aspects of a trial. Contains data and methods common to all sessions .","s":"class Session","u":"/docs/reference/python","h":"#class-session","p":812},{"i":909,"t":"Method to get the UUID of the trial managed by this session. Parameters: None Return: str - UUID of the trial.","s":"get_trial_id(self)","u":"/docs/reference/python","h":"#get_trial_idself","p":812},{"i":911,"t":"Method to get the current tick id of the trial (i.e. time step). Parameters: None Return: int - The current tick id.","s":"get_tick_id(self)","u":"/docs/reference/python","h":"#get_tick_idself","p":812},{"i":913,"t":"Method to inquire if the current trial has ended. Parameters: None Return: bool - True if the trial has ended, false otherwise.","s":"is_trial_over(self)","u":"/docs/reference/python","h":"#is_trial_overself","p":812},{"i":915,"t":"Method to notify the Orchestrator that all data for the trial, from this session, has been sent. This can be called only when the session is ending. When starting the session (see EnvironmentSession and ActorSession), if the auto_done_sending parameter is True, this method should not be called, and if the parameter is False, it MUST be called to end the trial properly. Parameters: None Return: None","s":"sending_done(self)","u":"/docs/reference/python","h":"#sending_doneself","p":812},{"i":917,"t":"Method to send a reward to one or more actors. Parameters: value: float - Value of the reward. This will be aggregated with other rewards for the same target actor. confidence: float - Weight of this reward value in determining the final aggregated reward. Should be > 0. to: list[str] - Target(s) of reward. A list value could be the name of an actor in the trial. Or it could represent a set of actors; A set of actors can be represented with the wildcard character \"*\" for all actors (of all classes), or \"actor_class.*\" for all actors of a specific class (the actor_class is the name of the class as specified in the spec file). tick_id: int - The tick id (time step) for which the reward should be applied. If \"-1\", then the reward applies to the current time step. user_data: protobuf class instance - Extra user data to be sent with the reward. The class can be any protobuf class. It is the responsibility of the receiving actor to manage the class received (packed in a google.protobuf.Any). Return: None","s":"add_reward(self, value, confidence, to, tick_id=-1, user_data=None)","u":"/docs/reference/python","h":"#add_rewardself-value-confidence-to-tick_id-1-user_datanone","p":812},{"i":919,"t":"Class based on Session, containing session data and methods necessary to run an environment for a trial. An instance of this class is passed as an argument to the environment callback function registered with cogment.Context.register_environment. impl_name: str - Name of the implementation running this environment. config: protobuf class instance - User configuration received for this environment instance. Can be None if no configuration was provided. The type of the protobuf class is specified in the spec file in the section environment:config_type. name: str - Name of the environment this instance represents.","s":"class EnvironmentSession(Session)","u":"/docs/reference/python","h":"#class-environmentsessionsession","p":812},{"i":921,"t":"Method to report that the environment is starting to run the trial. The method should be called before any other method in the session. Parameters: observations: list[tuple(str, protobuf class instance)] - The initial observations from which the environment is starting the trial. This is the same as the parameter for self.produce_observations. If not provided, then the first observation sent with produce_observation will be used to initiate the trial (note that no actions will be received until the first observation is sent). auto_done_sending: bool - Controls when to notify the Orchestrator that all data has been sent. If True, the session will automatically send the notification after end is called. If False, the user MUST call sending_done (after end) to end the trial properly. Return: None","s":"start(self, observations = None, auto_done_sending=True)","u":"/docs/reference/python","h":"#startself-observations--none-auto_done_sendingtrue","p":812},{"i":923,"t":"Generator method to iterate over all events (actions, messages) as they are received. This will block and wait for an event. When this generator exits, the callback function (registered with register_environment) should return to end the trial cleanly. The generator will exit for various reasons indicating the termination of the trial, a loss of communication with the orchestrator, or if the generator is sent \"False\" (in which case the callback function does not necessarily need to exit). Parameters: None Return: generator(RecvEvent instance) - A generator for the events that arrive. The RecvEvent instances received from this generator will only contain actions or messages; no observations nor rewards. When receiving actions in the event, the self.produce_observation method is normally used to \"reply\" (or self.end to end the trial).","s":"async all_events(self)","u":"/docs/reference/python","h":"#async-all_eventsself","p":812},{"i":925,"t":"Method to send observations to actors. If called after receiving an event of type EventType.ENDING, the observation will be considered the final observation (equivalent to calling end()). Parameters: observations: list[tuple(str, protobuf class instance)] - The observations to send to actors. The string in the tuple is the name of the destination actor (or \"*\" for all actors). The name of the actors can be found in trial parameters under trial_params:actors:name. The protobuf class is the Observation Space for that actor, found in the spec file in the corresponding section actor_classes:observation:space. Return: None","s":"produce_observations(self, observations)","u":"/docs/reference/python","h":"#produce_observationsself-observations","p":812},{"i":927,"t":"Method to report the end of the environment. This will effectively end the trial. Message events can still arrive after this call. Parameters: final_observations: list[tuple(str, protobuf class instance)] - The final observations to send to the actors. This is the same as the parameter for self.produce_observations. Return: None","s":"end(self, final_observations)","u":"/docs/reference/python","h":"#endself-final_observations","p":812},{"i":929,"t":"Method to get the list of active actors in the trial. Parameters: None Return: list[ActorInfo instance] - List of active actors and classes involved in this trial.","s":"get_active_actors(self)","u":"/docs/reference/python","h":"#get_active_actorsself","p":812},{"i":931,"t":"Method to send a message related to the current time step (tick id). Parameters: payload: protobuf class instance - The message data to be sent. The class can be any protobuf class. It is the responsibility of the receiving environment to manage the class received (packed in a google.protobuf.Any). to: list[str] - Targets of feedback. Each value could be the name of an actor in the trial. Or it could represent a set of actors (with wildcards); A set of actors can be represented with the wildcard character \"*\" for all actors (of all classes), or \"actor_class.*\" for all actors of a specific class (the actor_class must match one of the classes listed in the trial parameters). Note that the wildcard does not include the environment. Return: None","s":"send_message(self, payload, to)","u":"/docs/reference/python","h":"#send_messageself-payload-to","p":812},{"i":933,"t":"Class based on Session, containing session/trial data and methods necessary to run an actor for a trial. An instance of this class is passed as argument to the actor callback function registered with cogment.Context.register_actor. actor_class: str - Name of the class of actor this instance represents. Specified in the spec file as actor_classes:name. impl_name: str - Name of the implementation of the actor represented by this instance. config: protobuf class instance - User configuration received for this actor instance. Can be None is no configuration was provided. The type of the protobuf class is specified in the spec file in the section actor_classes:config_type. name: str - Name of the actor this instance represents. env_name: str - Name of the environment running the trial this actor is participating in (used to send messages to the environment).","s":"class ActorSession(Session)","u":"/docs/reference/python","h":"#class-actorsessionsession","p":812},{"i":935,"t":"Method to start the actor. This method should be called before any other method in the session. Parameters: auto_done_sending: bool - Controls when to notify the Orchestrator that all data has been sent. If True, the session will automatically send the notification after receiving the last observation. If False, the user MUST call sending_done to end the trial properly. Return: None","s":"start(self, auto_done_sending=True)","u":"/docs/reference/python","h":"#startself-auto_done_sendingtrue","p":812},{"i":937,"t":"Generator method to iterate over all events (observations, rewards, messages) as they are received. This will block and wait for an event. When this generator exits, the callback function (registered with register_actor) should return to end the trial cleanly. The generator will exit for various reasons indicating the end of the trial, a loss of communication with the orchestrator, or if the generator is sent \"False\". Parameters: None Return: generator(RecvEvent instance) - A generator for the events that arrive. The RecvEvent instances received from this generator will not contain actions. When receiving an observation in the event, the self.do_action method is normally used to \"reply\" (if the event type is EventType.ACTIVE).","s":"async all_events(self)","u":"/docs/reference/python","h":"#async-all_eventsself-1","p":812},{"i":939,"t":"Method to send actions to the environment. Parameters: action: protobuf class instance - An instance of the action space class specified in the corresponding section actor_classes:action:space of the spec file. If None, then no action space is sent (empty content) and the environment will receive a default initialized action space of the appropriate type. Return: None","s":"do_action(self, action)","u":"/docs/reference/python","h":"#do_actionself-action","p":812},{"i":941,"t":"Method to send a message related to the current time step (tick id). Parameters: payload: protobuf class instance - The message data to be sent. The class can be any protobuf class. It is the responsibility of the receiving actor to manage the class received (packed in a google.protobuf.Any). to: list[str] - Targets of feedback. Each value could be the name of an actor in the trial, or the name of the environment (from self.env_name). Or it could represent a set of actors (with wildcards); A set of actors can be represented with the wildcard character \"*\" for all actors (of all classes), or \"actor_class.*\" for all actors of a specific class (the actor_class must match one of the classes listed in the trial parameters). Note that the wildcard does not include the environment. Return: None","s":"send_message(self, payload, to)","u":"/docs/reference/python","h":"#send_messageself-payload-to-1","p":812},{"i":943,"t":"Class containing trial parameters to define the specifics of a trial. An instance of this class is passed as argument to the pre-trial hook callback function registered with cogment.Context.register_pre_trial_hook. The first pre-trial hook to be called will receive the default parameters set in the Orchestrator, the following hooks will receive the parameters set by the preceding hooks. trial_parameters: TrialParameters instance - Parameters for the trial. Initially received with parameters from the previous hook, or default parameters from the Orchestrator if it is the first hook. Changes to this instance will be forwarded to the next hook, or to the Orchestrator if it is the last hook.","s":"class PrehookSession","u":"/docs/reference/python","h":"#class-prehooksession","p":812},{"i":945,"t":"Method to retrieve the ID of the trial. Parameters: None Return: str - ID of the trial.","s":"get_trial_id(self)","u":"/docs/reference/python","h":"#get_trial_idself-1","p":812},{"i":947,"t":"Method to retrieve the identifier of the user that started the trial. Parameters: None Return: str - Identifier of the user that started the trial.","s":"get_user_id(self)","u":"/docs/reference/python","h":"#get_user_idself","p":812},{"i":949,"t":"Class containing session data and methods necessary to manage the logging of trial run data. An instance of this class is passed as an argument to the datalog callback function registered with cogment.Context.register_datalog. trial_id: str - UUID of the trial managed by this instance. user_id: str - Identifier of the user that started the trial. trial_parameters: cogment.TrialParameters instance - Parameters of the trial.","s":"class DatalogSession","u":"/docs/reference/python","h":"#class-datalogsession","p":812},{"i":951,"t":"Method to start receiving samples. Parameters: None Return: None","s":"start(self)","u":"/docs/reference/python","h":"#startself","p":812},{"i":953,"t":"Generator method to iterate over all samples as they are received (waiting for each in turn). Parameters: None Return: generator(cogment.LogSample instance) - A generator for the samples received.","s":"all_samples(self)","u":"/docs/reference/python","h":"#all_samplesself","p":812},{"i":955,"t":"Class enclosing the details for connecting to an Orchestrator. url: str - The URL where to connect to the Orchestrator. private_key: str - To use TLS for the connection, this must be set to the PEM-encoded private key. root_certificates: str - If using TLS for the connection (i.e. the private_key is not None), this can be set to the PEM-encoded root certificates. If not set and using TLS for the connection, the root certificates will be fetched from the system default location. certificate_chain: str - If using TLS for the connection, this can be set to the PEM-encoded certificate chain.","s":"class cogment.Endpoint","u":"/docs/reference/python","h":"#class-cogmentendpoint","p":812},{"i":957,"t":"Parameters: url: str - The URL where to connect to the Orchestrator. By default this is a discovery URL that uses the Directory to find the corresponding endpoint.","s":"__init__(self, url=\"cogment://discover\")","u":"/docs/reference/python","h":"#__init__self-urlcogmentdiscover","p":812},{"i":959,"t":"Class enclosing the details for connection from an Orchestrator. port: int - The TCP/IP port where the service will be awaiting the Orchestrator connection. private_key_certificate_chain_pairs: list[tuple(str, str)] - To use TLS for incoming connections, this must be set to a list of tuples of the form (PEM-encoded private key, PEM-encoded certificate chain). root_certificates: str - If using TLS for the connection (i.e. private_key_certificate_chain_pairs is not None), this should be set to PEM-encoded Orchestrator root certificates that the server will use to verify Orchestrator authentication.","s":"class cogment.ServedEndpoint","u":"/docs/reference/python","h":"#class-cogmentservedendpoint","p":812},{"i":961,"t":"Parameters: port: int - The TCP/IP port where the service will be awaiting the Orchestrator connection. If 0, the system will choose a free port.","s":"__init__(self, port=0)","u":"/docs/reference/python","h":"#__init__self-port0","p":812},{"i":963,"t":"Enum representing the various states of trials. UNKNOWN: Should not be used. INITIALIZING: The trial is in the process of starting. PENDING: The trial is waiting for its final parameters, all the components to be ready, and the first observation. RUNNING: The trial is running. TERMINATING: The trial is in the process of ending (either a request to end has been received or the last observation has been received). ENDED: The trial has ended. Only a set number of ended trials will be kept (configured in the Orchestrator). For further information on trial lifetime, check the dedicated section.","s":"class cogment.TrialState(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmenttrialstateenumenum","p":812},{"i":965,"t":"Class enclosing the details of a trial. trial_id: str - The trial ID to which the details pertain. properties: dict{str:str} - User defined properties provided on trial start (see Trial Parameters). state: cogment.TrialState - The current state of the trial. env_name: str - The name of the environment running the trial. tick_id: int - The time step that the information relates to. Only provided from a call to get_trial_info. duration: int - The time (in nanoseconds) that the trial has run. Only provided from a call to get_trial_info.","s":"class TrialInfo","u":"/docs/reference/python","h":"#class-trialinfo","p":812},{"i":967,"t":"Class enclosing the details of an actor. actor_name: str - The name of the actor. actor_class_name: str - The name of the actor's class (as defined in the spec file).","s":"class ActorInfo","u":"/docs/reference/python","h":"#class-actorinfo","p":812},{"i":969,"t":"Class representing a received event (for environments and actors). It can contain any combination of data according to the receiver needs, or even be empty, but it will always have a type. type: Enum EventType - Type of event the enclosed data represents. observation: RecvObservation instance - Observation data. This can only be received by actors. None if not present. actions: list[RecvAction instance] - Action data from actors. This can only be received by the environment. The list is empty if not present. rewards: list[RecvReward instance] - Reward values and data. This can only be received by actors. The list is empty if not present. messages: list[RecvMessage instance] - Message data. The list is empty if not present.","s":"class RecvEvent","u":"/docs/reference/python","h":"#class-recvevent","p":812},{"i":971,"t":"Enum representing the type of an event. EventType.NONE: Empty event. This kind of event should never be received. EventType.ACTIVE: Normal event from an active trial. Most events will be of this type. EventType.ENDING: Events from a trial in the process of ending. Events of this type can contain the same data as ACTIVE events. For the environment, the data received in ENDING events are the last actions/messages, and the trial is awaiting a final observation. For the actors, the data received in ENDING events are the final observations/rewards/messages, and no action can/need to be sent in response. EventType.FINAL: Final event for the trial. This does not contain data. The event loop will exit after this event is delivered. This event can be ignored if nothing needs to be done before exiting the loop. For further information on trial lifetime, check the dedicated section.","s":"class cogment.EventType(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmenteventtypeenumenum","p":812},{"i":973,"t":"Class containing the details of an observation for an actor. tick_id: int - The time step that the observation relates to. timestamp: int - Unix style Epoch timestamp in nanoseconds (time since 00:00:00 UTC Jan 1, 1970). Undefined if actor status is ActorStatus.UNAVAILABLE. observation: protobuf class instance - Observation received from the environment. The class of the observation is defined as observation space for the actor class. This is specified in section actor_classes:observation:space in the spec file for the appropriate/receiving actor class. Undefined if actor status is ActorStatus.UNAVAILABLE.","s":"class RecvObservation","u":"/docs/reference/python","h":"#class-recvobservation","p":812},{"i":975,"t":"Enum representing the status of actors. ActorStatus.UNKNOWN: This status should never be received. ActorStatus.ACTIVE: The actor is active and responding to observations normally. ActorStatus.UNAVAILABLE: The (optional) actor is unavailable (typically because of a time out). ActorStatus.DEFAULT: The (optional) actor is acting by default (responding with the default action defined in the actor parameters). The environment will not see this kind of actor because a \"default\" actor looks active to the environment.","s":"class cogment.ActorStatus(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmentactorstatusenumenum","p":812},{"i":977,"t":"Class containing the details of an action from an actor. tick_id: int - The time step that the action relates to. actor_index: int - Index of the actor in the list of all trial actors (returned by Session.get_active_actors). status: ActorStatus instance - Indicate the status of the actor. timestamp: int - Unix style Epoch timestamp in nanoseconds (time since 00:00:00 UTC Jan 1, 1970) for the action. Undefined if status is not ActorStatus.ACTIVE. action: protobuf class instance - Action from the actor which has index actor_index in the trial. The class of the action is defined as action space for the specific actor in the section actor_classes:action:space in the spec file for the appropriate actor class. Undefined if status is not ActorStatus.ACTIVE.","s":"class RecvAction","u":"/docs/reference/python","h":"#class-recvaction","p":812},{"i":979,"t":"Class containing a message. tick_id: int - The time step that the message relates to. receiver_name: str - Name of the receiver for the message (the name of an actor, or wildcard string). sender_name: str - Name of the sender of the message (the name of an actor, or the environment). payload: google.protobuf.Any instance - Data for a received message. The class enclosed in google.protobuf.Any is of the type set by the sender; It is the responsibility of the receiver to manage the data received (i.e. determine the type and unpack the data).","s":"class RecvMessage","u":"/docs/reference/python","h":"#class-recvmessage","p":812},{"i":981,"t":"Class containing the details of a received reward. tick_id: int - The tick id (time step) for which the reward should be applied. receiver_name: str - Name of the receiver for the reward (the name of an actor, or wildcard string). value: float - Value of the reward (aggregated from the sources)","s":"class RecvReward","u":"/docs/reference/python","h":"#class-recvreward","p":812},{"i":983,"t":"Return the number of source rewards this reward is based upon. Parameters: None Return: int - Number of sources.","s":"get_nb_sources(self)","u":"/docs/reference/python","h":"#get_nb_sourcesself","p":812},{"i":985,"t":"Generator method to iterate over all sources making up this reward. Parameters: None Return: generator(RecvRewardSource instance) - A generator for the sources in the reward (simple rewards that make up this final/aggregate reward).","s":"all_sources(self)","u":"/docs/reference/python","h":"#all_sourcesself","p":812},{"i":987,"t":"Class containing the details of a received single source reward. value: float - Value of the reward from the sender. confidence: float - Confidence level of this reward value. sender_name: str - Name of the sender of this reward (the name of an actor, or the environment). user_data: google.protobuf.Any instance - Data for a user-specific reward format. Can be None if no specific data was provided. The class enclosed in google.protobuf.Any is of the type set by the sender; it is the responsibility of the receiver to manage the data received (i.e. determine the type and unpack the data).","s":"class RecvRewardSource","u":"/docs/reference/python","h":"#class-recvrewardsource","p":812},{"i":989,"t":"Class containing the parameters of the trial (see Trial Parameters). Any attribute can be set to None to reset it to its default. Some attributes (config and environment_config) are immutable: changes to the instance received will not be reflected in TrialParameters, the attribute must be set with a new instance to make changes. These attributes can also return None if not set. config: protobuf class instance - The type is specified in the spec file under the section trial:config_type. config_serialized: bytes - Config in serialized (class independent) form. This can be accessed even without specs (see has_specs()). properties: dict{str:str} max_steps: int max_inactivity: int nb_buffered_ticks: int datalog_endpoint: str datalog_exclude_fields: tuple(str) environment_config: protobuf class instance - The type is specified in the spec file under the section environment:config_type. environment_serialized: bytes - Config in serialized (class independent) form. This can be accessed even without specs (see has_specs()). environment_name: str environment_endpoint: str environment_implementation: str actors: list(cogment.ActorParameters) - The parameters for the actors. This is a list style object that implements the basic Python list functionality. If the actors' data is not being edited (e.g. read only parameters), the \"index\" of this list can be the name of an actor.","s":"class cogment.TrialParameters","u":"/docs/reference/python","h":"#class-cogmenttrialparameters","p":812},{"i":991,"t":"Parameters: cog_settings: module - Specs module associated with trials that relate to these parameters (see cog_settings generation). **kwargs: Accepts any of the attributes as keyword to set their value on construction. E.g. TrialParameters(settings, max_steps=1000, environment_name=\"level\")","s":"__init__(self, cog_settings, **kwargs)","u":"/docs/reference/python","h":"#__init__self-cog_settings-kwargs","p":812},{"i":993,"t":"Parameters: None Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs or if a non None argument cog_settings was provided.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-4","p":812},{"i":995,"t":"Return the type of serial data produced by serialize and accepted by deserialize. The type represents an ID dependent on TrialParams defined in the low level gRPC API. Parameters: None Return: int - The type of the serialization string data. This is the type of string that is returned by serialize, and the only type accepted by deserialize; it is undefined behavior to try to deserialize the wrong type of data. This value is strictly larger than 1.","s":"get_serialization_type(self)","u":"/docs/reference/python","h":"#get_serialization_typeself","p":812},{"i":997,"t":"Return a binary string equivalent of the parameters. Parameters: None Return: str - Serialized parameters.","s":"serialize(self)","u":"/docs/reference/python","h":"#serializeself","p":812},{"i":999,"t":"Takes a serialized parameter string and sets the TrialParameters instance. Parameters: raw_string: bytes - Binary string representing a serialized TrialParameters of type type. type: int - Type of serial data in raw_string (from get_serialization of the source). If None, the current type is assumed (i.e. this instance type matches the source type).","s":"deserialize(self, raw_string, type=None)","u":"/docs/reference/python","h":"#deserializeself-raw_string-typenone","p":812},{"i":1001,"t":"Class containing the parameters for a particular actor (see Trial Parameters). Any attribute can be set to None to reset it to its default. Some attributes (config, default_action) are immutable: changes to the instance received will not be reflected in ActorParameters, the attribute must be set with a new instance to make changes. These attributes can also return None if not set. config: protobuf class instance - The type is specified in the spec file under the section actor_classes:config_type for the specific actor class of the actor. config_serialized: bytes - Config in serialized (class independent) form. This can be accessed even without specs (see has_specs()). class_name: str - This cannot be changed (it is a parameter of the constructor). name: str endpoint: str implementation: str initial_connection_timeout: float response_timeout: float optional: bool default_action: protobuf class instance - The type is specified in the spec file under the section actor_classes:action:space for the specific class of the actor. default_action_serialized: bytes - Action in serialized (class independent) form. This can be accessed even without specs (see has_specs()).","s":"class cogment.ActorParameters","u":"/docs/reference/python","h":"#class-cogmentactorparameters","p":812},{"i":1003,"t":"Parameters: cog_settings: module - Specs module associated with trials that relate to these parameters (see cog_settings generation). class_name: str - The name of the actor class for the actor. This is specific to a type of trial and must match values in the spec file under section actor_classes:name. **kwargs: Accepts any of the attributes (except class_name) as keyword to set their value on construction. E.g. ActorParameters(settings, class_name=\"some_class\", name=\"act_name\")","s":"__init__(self, cog_settings, class_name, **kwargs)","u":"/docs/reference/python","h":"#__init__self-cog_settings-class_name-kwargs","p":812},{"i":1005,"t":"Parameters: None Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs or if a non None argument cog_settings was provided.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-5","p":812},{"i":1007,"t":"Class containing a datalog sample. A sample starts and ends with the arrival of new observations from the environment. The last sample will end after all components have acknowledged the end of the trial (the state of that sample will then be TrialState.ENDED). Note that some of the data may not be available (None) if it was excluded from the sample (see datalog parameters TrialParameters.datalog_exclude_fields). out_of_sync: bool - False if it is a normal/full sample. True if it is an out-of-sync/partial sample. Out-of-sync samples do not follow the normal time step progression of the trial, they represent isolated data (typically a reward) for steps that have already past. Out-of-sync samples will be produced according to the trial parameter nb_buffered_ticks. tick_id: int - The time step that the sample data relates to. state: cogment.TrialState - The state of the trial at the end of the sample period. Undefined for out-of-sync samples. timestamp: int - Unix style Epoch timestamp in nanoseconds (time since 00:00:00 UTC Jan 1, 1970) at the beginning of the sample period. For out-of-sync samples, this is the time the data in the sample was received. events: str - Description of special events that happened during the time frame of the sample. For out-of-sync samples, it may contain an explanation of the data.","s":"class cogment.LogSample","u":"/docs/reference/python","h":"#class-cogmentlogsample","p":812},{"i":1009,"t":"Parameters: params: LogParams instance - The parameters of the trial.","s":"__init__(self, params)","u":"/docs/reference/python","h":"#__init__self-params","p":812},{"i":1011,"t":"Returns the type of serial data produced by serialize and accepted by deserialize. The type represents an ID dependent on DatalogSample defined in the low level gRPC API. Parameters: None Return: int - The type of the serialization string data. This is the type of string that is returned by serialize, and the only type accepted by deserialize; it is undefined behavior to try to deserialize the wrong type of data. This value is strictly larger than 1.","s":"get_serialization_type(self)","u":"/docs/reference/python","h":"#get_serialization_typeself-1","p":812},{"i":1013,"t":"Returns a binary string equivalent of the sample. Parameters: None Return: str - Serialized sample.","s":"serialize(self)","u":"/docs/reference/python","h":"#serializeself-1","p":812},{"i":1015,"t":"Takes a serialized sample string and sets the LogSample instance. Parameters: raw_string: str - Binary string representing a serialized LogSample of the same type.","s":"deserialize(self, raw_string)","u":"/docs/reference/python","h":"#deserializeself-raw_string","p":812},{"i":1017,"t":"Generator method to iterate over all actors in the trial. This information can also be retrieved from the parameters of the trial. Parameters: None Return: generator(str) - A generator for the names of the actors in the trial.","s":"all_actor_names(self)","u":"/docs/reference/python","h":"#all_actor_namesself","p":812},{"i":1019,"t":"Retrieves the action from the actor in the sample. Parameters: actor: str or int - The name or index of the actor for which to retrieve the action. The number, index and name of actors can be retrieved from the parameters of the trial. Return: RecvAction instance - The action of the actor in the sample.","s":"get_action(self, actor)","u":"/docs/reference/python","h":"#get_actionself-actor","p":812},{"i":1021,"t":"Retrieve the observation destined for the actor in the sample. Can be None (specifically for out-of-sync samples). Parameters: actor: str or int - The name or index of the actor for which to retrieve the observation. The number, index and name of actors can be retrieved from the parameters of the trial. Return: RecvObservation instance - The observation of the actor in the sample. Can be None (specifically for out-of-sync samples).","s":"get_observation(self, actor)","u":"/docs/reference/python","h":"#get_observationself-actor","p":812},{"i":1023,"t":"Generator method to iterate over all the rewards in the sample. Parameters: None Return: generator(RecvReward instance) - A generator for the rewards in the sample.","s":"all_rewards(self)","u":"/docs/reference/python","h":"#all_rewardsself","p":812},{"i":1025,"t":"Generator method to iterate over all the messages in the sample. Parameters: None Return: generator(RecvMessage instance) - A generator for the messages in the sample.","s":"all_messages(self)","u":"/docs/reference/python","h":"#all_messagesself","p":812},{"i":1027,"t":"Class containing information about a model name stored in the ModelRegistry. name: str - The model name. properties: dict{str:str} - Custom information associated with the model name (not specific to any iteration).","s":"class ModelInfo","u":"/docs/reference/python","h":"#class-modelinfo","p":812},{"i":1029,"t":"Class containing information specific to a model iteration stored in the Model Registry. model_name: str - The name of the model. iteration: int - The iteration number. timestamp: int - When the iteration was stored in the Model Registry. Unix epoch time in nanoseconds. hash: str - SHA 256 hash (encoded in base64 with standard 64 characters with padding) of the iteration's data. size: int - Size (in bytes) of the iteration's data. stored: bool - Whether the model is stored, as opposed to just being published (and therefore transient). properties: dict{str:str} - Custom information associated with the iteration.","s":"class ModelIterationInfo","u":"/docs/reference/python","h":"#class-modeliterationinfo","p":812},{"i":1031,"t":"Class making the latest model iteration, from the Model Registry, available on-demand. name: str - The name of the model.","s":"class LatestModel","u":"/docs/reference/python","h":"#class-latestmodel","p":812},{"i":1033,"t":"Method to return the latest iteration that has been downloaded in the background. This method may wait for the first iteration to be available. Once an iteration is available, this method will not be blocking. Subsequent calls to this method may return different results according to the availability of new data. Parameters: None Return: tuple(data, ModelIterationInfo instance) - The data can either be a bytes string or a user object depending on is_deserialized(). The second tuple item is a ModelIterationInfo instance containing the information of the iteration represented by the data.","s":"async get(self)","u":"/docs/reference/python","h":"#async-getself","p":812},{"i":1035,"t":"Method to check if the model iteration is deserialized automatically. Parameters: None Return: bool - True if the model is deserialized automatically in the background, in which case the data (returned by get) is a user object. This user object is derived by calling deserialize_func (parameter of ModelRegistry.track_latest_model) with the raw bytes from the Model Registry. False if the data (returned by get) is the raw bytes retrieved from the Model Registry.","s":"is_deserialized(self)","u":"/docs/reference/python","h":"#is_deserializedself","p":812},{"i":1037,"t":"Method to check if an iteration is available. Parameters: None Returns: bool - True if an iteration is available, an thus get will not block. False otherwise.","s":"is_available(self)","u":"/docs/reference/python","h":"#is_availableself","p":812},{"i":1039,"t":"Method to wait for an iteration to be available. Parameters: None Returns: None","s":"async wait_for_available(self)","u":"/docs/reference/python","h":"#async-wait_for_availableself","p":812},{"i":1041,"t":"Method to wait for a newer iteration to be available. Once this method returns, the newer iteration can be retrieved with get. Parameters: iteration: int - Strict lower bound for awaited model iteration. I.e. the method will wait for a model iteration that is newer, and not equal, to this. Returns: None","s":"async wait_for_newer(self, iteration)","u":"/docs/reference/python","h":"#async-wait_for_newerself-iteration","p":812},{"i":1043,"t":"Enum representing the various data in a DatastoreActorData instance UNKNOWN: Should not be used. OBSERVATION: The observation. ACTION: The action. REWARD: The aggregated reward. RECEIVED_REWARDS: All the individual rewards received by the actor (all_received_rewards method) SENT_REWARDS: All the individual rewards sent by the actor (all_sent_rewards method) RECEIVED_MESSAGES: All the messages received by the actor (all_received_messages method) SENT_MESSAGES: All the messages sent by the actor (all_received_messages method)","s":"class cogment.DatastoreFields(enum.Enum)","u":"/docs/reference/python","h":"#class-cogmentdatastorefieldsenumenum","p":812},{"i":1045,"t":"Class containing the information of a trial stored in the Datastore. trial_id: str - The trial id for this trial. user_id: str - The user ID for the trial (provided on trial start). trial_state: cogment.TrialState instance - The last (or current) state of the trial. This will change over time if not TrialState.ENDED. sample_count: int - The number of samples currently stored for this trial. This will change over time if the trial state is not TrialState.ENDED. parameters: cogment.TrialParameters instance - The parameters for the trial.","s":"class DatastoreTrialInfo","u":"/docs/reference/python","h":"#class-datastoretrialinfo","p":812},{"i":1047,"t":"Parameters: None Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-6","p":812},{"i":1049,"t":"Class containing the data of a trial sample (typically representing all the data during a trial tick). trial_id: str - The id of the trial the data in the sample relates to. trial_state: cogment.TrialState instance - The state of the trial at the end of the sample period. Note that the last sample (when trial_state is TrialState.ENDED) may have None data (e.g. observation, action, etc) if the trial ended on an error or was hard terminated. tick_id: int - The step/tick at which the data in the sample was obtained. timestamp: int - Unix style Epoch timestamp of the start of the step/tick (in nanoseconds since 00:00:00 UTC Jan 1, 1970). actors_data: dict{str:DatastoreActorData instance} - Dictionary of all actors data included in the sample, indexed by actor name.","s":"class DatastoreSample","u":"/docs/reference/python","h":"#class-datastoresample","p":812},{"i":1051,"t":"Parameters: None Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-7","p":812},{"i":1053,"t":"Class containing the data related to an actor in a sample. name: str - Name of the actor. observation: protobuf class instance - Observation received by the actor. The class of the observation is defined as observation space for the actor class. This is specified in section actor_classes:observation:space in the spec file for the appropriate actor class. Can be None if there is no data. observation_serialized: bytes - Observation received by the actor in serialized (class independent) form. This can be retrieved even without specs (see has_specs()). Can be None if there is no data. action: protobuf class instance - Action from the actor. The class of the action is defined as action space for the specific actor in the section actor_classes:action:space in the spec file for the appropriate actor class. Can be None if there is no data. action_serialized: bytes - Action from the actor in serialized (class independent) form. This can be retrieved even without specs (see has_specs()). Can be None if there is no data. reward: float - The aggregated reward received by the actor in the sample.","s":"class DatastoreActorData","u":"/docs/reference/python","h":"#class-datastoreactordata","p":812},{"i":1055,"t":"Parameters: None Return: bool - True if the specs are known by this instance. False otherwise. Specs will be known if the top level Cogment Context has specs.","s":"has_specs(self)","u":"/docs/reference/python","h":"#has_specsself-8","p":812},{"i":1057,"t":"Generator method to iterate over all the individual rewards received by the actor in the sample. The aggregated reward is calculated from these. Parameters: None Return: generator(DatastoreReward instance) - A generator for the individual actor rewards received.","s":"all_received_rewards(self)","u":"/docs/reference/python","h":"#all_received_rewardsself","p":812},{"i":1059,"t":"Generator method to iterate over all the individual rewards sent by the actor in the sample. Parameters: None Return: generator(DatastoreReward instance) - A generator for the individual actor rewards sent.","s":"all_sent_rewards(self)","u":"/docs/reference/python","h":"#all_sent_rewardsself","p":812},{"i":1061,"t":"Generator method to iterate over all the messages received by the actor in the sample. Parameters: None Return: generator(DatastoreMessage instance) - A generator for the messages received.","s":"all_received_messages(self)","u":"/docs/reference/python","h":"#all_received_messagesself","p":812},{"i":1063,"t":"Generator method to iterate over all the messages sent by the actor in the sample. Parameters: None Return: generator(DatastoreMessage instance) - A generator for the messages sent.","s":"all_sent_messages(self)","u":"/docs/reference/python","h":"#all_sent_messagesself","p":812},{"i":1065,"t":"Class containing the data for an individual reward in the Datastore. value: float - Value of the reward. confidence: float - Confidence level of the reward value. sender: str - Name of the sender of the reward. receiver: str - Name of the receiver of the reward. The string could contain wildcard characters to represent multiple receivers intended by the sender. user_data: google.protobuf.Any instance - Data for a user-specific reward format. Can be None if no specific data was provided. The class enclosed in google.protobuf.Any is of the type set by the sender; it is the responsibility of the receiver to manage the data received (i.e. determine the type and unpack the data).","s":"class DatastoreReward","u":"/docs/reference/python","h":"#class-datastorereward","p":812},{"i":1067,"t":"Class containing the data of a message in the Datastore. sender: str - Name of the sender of the message. receiver: str - Name of the receiver of the message. The string could contain wildcard characters to represent multiple receivers intended by the sender. payload: google.protobuf.Any instance - Data for a received message. The class enclosed in google.protobuf.Any is of the type set by the sender; It is the responsibility of the receiver to manage the data received (i.e. determine the type and unpack the data). Can be None if there is no data.","s":"class DatastoreMessage","u":"/docs/reference/python","h":"#class-datastoremessage","p":812},{"i":1069,"t":"WIP This page is a work in progress","s":"Installation","u":"/docs/reference/python-enterprise/installation","h":"","p":1068},{"i":1071,"t":"Cogment Enterprise This is part of the Cogment Enterprise, AI Redefined's commercial offering.","s":"Runner","u":"/docs/reference/python-enterprise/runner","h":"","p":1070},{"i":1074,"t":"The use of this module requires Cogment Python SDK >= 2.8.0. It uses Python's asyncio library and as such should be run in an asyncio.Task. This documentation assumes some familiarity with the asyncio library of Python (see Python documentation). E.g. import asyncioasyncio.run(MyMainFunction())","s":"asyncio","u":"/docs/reference/python-enterprise/runner","h":"#asyncio","p":1070},{"i":1076,"t":"This module uses the cogment.enterprise logger, and the default log level is INFO. E.g. to change the log level to WARNING: import cogment_enterpriseimport logginglogging.getLogger(\"cogment.enterprise\").setLevel(logging.WARNING) Or set the environment variable COGMENT_ENTERPRISE_LOG_LEVEL to one of the values: off, error, warning, info, debug, trace. The logging works the same as Cogment Python SDK logging (see Cogment Python SDK documentation).","s":"Logging","u":"/docs/reference/python-enterprise/runner","h":"#logging","p":1070},{"i":1078,"t":"This module is designed to work without any trial specifications (i.e. cog_settings), but is easier to use if the specification are available. If the specifications are not provided, some internal object deserializations will not happen (e.g. sample.observation), and special serialized versions will have to be used (e.g. sample.observation_serialized). Helper functions are provided for deserializing the various defined objects in the specifications (see below). Objects normally received as google.protobuf.Any will still be deserialized to such an object as it does not depend on the specification of the trial.","s":"Trial Specifications","u":"/docs/reference/python-enterprise/runner","h":"#trial-specifications","p":1070},{"i":1080,"t":"The main module of the Runner SDK is cogment_enterprise.runner, and most enterprise scripts will start with a cogment_enterprise.runner.TrialRunner.","s":"Top-level import","u":"/docs/reference/python-enterprise/runner","h":"#top-level-import","p":1070},{"i":1083,"t":"This is the name of the trial property where the batch ID is stored. Each trial started by a batch will have this property. batch_id = trial_parameters.properties[cogment_enterprise.runner.BATCH_ID_PROPERTY]","s":"cogment_enterprise.runner.BATCH_ID_PROPERTY","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerbatch_id_property","p":1070},{"i":1085,"t":"This is the name of the trial property where the index of the trial in the batch is stored. Each trial started by a batch will have this property. trial_index_in_batch = trial_parameters.properties[cogment_enterprise.runner.BATCH_TRIAL_INDEX_PROPERTY]","s":"cogment_enterprise.runner.BATCH_TRIAL_INDEX_PROPERTY","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerbatch_trial_index_property","p":1070},{"i":1087,"t":"This is the name of the trial property that will be set on the last trial of the batch. The property value is empty, it's presence indicates that this is the last trial of the batch. Only one trial in a batch may have this property. Note that there may not be a trial with this property if the batch was stopped prematurely. last_trial = cogment_enterprise.runner.BATCH_LAST_TRIAL_PROPERTY in trial_parameters.properties","s":"cogment_enterprise.runner.BATCH_LAST_TRIAL_PROPERTY","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerbatch_last_trial_property","p":1070},{"i":1089,"t":"Function to deserialize raw data into a Python class instance. The data can only be deserialized by knowing the protobuf message it represents. It can be done manually if one knows the protobuf message represented. This function simplifies deserialization of messages related to a Cogment project with the trial spec module cog_settings. Parameters: serialized_data: bytes - Raw data received. actor_class: str - Name of the class of the actor to which this data relates. This information is necessary to find the proper message type in the spec. cog_settings: module - Specification module associated with the trial from which the data relates. Return: protobuf class instance - Action from an actor of type actor_class. The class of the action is defined as action space for the specific actor class in the section actor_classes:action:space in the spec file (e.g. cog_settings). None if serialized_data is None.","s":"cogment_enterprise.runner.deserialize_action(serialized_data, actor_class, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_actionserialized_data-actor_class-cog_settings","p":1070},{"i":1091,"t":"Function to deserialize raw data into a Python class instance. The data can only be deserialized by knowing the protobuf message it represents. It can be done manually if one knows the protobuf message represented. This function simplifies deserialization of messages related to a Cogment project with the trial spec module cog_settings. Parameters: serialized_data: bytes - Raw data received. actor_class: str - Name of the class of the actor to which this data relates. This information is necessary to find the proper message type in the spec. cog_settings: module - Specification module associated with the trial from which the data relates. Return: protobuf class instance - Observation for an actor of type actor_class. The class of the observation is defined as observation space for the specific actor class in the section actor_classes:observation:space in the spec file (e.g. cog_settings). None if serialized_data is None.","s":"cogment_enterprise.runner.deserialize_actor_observation(serialized_data, actor_class, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_actor_observationserialized_data-actor_class-cog_settings","p":1070},{"i":1093,"t":"Function to deserialize raw data into a Python class instance. The data can only be deserialized by knowing the protobuf message it represents. It can be done manually if one knows the protobuf message represented. This function simplifies deserialization of messages related to a Cogment project with the trial spec module cog_settings. Parameters: serialized_data: bytes - Raw data received. actor_class: str - Name of the class of the actor to which this data relates. This information is necessary to find the proper message type in the spec. cog_settings: module - Specification module associated with the trial from which the data relates. Return: protobuf class instance - Config for an actor of type actor_class. The class of the config is defined as config type for the specific actor class in the section actor_classes:config_type in the spec file (e.g. cog_settings). None if serialized_data is None.","s":"cogment_enterprise.runner.deserialize_actor_config(serialized_data, actor_class, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_actor_configserialized_data-actor_class-cog_settings","p":1070},{"i":1095,"t":"Function to deserialize raw data into a Python class instance. The data can only be deserialized by knowing the protobuf message it represents. It can be done manually if one knows the protobuf message represented. This function simplifies deserialization of messages related to a Cogment project with the trial spec module cog_settings. Parameters: serialized_data: bytes - Raw data received. cog_settings: module - Specification module associated with the trial from which the data relates. Return: protobuf class instance - Config for the environment. The class of the config is defined as config type in the section environment:config_type in the spec file (e.g. cog_settings). None if serialized_data is None.","s":"cogment_enterprise.runner.deserialize_environment_config(serialized_data, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_environment_configserialized_data-cog_settings","p":1070},{"i":1097,"t":"Function to deserialize raw data into a Python class instance. The data can only be deserialized by knowing the protobuf message it represents. It can be done manually if one knows the protobuf message represented. This function simplifies deserialization of messages related to a Cogment project with the trial spec module cog_settings. Parameters: serialized_data: bytes - Raw data received. cog_settings: module - Specification module associated with the trial from which the data relates. Return: protobuf class instance - Config for the trial. The class of the config is defined as config type in the section trial:config_type in the spec file (e.g. cog_settings). None if serialized_data is None.","s":"cogment_enterprise.runner.deserialize_trial_config(serialized_data, cog_settings)","u":"/docs/reference/python-enterprise/runner","h":"#cogment_enterpriserunnerdeserialize_trial_configserialized_data-cog_settings","p":1070},{"i":1100,"t":"Parameters: user_id: str - Identifier for the user of this context. cog_settings: module - Settings module associated with trials that will be run (cog_settings namespace). asyncio_loop: asyncio.Loop - For special purpose implementations. directory_endpoint: Endpoint instance - Grpc endpoint (i.e. starting with \"grpc://\") to access the directory. The directory will be used to inquire discovery endpoints, and to register the services for discovery. If no endpoint is provided, a check for the environment variable COGMENT_DIRECTORY_ENDPOINT will be made and if it exists, it will be used as the URL of a basic endpoint. directory_auth_token: str - Authentication token for access to the directory. This token will be registered with the services, and must match registered tokens when inquiring the directory. If no token is provided, a check for the environment variable COGMENT_DIRECTORY_AUTHENTICATION_TOKEN will be made and if it exists, it will be used as the token. orchestrator_endpoint: Endpoint instance - Details of the connection to the Orchestrator. If not provided, the directory will be inquired. Only needed for running batches, not for training. datastore_endpoint: Endpoint instance - Details of the connection to the Datastore. If not provided, the directory will be inquired if necessary. This will be used as the datalog endpoint of the trials started by the batch. And it will be used as the source of samples for training. model_registry_endpoint: Endpoint instance - Details of the connection to the Model Registry. If not provided, the directory will be inquired if necessary. Only needed for training, not running batches.","s":"__init__(self, user_id, cog_settings=None, asyncio_loop=None, directory_endpoint=None, directory_auth_token=None, orchestrator_endpoint=None, datastore_endpoint=None, model_registry=None)","u":"/docs/reference/python-enterprise/runner","h":"#__init__self-user_id-cog_settingsnone-asyncio_loopnone-directory_endpointnone-directory_auth_tokennone-orchestrator_endpointnone-datastore_endpointnone-model_registrynone","p":1070},{"i":1102,"t":"Returns the Controller used by the TrialRunner. Parameters: None Return: cogment.Controller instance - An instance of cogment.Controller class used to manage trials.","s":"async get_controller(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-get_controllerself","p":1070},{"i":1104,"t":"Returns the Datastore used by the TrialRunner. Parameters: None Return: cogment.Datastore instance - Datastore.","s":"async get_datastore(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-get_datastoreself","p":1070},{"i":1106,"t":"Returns the Model Registry used by the TrialRunner. Parameters: None Return: cogment.ModelRegistry instance - Model Registry.","s":"async get_model_registry(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-get_model_registryself","p":1070},{"i":1108,"t":"Method to start a batch of trials. Parameters: nb_trials: int - The number of trials to run. nb_parallel_trials: int - The number of trials to run in parallel. Must be <= nb_trials. id: str - ID of the batch. This will be added to the properties of the trials that are started by the batch. This should be unique in the Datastore, otherwise there could be a clash of trial IDs (a mix of trials from different batches could also be used by the BatchTrainer). If None, an ID will be chosen by the system. pre_trial_callback: async func(BatchTrialInfo instance) -> cogment.TrialParameters - This Callbacks function will be called before any new trial is started. post_trial_callback: async func(sample, trial_parameters, model_registry) - This Callbacks function will be called after the end of a trial. Return: TrialBatch instance - An instance of the TrialBatch class.","s":"async run_simple_batch(self, nb_trials, nb_parallel_trials=1, id=None, pre_trial_callback=None, post_trial_callback=None)","u":"/docs/reference/python-enterprise/runner","h":"#async-run_simple_batchself-nb_trials-nb_parallel_trials1-idnone-pre_trial_callbacknone-post_trial_callbacknone","p":1070},{"i":1110,"t":"Method to start training on a batch of trials with a per-sample callback. Parameters: batch: TrialBatch instance - The batch to train on. This will be used to identify the trials that are part of the batch and retrieve only the samples from these trials. sampler_callback: async func(cogment.DatastoreSample, cogment.TrialParameters, cogment.ModelRegistry) -> bool - This Callbacks function will be called for every sample in the batch. actor_names: list[str] - Names of actors to include in the samples. If None, all actors will be included. max_trial_wait: int - Maximum number of seconds to wait for new trials to be started by the batch. Since this depends on the running time of trials, this should be longer than the expected max trial duration. If None, then 86400 seconds (24 hours) will be used. Return: BatchTrainer instance - An instance of the BatchTrainer class.","s":"async run_simple_training(self, batch, sampler_callback, actor_names=None, max_trial_wait=None)","u":"/docs/reference/python-enterprise/runner","h":"#async-run_simple_trainingself-batch-sampler_callback-actor_namesnone-max_trial_waitnone","p":1070},{"i":1112,"t":"Method to start training on a batch of trials. Parameters: batch: TrialBatch instance - The batch to train on. This will be used to identify the trials that are part of the batch and retrieve only the samples from these trials. trial_callback: async func(cogment.DatastoreSample, cogment.TrialParameters, cogment.ModelRegistry) -> bool - This Callbacks function will be called for every trial in the batch. actor_names: list[str] - Names of actors to include in the samples. If None, all actors will be included. max_trial_wait: int - Maximum number of seconds to wait for new trials to be started by the batch. Since this depends on the running time of trials, this should be longer than the expected max trial duration. If None, then 86400 seconds (24 hours) will be used. Return: BatchTrainer instance - An instance of the BatchTrainer class.","s":"async run_simple_trial_training(self, batch, trial_callback, actor_names=None, max_trial_wait=None)","u":"/docs/reference/python-enterprise/runner","h":"#async-run_simple_trial_trainingself-batch-trial_callback-actor_namesnone-max_trial_waitnone","p":1070},{"i":1114,"t":"Class to run a batch of related trials.","s":"class TrialBatch","u":"/docs/reference/python-enterprise/runner","h":"#class-trialbatch","p":1070},{"i":1116,"t":"The parameters are the same as provided to run_simple_batch. Parameters: id: str - ID of the batch. This will be added to the properties of the trials that are started by the batch. This should be unique in the Datastore, otherwise there could be a clash of trial IDs (a mix of trials from different batches could also be used by the BatchTrainer). If None, an ID will be chosen by the system. controller: cogment.Controller instance - Controller used to start trials. nb_trials: int - Number of trials to run. pre_trial_callback: async func(BatchTrialInfo instance) -> cogment.TrialParameters - This Callbacks function will be called before any new trial is started. If None, then the parameters for the trials will come from the Orchestrator defaults and pre-trial hooks (see Cogment Orchestrator documentation). In which case the BatchTrainer cannot work with this batch (because the necessary trial properties cannot be set). post_trial_callback: async func(sample, trial_parameters, model_registry) - This Callbacks function will be called after the end of a trial. If None, then no call will happen at the end of trials. datalog_endpoint: cogment.Endpoint instance - Details of the connection to the Datalog that will be set for the trials.","s":"init(self, id, controller, nb_trials, pre_trial_callback, post_trial_callback, datalog_endpoint)","u":"/docs/reference/python-enterprise/runner","h":"#initself-id-controller-nb_trials-pre_trial_callback-post_trial_callback-datalog_endpoint","p":1070},{"i":1118,"t":"Method to start the batch. At least one trial must be started for the batch to run. This will start the trials in parallel. The batch will maintain active the number of trials started by this method by starting a new trial when one ends. nb_trials: int - Number of trials to start that will be running in parallel. Any new calls of this method on a running batch will just add to the number of trials running in parallel. Return: None","s":"start_trials(self, nb_trials)","u":"/docs/reference/python-enterprise/runner","h":"#start_trialsself-nb_trials","p":1070},{"i":1120,"t":"Method to pause the running of the batch. It stops any new trial from starting, but does not stop currently running trials. Even if all running trials end, the batch is not considered done until it is resumed, stopped or terminated. Parameters: None Return: None","s":"pause(self)","u":"/docs/reference/python-enterprise/runner","h":"#pauseself","p":1070},{"i":1122,"t":"Method to restart a batch that was paused. It resumes the starting of new trials in the batch. Parameters: None Return: None","s":"resume(self)","u":"/docs/reference/python-enterprise/runner","h":"#resumeself","p":1070},{"i":1124,"t":"Method to stop the batch. It stops new trials from starting, and currently running trials continue to their normal end. Once all trials have ended, the batch is done. Parameters: None Return: None","s":"stop(self)","u":"/docs/reference/python-enterprise/runner","h":"#stopself","p":1070},{"i":1126,"t":"Method to terminate the batch. It stops new trials from starting, and currently running trials are terminated. The batch is then considered done. Parameters: hard: bool - If True the trials are sent a \"hard\" terminate, otherwise they are sent a \"soft\" terminate (see Python Documentation \"Controller.terminate_trial\"). Return: None","s":"terminate(self, hard=False)","u":"/docs/reference/python-enterprise/runner","h":"#terminateself-hardfalse","p":1070},{"i":1128,"t":"Method to inquire whether the batch is done or not. Parameters: None Return: bool - True if the batch is still running. I.e. there are still trials running or it is paused. False otherwise.","s":"is_running(self)","u":"/docs/reference/python-enterprise/runner","h":"#is_runningself","p":1070},{"i":1130,"t":"Method to inquire the number of trials run so far. Parameters: None Return: int - Number of trials that were run (and ended) so far in the batch.","s":"nb_trials_run(self)","u":"/docs/reference/python-enterprise/runner","h":"#nb_trials_runself","p":1070},{"i":1132,"t":"Method to wait for the batch to be done. The batch will end normally when all trials have run and ended. The batch can also be stopped, terminated, or encounter an error to become done. Parameters: timeout: float - Maximum time to wait in seconds. Return: bool - True if the batch ended normally with the last trial tagged as such. False otherwise. None if timed out.","s":"async wait(self, timeout)","u":"/docs/reference/python-enterprise/runner","h":"#async-waitself-timeout","p":1070},{"i":1134,"t":"Class to help train a model on a specific batch of trials.","s":"class BatchTrainer","u":"/docs/reference/python-enterprise/runner","h":"#class-batchtrainer","p":1070},{"i":1136,"t":"Parameters: batch_spec: str or dict{str:str} or list[str] or TrialBatch instance - If a string, it represents a batch ID of the trials to use for training. If a dictionary, it represents the properties of the trials to use for training. If a list, it represents the list of trial IDs to use for training. If an instance of TrialBatch, then the trials started by that batch will be used for training. For anything other than a TrialBatch instance, there is no reliable way to know if an ongoing batch has ended, therefore the trainer will have to manually be stopped or use max_trial_wait to stop automatically. datastore: cogment.Datastore instance - The datastore used to retrieve the samples. model_registry: cogment.ModelRegistry instance - The registry that will be passed to the callbacks. trial_callback: same parameter as provided to run_simple_training. max_trial_wait: int - Maximum number of seconds to wait for a new trial. If batch_spec is an instance of TrialBatch then this wait is for new trials to be started by the batch. Otherwise, this wait if for trials that match batch_spec to appear in the datastore (If set to 0, then only trials already in the datastore will be used).","s":"__init__(self, batch_spec, datastore, model_registry, trial_callback, max_trial_wait)","u":"/docs/reference/python-enterprise/runner","h":"#__init__self-batch_spec-datastore-model_registry-trial_callback-max_trial_wait","p":1070},{"i":1138,"t":"Method to start training. Parameters: Same as cogment.Datastore.all_samples of the same name. These parameters will be passed as-is to the datastore all_sample method. Return: None","s":"start(self, actor_names=[], actor_classes=[], actor_implementations=[], fields=[])","u":"/docs/reference/python-enterprise/runner","h":"#startself-actor_names-actor_classes-actor_implementations-fields","p":1070},{"i":1140,"t":"Method to terminate training. The callback tasks will be cancelled. Parameters: None Return: None","s":"terminate(self)","u":"/docs/reference/python-enterprise/runner","h":"#terminateself","p":1070},{"i":1142,"t":"Method to stop training. Stops retrieving trials from the Datastore. All trials already started will continue training. Parameters: None Return: None","s":"async stop(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-stopself","p":1070},{"i":1144,"t":"Method to inquire whether the training is done or not. Parameters: None Return: bool - True if the training is still running. The training has stopped running when no more samples are being retrieved and all callbacks have returned.","s":"is_running(self)","u":"/docs/reference/python-enterprise/runner","h":"#is_runningself-1","p":1070},{"i":1146,"t":"Method to wait for the training to be done. The training will end normally when all trials of the batch have started processing and all callbacks have returned. The training can also be stopped, or encounter an error to become done. Parameters: timeout: float - Maximum time to wait in seconds. Return: bool - False if timed out, True otherwise. If True, then is_running will also return True.","s":"async wait(self, timeout)","u":"/docs/reference/python-enterprise/runner","h":"#async-waitself-timeout-1","p":1070},{"i":1148,"t":"Method to set the number of trials to train in parallel. Parameters: nb_trials: int - Number of trials to train in parallel (>0). If None, no limit will be enforced and all batch trial data will be processed as it becomes available. Default is 1 (i.e. no parallelism, only one trial at a time). Return: None","s":"set_nb_parallel_trials(self, nb_trials)","u":"/docs/reference/python-enterprise/runner","h":"#set_nb_parallel_trialsself-nb_trials","p":1070},{"i":1150,"t":"batch_id: str - ID of the batch trial_index: int - The index of the trial in the batch. Generally the order the trials were started, and unique in the batch ([0, nb_trials[). trial_info: cogment.DatastoreTrialInfo - The running trial information. May not always be present.","s":"class BatchTrialInfo","u":"/docs/reference/python-enterprise/runner","h":"#class-batchtrialinfo","p":1070},{"i":1152,"t":"Class to help train a model on a specific batch of trials. trial_id: str - ID of the trial. parameters: cogment.TrialParameters instance - Parameters of the trial. model_registry: cogment.ModelRegistry instance - Common model registry for the whole batch being trained. The TrialRunner argument model_registry_endpoint is used to retrieve this model registry.","s":"class TrainerTrialSession","u":"/docs/reference/python-enterprise/runner","h":"#class-trainertrialsession","p":1070},{"i":1154,"t":"Method to retrieve all samples from the trial. Parameters: None Return: generator(cogment.DatastoreSample instance) - A generator for the trial samples that arrive.","s":"async all_samples(self)","u":"/docs/reference/python-enterprise/runner","h":"#async-all_samplesself","p":1070},{"i":1157,"t":"These functions are passed to the TrialRunner.run_simple_batch or TrialRunner.run_simple_training methods and will be called at specific times to request information to the user or provide information to the user. They can be defined and used in a number of ways. Here we take the pre_trial_callback as an example, but the other callbacks are similar, except for parameters and return values: async def my_pre_trial_callback(info: BatchTrialInfo): trial_params = cogment.TrialParameters() # ... Fill in the parameters here return trial_paramsrunner = TrialRunner(1, 1, None, my_pre_trial_callback) Sometimes it is more convenient for the callback to be a method of a class in order to re-use data between calls, or share data with other parts of the program (or other callbacks), in this case it could look like this: class MyBatchData: async def my_pre_trial_callback(self, info: BatchTrialInfo): trial_params = cogment.TrialParameters() # ... Fill in the parameters here return trial_paramsmy_data = MyBatchData()runner = TrialRunner(1, 1, None, my_data.my_pre_trial_callback) Although rare, it may be inconvenient sometimes to use a class for sharing data, in which case the Python functools module can be used: import functoolsasync def my_function(my_data, info: BatchTrialInfo): trial_params = cogment.TrialParameters() # ... Fill in the parameters here return trial_paramsshared_data = #...actual_callback = functools.partial(my_function, shared_data)runner = TrialRunner(1, 1, None, actual_callback)","s":"Use","u":"/docs/reference/python-enterprise/runner","h":"#use","p":1070},{"i":1159,"t":"This function is passed to the TrialRunner.run_simple_batch method and will be called before any trial is started to define the trial parameters. It is an asyncio coroutine. e.g.: async def my_pre_trial_callback(info: BatchTrialInfo) -> cogment.TrialParameters: trial_params = cogment.TrialParameters() # ... Fill in the parameters here return trial_params Parameters Received: info: BatchTrialInfo instance - Partially filled info of the trial to start; it does not contain trial_info. Expected Return: None or tuple(str, cogment.TrialParameters instance) - The first item of the tuple is the requested trial ID. If the trial ID is None, it will be automatically created using the batch ID and the trial index. The second item of the tuple is the trial parameters that must be fully populated to start the new trial. If the return value is None (instead of a tuple), the trial will not start and the batch will stop (i.e. not start any new trial, but ongoing trials will continue). In case of exceptions: Exceptions raised by the callback will do the same as if None was returned. Once the parameters are received by the TrialBatch, some data will be added, and some will be overwritten before starting the trial. These are the TrialParameters attributes changed: properties: Some properties will be added to the existing properties (see Module Attributes). If the property names clash, the user properties will be overwritten. In general, do not start property names with an underscore to prevent such clashes. datalog_endpoint: This attribute of the trial parameters will be overwritten. If the datastore_endpoint argument of TrialRunner is provided, it will be used. If datastore_endpoint was not provided, or it was None, then the directory will be used to find an appropriate datalog/datastore. The same datastore must be used by both the TrialBatch (as a datalog) and BatchTrainer (as a datastore), so the endpoint should resolve to the same datastore locally and at the Orchestrator (i.e. ideally use the same directory). datalog_exclude_fields: This attribute will be reset (i.e. not excluding any fields from the datalog).","s":"Pre-Trial Callback","u":"/docs/reference/python-enterprise/runner","h":"#pre-trial-callback","p":1070},{"i":1161,"t":"This function is passed to the TrialRunner.run_simple_batch method and will be called after a trial has ended normally (i.e. was not terminated). It is an asyncio coroutine. e.g.: async def my_post_trial_callback(info): # ... Do cleanup, tracking, etc Parameters Received: info: BatchTrialInfo instance - The full info of the trial that ended. Expected Return: None In case of exceptions: All exceptions raised by the callback will be ignored.","s":"Post-Trial Callback","u":"/docs/reference/python-enterprise/runner","h":"#post-trial-callback","p":1070},{"i":1163,"t":"This function is passed to the TrialRunner.run_simple_trainer method and will be called for each sample of the trials being run in the batch. This is asynchronous with the actual running of the trials and uses the Cogment Datastore to retrieve the samples. It is an asyncio coroutine. e.g.: async def my_sampler_callback(sample, trial_parameters, model_registry): # ... Train model Parameters Received: sample: cogment.DatastoreSample instance - Trial sample received. trial_parameters: cogment.TrialParameters instance - Parameters of the trial from which the sample came from. model_registry: cogment.ModelRegistry instance - Common model registry for the whole batch being trained. The TrialRunner argument model_registry_endpoint is used to retrieve this model registry. Expected Return: None or bool - If None or True, the training will continue normally. If a bool and False, the sampler callback will stop being called, and the BatchTrainer will stop. In case of exceptions: If the callback raises an exception, the BatchTrainer will stop at the next sample.","s":"Sampler Callback","u":"/docs/reference/python-enterprise/runner","h":"#sampler-callback","p":1070},{"i":1165,"t":"This function is passed to the TrialRunner.run_simple_trial_trainer method and will be called for each trial of the batch. This is asynchronous with the actual running of the trials and uses the Cogment Datastore to retrieve the trial data and samples. It is an asyncio coroutine. e.g.: async def my_trial_callback(session): async for sample in session.all_samples(): # ... process sample Parameters Received: session: TrainerTrialSession instance - The session for the trial. Expected Return: None or bool - If None or True, continue processing the batch. If a bool and False, stop the BatchTrainer. In case of exceptions: If the callback raises an exception, the BatchTrainer will stop immediately.","s":"Trial Callback","u":"/docs/reference/python-enterprise/runner","h":"#trial-callback","p":1070}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,7.62,1,2.353,2,3.473,3,3.402,4,1.822,5,4.583,6,3.183,7,5.148,8,5.012,9,4.266,10,5.148,11,7.265,12,4.677,13,6.231,14,4.266,15,3.51,16,5.924,17,3.628,18,5.679,19,5.148,20,7.265,21,7.265,22,5.148,23,6.642,24,4.89,25,7.265,26,3.628,27,6.642,28,2.901]],["t/4",[1,2.132,2,4.723,3,3.716,13,6.805,14,4.659,29,7.935,30,7.935,31,7.935,32,6.805,33,6.805,34,4.821,35,4.266,36,6.805,37,4.738,38,7.254,39,4.266,40,7.935,41,7.935,42,6.203,43,7.254,44,6.47]],["t/6",[0,5.421,1,2.274,33,5.702,37,3.969,38,6.077,45,2.363,46,7.01,47,4.474,48,4.586,49,1.547,50,4.508,51,2.227,52,2.836,53,3.667,54,4.85,55,4.039,56,2.939,57,5.421,58,2.3,59,2.255,60,1.694,61,2.939,62,4.85,63,6.077,64,6.648,65,4.009,66,4.114,67,4.039,68,6.077,69,6.077,70,3.32,71,3.623]],["t/8",[0,7.742,8,4.227,23,5.602,32,7.159,39,3.294,46,7.558,57,4.996,63,7.631,72,10.667,73,6.128,74,4.227,75,8.348,76,7.631,77,3.294,78,3.339,79,3.723,80,8.143,81,6.128,82,4.319,83,4.077,84,6.727,85,5.255,86,6.128,87,5.602,88,3.658,89,5.602,90,4.47,91,4.996,92,5.602,93,2.373,94,4.227,95,3.791,96,3.791,97,6.128,98,5.602]],["t/10",[1,2.26,2,2.502,3,2.451,6,2.292,8,3.61,9,3.073,13,6.413,14,4.39,17,2.614,24,3.522,32,4.488,33,6.413,34,3.18,35,2.814,42,4.091,45,2.657,46,6.744,47,3.522,49,0.768,57,4.267,61,2.313,62,3.818,76,4.784,98,4.784,99,4.267,100,6.836,101,5.635,102,5.233,103,5.233,104,3.818,105,6.413,106,4.784,107,4.784,108,4.784,109,8.725,110,4.488,111,4.784,112,3.502,113,4.091,114,4.784,115,4.784,116,3.944,117,3.024,118,5.233,119,5.233,120,2.852,121,1.953,122,5.233,123,4.784,124,3.024,125,1.72,126,3.818,127,5.233,128,4.784,129,4.267,130,3.238,131,5.233,132,3.369,133,4.091,134,2.451,135,2.852]],["t/12",[1,2.026,47,3.418,49,1.074,67,4.446,125,1.669,136,4.141,137,4.141,138,5.049,139,5.079,140,5.079,141,3.341,142,1.746,143,1.74,144,5.079,145,3.504,146,2.731,147,3.23,148,2.561,149,2.48,150,4.356,151,3.828,152,0.626,153,2.946,154,4.643,155,5.079,156,3.97,157,3.614,158,3.97,159,4.643,160,3.032,161,3.97,162,3.599,163,3.935,164,3.499,165,4.229,166,1.793,167,3.327,168,3.97,169,2.89,170,2.536,171,1.342,172,3.828,173,3.705,174,3.97,175,4.356,176,5.079,177,3.599,178,3.341,179,2.332,180,1.425,181,4.356,182,1.735,183,4.356,184,5.079,185,2.847,186,4.356,187,4.643,188,1.712]],["t/14",[1,1.734,67,4.882,116,4.369,134,2.715,141,3.813,142,1.078,143,1.829,147,2.993,152,0.715,163,3.117,164,2.771,166,2.046,168,4.532,177,5.694,180,1.626,189,3.902,190,4.727,191,3.25,192,4.532,193,6.892,194,4.532,195,5.408,196,3.999,197,3.522,198,3.404,199,3,200,5.797,201,4.505,202,5.797,203,5.3,204,3.076,205,2.495,206,8.036,207,3.732,208,5.797,209,3.299,210,5.3,211,5.797,212,2.831,213,1.591,214,4.229,215,3.159,216,3.522,217,3.203,218,4.972,219,4.532,220,5.797,221,4.972,222,3.117,223,3.999]],["t/16",[1,1.402,45,2.309,53,2.408,61,2.872,80,5.572,83,3.173,142,1.819,143,1.826,145,4.482,147,2.109,148,3.117,149,4.241,195,4.373,213,2.384,223,4.482,224,2.821,225,4.736,226,4.337,227,2.836,228,4.274,229,5.079,230,4.285,231,6.498,232,5.572,233,3.59,234,2.555,235,4.897,236,3.754]],["t/18",[1,1.012,3,2.197,49,0.689,50,2.398,59,1.592,60,1.195,83,2.291,121,1.751,125,2.694,142,0.872,143,1.87,147,2.242,148,2.062,152,1.011,153,1.888,160,2.801,164,2.243,165,2.711,166,2.894,167,2.133,177,3.324,180,1.316,190,3.825,193,7.031,195,5.518,199,4.242,213,1.288,214,3.423,216,2.85,217,2.592,225,3.467,230,2.055,237,4.692,238,3.373,239,1.623,240,2.001,241,0.809,242,2.243,243,2.711,244,2.291,245,1.233,246,3.825,247,3.157,248,2.63,249,3.667,250,4.024,251,1.295,252,3.872,253,3.535,254,2.055,255,2.489,256,4.357,257,3.324,258,1.777,259,4.024,260,2.592,261,4.289,262,3.086,263,2.489,264,2.197,265,2.074,266,4.289,267,6.315,268,6.315,269,3.825,270,2.001,271,3.667,272,4.024,273,1.433]],["t/20",[1,1.778,66,5.098,141,5.419,142,2.035,143,1.441,147,2.674,164,3.938,177,5.837,197,5.006,198,4.837,225,3.484,274,7.066,275,8.239,276,6.718,277,4.688,278,6.209,279,6.44]],["t/22",[1,1.392,142,1.936,143,1.704,145,4.449,147,3.523,148,2.909,149,3.149,163,3.467,164,4.131,165,3.726,167,2.932,179,2.961,195,4.34,213,1.77,224,2.8,225,3.655,227,2.106,230,2.825,248,4.844,251,1.78,262,4.241,264,3.02,280,2.46,281,3.157,282,5.895,283,5.258,284,1.84,285,4.151,286,6.449,287,5.895,288,3.85,289,5.895,290,1.601]],["t/24",[1,0.945,28,2.622,49,1.156,70,2.188,124,2.531,125,2.587,130,2.711,141,2.881,142,2.165,143,0.766,146,2.355,147,2.131,148,1.308,152,0.971,164,3.138,165,4.549,166,1.546,167,2.985,178,2.881,180,2.209,182,2.486,188,1.477,197,2.662,198,5.135,205,1.885,224,3.418,227,2.856,238,2.14,245,1.726,248,2.456,255,1.578,277,2.493,278,3.302,291,4.381,292,1.601,293,2.24,294,4.79,295,3.302,296,1.546,297,2.426,298,5.299,299,2.572,300,4.381,301,4.005,302,3.302,303,3.336,304,1.088,305,1.146,306,2.542,307,3.572,308,4.381,309,2.163,310,3.302,311,4.381,312,3.425,313,1.992]],["t/26",[1,1.731,10,3.202,36,5.762,45,1.606,49,0.663,56,1.998,95,4.157,133,3.532,142,1.915,143,1.85,147,3.08,148,2.651,149,2.207,153,1.819,161,5.252,162,3.202,163,4.312,164,3.212,165,3.882,167,3.055,172,3.406,173,3.297,174,3.532,177,3.202,178,2.972,179,2.075,180,1.268,181,3.876,182,1.902,185,2.533,188,2.703,198,2.653,224,1.962,243,3.882,245,1.188,251,1.854,263,2.398,290,1.668,294,3.297,304,1.668,314,2.611,315,3.041,316,5.762,317,1.227,318,2.611,319,3.876,320,2.338,321,4.131,322,3.685,323,2.102,324,2.972,325,3.202,326,2.85,327,2.909,328,4.131,329,3.297,330,4.519,331,4.519,332,3.041,333,4.519,334,4.635,335,2.207,336,1.834,337,1.024]],["t/28",[1,1.933,6,2.981,18,5.32,49,1.314,120,3.709,134,3.187,138,4.695,142,1.665,143,1.566,150,5.837,152,1.312,162,4.822,163,4.815,166,2.402,180,1.909,196,4.695,225,4.233,304,1.689,338,5.129,339,6.222,340,4.381,341,6.806,342,5.32,343,6.806,344,6.806,345,2.596,346,2.955,347,2.83,348,6.806,349,6.222,350,6.222]],["t/30",[1,0.986,2,2.183,3,2.139,4,1.145,6,2.001,28,1.824,34,2.775,47,3.074,59,1.549,60,2.274,117,2.639,130,2.826,142,1.857,143,1.667,147,2.897,148,2.664,149,2.23,151,3.442,152,1.231,153,3.593,166,1.612,191,2.56,199,2.363,209,2.598,212,2.23,213,1.253,217,2.524,222,2.455,225,3.413,227,1.491,234,1.796,238,3.307,239,3.088,240,1.948,248,2.56,252,4.524,256,2.881,264,2.139,270,2.889,280,1.742,284,1.932,293,2.335,297,1.267,304,1.134,306,2.622,347,1.899,351,2.457,352,3.332,353,4.557,354,2.826,355,2.77,356,4.567,357,4.567,358,1.717,359,2.423,360,2.281,361,2.117,362,5.293,363,3.004,364,2.881,365,2.255,366,0.853]],["t/32",[1,2.072,2,2.993,7,4.436,10,4.436,17,4.23,49,1.409,59,2.124,74,4.319,125,3.155,135,3.412,152,0.772,179,4.407,180,1.757,182,1.485,228,4.118,254,3.711,292,3.095,306,3.28,307,5.105,317,1.7,324,4.118,338,4.718,367,6.261,368,4.894,369,8.471,370,5.343,371,6.261,372,6.261,373,2.626,374,3.412,375,6.261,376,2.389,377,5.37,378,4.681,379,6.261,380,2.847,381,5.724]],["t/34",[1,1.83,53,3.143,134,4.821,182,2.011,191,4.755,224,3.683,254,4.509,327,5.46,366,1.585,373,3.557,374,4.622,382,6.392,383,4.389,384,4.501]],["t/36",[19,5.52,28,3.112,45,2.769,152,0.961,180,2.186,182,1.847,207,5.015,251,2.696,253,5.872,288,4.652,315,5.244,385,7.792,386,7.123,387,5.684,388,4.935,389,7.792,390,7.123,391,6.09,392,7.792,393,4.575,394,3.064,395,4.734,396,5.684]],["t/38",[1,1.581,4,1.838,6,3.21,17,3.659,49,1.075,53,2.715,134,3.431,152,1.349,205,4.708,212,3.578,225,3.099,251,2.022,254,3.21,258,2.775,288,4.375,315,4.931,346,3.181,347,3.047,351,2.658,373,3.073,384,3.888,388,3.702,397,3.702,398,6.698,399,2.408,400,3.431]],["t/40",[49,0.857,50,2.984,59,1.98,83,2.85,121,2.178,125,2.653,142,1.085,143,1.618,147,1.894,148,1.742,152,1.142,153,2.349,166,2.06,180,1.637,190,4.759,193,7.938,195,6.229,199,4.789,216,3.546,225,3.915,230,2.557,251,1.611,252,4.526,253,4.398,254,2.557,255,2.909,256,5.093,257,4.135,258,2.21,259,5.006,260,3.225,261,5.336,262,3.839,263,3.097,264,2.733,265,2.58,266,5.336,267,7.381,268,7.381,269,4.759,270,2.49,271,4.562,272,5.006,273,1.783]],["t/42",[1,1.473,12,2.971,17,2.305,34,2.804,49,1.192,59,1.566,61,3.017,82,2.388,83,2.254,93,1.788,101,3.479,121,1.723,125,3.147,141,3.036,142,2.022,145,3.184,147,2.215,148,2.037,152,1.107,153,2.747,163,2.482,167,2.099,171,1.22,182,1.618,190,3.764,197,4.147,199,4.202,224,2.004,251,1.883,252,3.826,253,3.479,254,2.022,255,2.459,256,2.912,257,3.27,258,2.585,264,2.162,270,1.969,284,2.317,306,3.145,307,3.764,337,1.046,338,3.479,346,2.004,378,2.551,380,2.099,383,2.388,388,2.332,393,4.008,395,4.147,401,4.616,402,4.616,403,4.616,404,2.667,405,4.22,406,4.616,407,3.764,408,4.616,409,4.616,410,6.24,411,3.959,412,3.959,413,3.959,414,2.388]],["t/44",[1,2.079,35,3.391,49,1.249,59,2.14,77,3.391,113,6.654,125,2.073,141,4.148,142,1.173,147,2.047,148,1.883,152,1.05,153,2.539,179,2.895,182,2.018,199,3.263,212,3.08,252,3.536,289,5.766,290,1.566,314,3.644,322,5.143,337,1.43,338,4.753,360,3.15,361,2.924,393,4.998,414,3.263,415,3.978,416,3.978,417,3.766,418,4.93,419,5.143,420,4.704,421,2.84,422,4.93,423,3.427,424,2.984,425,4.469,426,2.034,427,4.753,428,3.589]],["t/46",[1,1.988,12,3.407,35,1.783,49,1.352,121,1.238,125,3.144,142,1.779,143,1.155,152,1.216,179,2.43,182,2.082,205,3.545,251,1.461,254,2.319,280,1.266,292,1.212,296,3.099,306,3.705,366,2.265,373,1.391,374,1.808,414,2.739,421,3.954,422,2.593,423,3.316,424,3.897,426,2.972,429,3.317,430,3.317,431,4.628,432,3.854,433,3.862,434,2.42,435,3.191,436,3.003]],["t/48",[1,2.206,10,4.373,49,1.231,70,3.082,93,2.39,126,6.12,138,4.257,156,6.557,157,4.142,158,4.824,160,3.685,199,3.193,221,5.293,229,4.824,243,3.566,254,2.703,277,3.511,290,1.532,322,5.032,324,4.059,325,4.373,336,2.504,373,3.518,374,3.363,376,2.354,384,4.451,431,2.61,437,5.293,438,3.014,439,6.321,440,6.172,441,5.293,442,6.172,443,2.753,444,6.172,445,3.893,446,2.354,447,5.642,448,5.293,449,6.172,450,5.642,451,5.293,452,5.642,453,5.032]],["t/50",[1,1.041,2,2.306,4,1.21,24,3.246,39,2.593,47,3.246,49,1.035,51,1.615,60,1.796,121,1.8,142,1.311,143,1.232,147,3.164,148,2.91,149,5.265,152,0.869,171,1.275,191,2.704,199,2.495,224,2.094,228,3.172,239,1.669,240,3.007,242,2.306,243,2.787,290,1.197,293,2.465,297,1.956,303,1.84,304,1.75,305,1.261,323,2.867,324,3.172,325,3.417,337,1.093,365,2.382,366,0.901,397,2.437,404,2.787,416,3.042,437,4.136,443,2.152,447,4.409,454,2.488,455,1.282,456,3.105,457,4.823,458,3.246,459,1.911,460,6.444,461,6.444,462,3.327,463,4.823,464,3.327,465,4.823,466,7.049,467,4.823,468,4.823,469,3.519,470,4.136,471,3.327,472,4.209]],["t/52",[1,1.573,45,1.794,49,1.518,60,2.529,77,2.715,112,2.364,166,3.652,209,2.873,239,1.747,254,4.672,288,4.351,365,3.599,373,3.586,374,3.971,400,3.413,404,4.211,454,1.782,473,3.185,474,3.398,475,4.33,476,3.483,477,2.364,478,2.613,479,5.049,480,2.173,481,3.031,482,5.163,483,3.483,484,6.25,485,5.249,486,4.33,487,3.805,488,4.117,489,4.117,490,3.599,491,5.049,492,3.947,493,3.805,494,4.691,495,3.684,496,4.616,497,4.616,498,3.321,499,4.33,500,5.049,501,5.049,502,5.049,503,5.049,504,5.049]],["t/54",[4,1.58,15,1.493,24,2.08,26,3.146,34,1.878,45,1.099,51,1.675,53,1.145,117,1.786,120,2.725,121,1.154,125,1.644,134,2.342,142,1.581,143,1.63,146,1.662,147,2.044,148,2.953,152,1.248,164,3.011,182,0.733,188,1.042,209,1.759,225,1.307,227,1.009,228,2.033,234,1.966,248,3.531,251,0.853,252,1.733,255,2.269,258,1.171,270,2.133,280,1.908,284,1.427,293,2.557,296,1.091,297,1.388,303,1.179,305,1.308,309,1.526,337,1.641,346,3.142,347,3.01,351,2.626,353,2.08,360,1.544,366,2.055,383,2.588,388,1.562,393,1.815,399,1.644,404,1.786,432,1.58,446,1.908,462,2.132,477,2.342,505,1.662,506,2.255,507,2.19,508,2.416,509,3.389,510,3.761,511,1.264,512,4.078,513,2.19,514,3.897,515,2.651,516,3.091,517,2.255,518,2.557,519,1.95,520,3.091,521,3.091,522,3.091,523,3.091,524,6.299,525,2.132,526,2.19,527,2.826,528,2.651,529,2.329,530,5.001,531,1.562,532,4.289,533,1.215,534,2.52,535,2.651,536,3.091,537,3.091,538,3.091,539,3.091,540,2.826,541,2.651]],["t/56",[4,1.435,49,1.169,51,1.916,59,1.941,90,4.173,93,2.215,101,4.311,142,1.841,143,1.392,148,3.462,152,0.705,164,2.734,169,3.255,191,3.207,195,3.85,224,3.976,226,2.857,233,3.161,270,4.597,280,3.037,284,1.632,303,2.182,314,3.305,351,2.075,366,1.487,437,4.906,477,2.679,505,3.075,527,7.278,542,2.359,543,2.06,544,4.906,545,2.075,546,4.471,547,5.641,548,5.229,549,4.471,550,5.229,551,5.229]],["t/58",[4,1.151,6,2.01,15,3.283,26,3.393,51,2.276,70,2.291,125,1.924,141,3.018,142,1.86,143,1.314,147,1.901,148,2.244,152,0.838,153,3.445,160,1.661,164,2.799,222,1.495,234,2.672,248,3.283,280,2.592,284,1.938,293,2.345,297,1.273,303,1.061,305,1.531,323,0.87,337,1.94,346,2.542,347,3.126,355,1.877,360,2.291,364,1.754,366,2.212,370,2.894,373,1.166,374,1.516,393,4.414,446,1.061,477,1.302,505,1.495,507,3.251,508,2.174,509,3.521,510,2.739,514,2.839,518,2.994,519,1.754,525,3.165,526,3.251,532,5.827,533,2.672,534,2.268,552,2.385,553,2.781,554,2.953,555,4.588,556,2.781,557,3.347,558,3.165,559,2.268,560,2.096,561,6.325,562,2.781,563,5.54,564,2.781,565,2.781,566,4.573,567,2.781,568,3.586,569,2.543,570,1.607,571,2.268,572,2.781,573,2.781,574,2.781,575,2.781]],["t/60",[1,0.98,4,1.692,6,2.955,12,4.342,28,1.814,49,0.667,56,2.008,58,1.572,59,2.288,82,2.351,83,2.219,93,2.612,125,2.926,134,4.169,142,2.013,143,0.794,146,2.442,152,0.832,162,3.219,175,3.896,182,1.599,196,3.134,197,2.76,212,2.219,224,2.928,251,2.22,279,3.551,297,1.261,303,1.733,305,1.188,306,3.448,313,2.065,323,1.421,366,1.503,373,1.905,374,2.476,380,2.065,383,3.49,395,2.76,432,2.322,456,2.924,481,1.889,509,2.127,540,4.153,566,3.057,576,4.543,577,5.785,578,4.543,579,4.543,580,4.543,581,4.543,582,4.543,583,2.76,584,2.106,585,4.153,586,4.543,587,4.543,588,4.543,589,4.543,590,3.896,591,4.543,592,4.543,593,4.543,594,4.153,595,4.543,596,4.543,597,4.543,598,4.153,599,4.543,600,3.551,601,3.314,602,3.896,603,4.543]],["t/62",[5,5.954,6,2.251,53,1.905,58,1.778,82,2.659,142,2.077,143,1.291,147,2.803,148,1.534,152,1.164,164,2.457,171,2.642,188,1.732,198,3.018,205,3.176,213,2.026,241,1.272,247,3.459,251,1.418,304,1.276,317,1.395,347,3.07,355,2.102,388,2.597,481,3.07,601,3.75,604,4.699,605,2.251,606,4.018,607,5.77,608,6.019,609,3.545,610,7.593,611,3.38,612,3.308,613,3.069,614,4.191,615,3.459,616,1.88,617,1.871,618,2.383,619,4.699,620,4.138,621,2.538,622,5.14,623,4.699]],["t/64",[4,1.748,26,4.543,28,2.784,49,1.023,134,3.264,136,5.684,152,0.86,164,4.349,205,4.914,234,3.577,251,2.511,293,4.651,297,2.524,305,2.379,306,2.7,366,1.7,373,2.923,374,3.799,514,5.629,566,4.692,624,2.602,625,6.373,626,6.971,627,6.971]],["t/66",[4,2.03,26,2.293,49,0.998,142,0.854,152,1.362,164,2.195,171,1.214,199,2.376,205,1.976,213,1.26,226,2.293,234,1.805,240,1.959,241,1.543,255,1.654,293,2.347,297,1.274,304,1.688,305,1.778,314,2.653,317,1.846,347,3.722,366,1.869,373,1.925,374,2.502,376,1.752,399,1.509,400,2.15,435,2.218,436,2.087,469,3.35,514,2.841,566,3.09,570,5.171,612,4.376,616,1.17,628,2.242,629,4.197,630,4.591,631,3.167,632,4.591,633,3.938,634,4.591,635,3.35,636,4.197,637,5.83,638,3.46,639,2.03,640,4.13,641,5.314,642,5.123,643,4.606,644,4.197,645,4.591,646,4.591,647,4.591,648,4.591,649,4.591,650,4.591,651,4.197,652,4.591,653,4.591,654,4.591,655,4.197,656,3.938,657,2.896]],["t/68",[28,2.784,49,1.335,152,1.249,180,1.956,199,3.607,205,3,251,1.924,313,3.169,351,3.674,366,1.302,373,2.923,374,3.799,509,3.264,512,5.684,518,3.564,566,4.692,570,4.028,658,6.971,659,5.979,660,5.253,661,6.971,662,9.098,663,6.971,664,6.637,665,3.009,666,6.373,667,5.979,668,6.971,669,6.971,670,6.971]],["t/71",[15,2.106,49,0.96,51,1.46,125,1.432,142,1.893,143,0.762,147,2.548,152,0.807,153,4.214,156,3.407,163,2.343,171,1.152,172,3.285,191,2.443,230,1.909,238,2.129,239,2.263,241,0.751,252,2.443,256,2.749,262,2.867,270,1.859,280,1.663,281,1.593,290,1.082,297,1.209,303,1.663,304,1.082,305,1.14,314,2.519,317,1.183,335,2.129,355,2.675,358,2.459,376,1.663,384,2.313,393,2.559,416,2.749,472,2.602,505,2.343,506,3.18,665,2.596,671,3.18,672,2.749,673,4.359,674,2.574,675,3.985,676,2.409,677,4.359,678,5.112,679,2.234,680,4.21,681,4.359,682,3.18,683,2.814,684,4.359,685,6.18,686,4.402,687,3.407,688,4.359,689,3.985,690,3.985,691,4.26,692,6.732,693,4.359,694,3.738,695,2.806,696,2.001,697,3.007,698,3.407,699,4.359,700,2.343]],["t/73",[9,3.633,19,2.87,74,2.795,142,1.151,152,0.5,153,4.381,164,1.937,180,1.137,191,2.271,238,1.978,239,1.402,280,1.546,355,1.657,358,1.523,366,2.259,368,3.167,373,1.699,374,2.208,509,3.935,510,2.419,511,2.531,518,2.071,547,2.87,560,3.053,563,5.045,566,6.889,570,2.341,571,3.303,665,2.046,676,2.239,679,2.152,689,3.703,691,3.022,701,4.051,702,3.303,703,5.307,704,5.307,705,7.207,706,4.07,707,4.051,708,4.051,709,3.283,710,4.384,711,4.051,712,4.051,713,4.051,714,4.051,715,4.051,716,4.051,717,4.051,718,4.051,719,6.188,720,3.474,721,4.051,722,4.051,723,4.051,724,4.051,725,4.051,726,4.051,727,4.051,728,4.051,729,4.051,730,4.051]],["t/76",[15,4.273,49,1.117,58,2.633,59,1.82,142,1.644,143,1.331,152,0.939,163,2.884,209,3.052,243,4.397,270,2.288,290,1.889,297,1.488,304,1.331,305,1.99,336,3.589,337,2.304,355,3.113,366,1.899,373,2.249,374,2.923,384,4.038,400,2.512,461,4.903,472,4.543,505,2.884,506,3.913,566,3.61,631,3.7,678,4.193,700,4.091,731,7.61,732,5.364,733,5.364,734,5.364,735,2.462,736,2.884,737,5.364,738,7.61,739,5.364,740,5.364,741,4.193,742,4.898,743,5.364,744,5.364,745,5.364,746,3.913]],["t/78",[45,2.505,49,0.708,74,3.327,142,1.813,143,1.457,152,0.595,180,1.353,239,1.669,280,1.84,284,1.376,290,1.197,337,2.493,355,3.408,366,2.233,373,2.022,374,2.628,455,1.873,509,4.291,510,2.879,518,2.465,532,6.045,560,3.635,566,6.561,570,2.787,571,3.933,680,3.105,702,3.933,742,3.105,747,4.136,748,3.105,749,4.823,750,8.331,751,3.77,752,7.049,753,4.073,754,5.312,755,4.823,756,7.049,757,4.823,758,4.823,759,4.823,760,4.823,761,4.823,762,4.823]],["t/80",[4,1.483,49,0.56,74,2.633,120,2.08,121,1.425,125,2.895,142,1.099,143,1.034,152,1.299,182,0.905,205,2.544,240,3.086,241,1.247,245,1.004,258,1.446,274,3.274,277,2.172,296,2.087,297,1.059,303,2.255,304,1.467,305,1.546,317,1.964,323,1.194,335,1.864,337,0.865,345,2.255,366,2.192,380,1.736,394,1.501,404,2.206,417,2.279,424,1.806,435,3.495,436,3.703,455,2.341,460,3.49,505,2.052,518,1.952,519,2.408,531,1.929,550,3.49,551,3.49,616,0.973,624,3.288,640,2.319,763,2.785,764,3.818,765,3.274,766,4.214,767,3.818,768,2.457,769,3.729,770,2.785,771,3.274,772,2.984,773,2.362,774,2.569,775,3.818,776,3.818,777,3.113,778,3.818,779,3.49,780,3.818,781,3.818,782,3.818,783,3.818,784,3.178,785,3.818,786,3.818,787,3.818,788,2.511,789,2.362,790,3.818]],["t/82",[83,3.805,152,1.316,205,3.353,224,3.383,225,4.513,226,3.891,230,3.413,251,2.15,254,4.279,292,2.847,304,1.934,373,3.267,374,4.246,431,3.295,513,5.52,605,3.413,709,4.134,791,6.921,792,7.792]],["t/84",[4,1.559,5,6.033,59,2.109,116,4.684,117,3.592,142,1.778,143,1.474,148,1.855,152,1.363,171,2.228,179,2.854,180,1.744,205,2.675,213,1.706,225,2.629,227,2.03,251,1.715,270,2.652,296,2.194,313,2.826,317,1.688,346,4.152,347,2.585,351,2.255,399,2.043,435,3.003,436,2.826,443,3.761,610,4.535,613,5.033,640,3.777,735,2.854,769,3.921,793,5.682,794,5.068,795,4.859,796,5.068,797,6.216]],["t/86",[59,2.346,142,1.683,143,1.582,147,2.937,148,2.701,152,0.853,180,1.94,213,2.484,251,3.065,270,3.861,280,2.638,284,2.581,288,4.129,313,4.115,323,2.832,360,4.52,480,2.976,509,4.238,664,6.602,798,4.899,799,2.974,800,4.77]],["t/88",[5,5.098,49,1.083,53,2.386,56,1.412,59,1.742,93,1.237,117,1.846,142,1.811,143,1.509,147,1.667,148,1.922,152,1.322,153,1.286,170,2.565,171,0.844,179,3.387,191,2.879,205,2.21,207,2.056,213,2.369,225,2.172,233,1.765,241,0.885,247,2.15,251,1.777,270,2.747,284,1.837,303,1.959,309,1.577,313,2.928,323,2.529,337,0.724,345,1.959,346,1.387,347,4.156,351,3.626,355,3.306,376,1.959,380,2.335,394,1.256,435,1.543,436,1.452,443,2.291,480,1.375,481,1.328,490,1.577,509,4.043,531,3.253,543,0.827,544,2.739,547,2.263,609,2.203,610,4.698,611,2.101,612,3.306,613,1.907,635,2.33,637,4.404,638,4.853,798,3.639,801,1.496,802,3.194,803,2.203,804,2.405,805,1.941,806,2.407,807,2.101,808,3.194,809,2.407,810,5.887,811,2.407,812,2.407,813,2.92,814,2.497,815,2.92,816,1.846]],["t/90",[1,0.61,4,1.721,6,1.238,7,2.003,15,1.366,26,1.412,45,2.105,49,0.682,58,0.978,65,1.285,71,1.541,83,2.271,84,2.003,85,2.425,93,1.095,96,1.749,104,2.062,121,1.055,124,1.634,125,2.68,130,1.749,142,1.101,143,1.036,152,1.214,159,2.584,166,0.998,185,1.585,205,2.549,212,2.271,226,1.412,234,1.112,240,2.527,241,0.802,245,1.223,251,1.634,254,1.238,296,0.998,304,1.154,305,1.216,306,1.095,309,2.296,317,1.262,335,1.381,337,1.054,366,2.174,373,1.186,383,1.463,387,2.062,432,1.445,435,2.247,436,2.114,438,1.381,455,1.236,472,3.536,518,1.445,519,1.783,531,1.428,542,1.918,543,0.732,545,2.149,570,1.634,624,2.831,628,1.381,629,2.584,633,3.988,640,1.718,664,2.062,674,1.748,700,1.52,735,1.298,765,2.425,766,3.924,777,2.305,784,2.5,806,2.13,812,2.13,817,2.827,818,2.827,819,5.923,820,2.062,821,2.21,822,2.584,823,1.688,824,2.425,825,3.988,826,2.463,827,2.827,828,2.584,829,3.988,830,2.223,831,2.827,832,2.827,833,1.52,834,2.933,835,2.827,836,2.827,837,2.827,838,2.827,839,2.305,840,2.827,841,2.827,842,2.827,843,2.827,844,2.827,845,2.827,846,2.827,847,2.827,848,2.827,849,2.827,850,2.827,851,2.827,852,2.827,853,2.827,854,2.827,855,2.827,856,2.827,857,2.827,858,2.827,859,2.827,860,2.827]],["t/92",[1,1.886,15,4.223,51,2.928,265,3.864,384,4.638,443,3.9,469,6.377,472,5.219,861,7.496,862,7.496,863,7.991,864,6.587,865,6.832]],["t/94",[1,1.649,2,2.58,3,2.528,6,2.364,15,2.608,45,1.918,49,0.792,50,2.759,60,2.261,65,4.945,121,2.015,151,4.068,166,1.905,179,4.074,254,3.348,264,4.954,366,1.008,373,2.263,374,2.941,431,3.233,493,4.068,494,3.474,865,4.219,866,3.279,867,3.169,868,3.938,869,5.398,870,5.398,871,5.398,872,5.398,873,5.398,874,5.398,875,5.398,876,6.988,877,4.934,878,4.629,879,6.232,880,7.644,881,5.398,882,4.629,883,5.398,884,5.398,885,5.398,886,7.644,887,5.398,888,5.398,889,5.398,890,4.934,891,5.975,892,5.398,893,5.398]],["t/96",[1,0.965,2,2.138,4,1.122,49,1.507,59,2.262,60,2.838,82,2.314,95,4.125,96,2.767,112,2.094,130,2.767,142,0.832,146,2.404,149,2.184,152,1.09,163,2.404,166,1.579,171,1.182,212,2.184,215,2.437,216,2.717,224,2.894,234,1.758,240,1.908,241,1.523,242,2.138,245,1.753,251,2.438,254,1.959,264,3.122,265,2.947,273,1.366,280,1.706,297,1.241,317,1.81,320,2.314,323,1.399,365,3.936,370,2.821,384,2.373,416,2.821,435,2.161,436,2.033,446,2.543,454,2.814,455,1.188,481,2.772,514,4.125,552,3.835,616,1.139,700,2.404,735,3.061,753,2.584,799,1.47,820,3.263,894,3.496,895,4.472,896,2.941,897,4.472,898,3.263,899,5.211,900,2.821,901,4.088,902,2.67,903,4.472,904,1.221]],["t/98",[49,0.947,60,2.201,71,4.709,143,1.128,152,0.795,171,2.284,234,2.536,238,3.149,245,1.695,251,2.689,264,3.02,273,1.97,292,2.356,304,1.601,334,4.449,365,3.184,383,3.337,384,3.422,435,3.116,436,4.733,446,2.46,454,2.276,481,2.682,490,3.184,514,3.99,617,1.634,700,3.467,735,2.961,823,3.85,866,3.918,896,4.241,902,3.85,904,1.76,905,1.947,906,5.895,907,3.669,908,6.449,909,6.449,910,5.258,911,6.449]],["t/100",[2,3.473,60,2.38,121,2.712,152,1.274,240,3.986,241,1.611,245,1.91,264,3.402,280,2.772,299,4.266,304,2.32,326,4.583,414,5.643,435,3.51,436,3.303,446,2.772,454,2.565,481,3.021,624,2.712,896,4.778,900,4.583,902,4.338,912,7.265,913,6.642]],["t/102",[6,2.523,45,2.047,53,2.134,65,2.618,71,5.008,83,2.812,101,4.34,121,2.149,166,2.033,188,1.941,254,2.523,260,5.078,290,1.429,317,1.563,336,4.029,337,2.365,373,3.354,384,3.056,431,2.435,443,3.569,446,2.197,617,1.459,735,2.644,864,6.028,900,3.632,914,2.022,915,5.261,916,5.264,917,5.667,918,9.191,919,4.949,920,5.759,921,5.759,922,5.759,923,5.759,924,3.563,925,5.264,926,4.695,927,2.456,928,5.759,929,5.759,930,4.939,931,5.264]],["t/104",[2,2.95,4,1.548,6,2.703,49,1.231,59,2.094,60,1.572,74,4.257,112,3.928,125,2.757,142,1.772,143,1.666,152,1.36,240,3.578,264,2.89,304,2.082,317,2.277,320,3.193,352,4.502,376,2.354,435,4.053,436,3.814,446,3.2,474,4.153,481,2.566,616,2.428,766,5.291,769,3.893,896,4.059,902,3.685,932,3.819,933,5.642]],["t/106",[1,1.542,4,1.792,49,1.049,60,1.82,126,5.212,142,1.328,254,3.13,264,4.329,292,3.377,304,1.774,306,3.969,472,4.266,514,4.421,624,3.825,679,1.83,704,6.127,769,4.507,788,4.699,820,6.744,823,5.519,934,7.145,935,6.127,936,7.145,937,5.384,938,6.127,939,4.266,940,4.808]],["t/108",[45,1.733,49,1.043,56,2.156,60,1.243,71,3.873,95,3.018,104,3.558,112,2.284,121,1.82,125,1.603,137,3.977,142,1.322,143,1.243,148,3.292,199,2.524,207,3.14,215,2.658,254,2.137,262,3.208,264,3.328,265,2.156,270,2.081,299,2.864,303,1.861,337,1.611,366,1.83,368,3.813,373,2.045,376,1.861,414,2.524,446,1.861,454,1.722,472,4.243,474,5.643,481,2.028,529,3.676,545,1.77,674,1.439,702,3.977,820,3.558,896,3.208,902,2.912,919,4.398,941,9.05,942,4.459,943,3.077,944,4.183,945,6.837,946,4.459,947,4.459,948,4.459,949,4.459,950,5.795,951,3.283,952,4.878,953,4.878,954,4.878,955,4.878,956,3.208,957,4.183]],["t/110",[1,2.25,2,2.243,9,2.755,44,3.825,45,1.667,49,1.203,58,1.623,60,2.456,61,2.074,62,3.423,112,2.197,130,2.903,166,3.559,182,1.944,236,2.711,254,4.223,264,3.839,271,3.667,317,1.875,320,3.574,336,1.904,345,1.79,365,4.048,373,1.967,374,2.556,380,2.133,426,1.513,443,2.093,453,3.825,454,2.438,480,2.019,481,3.761,484,4.024,485,3.872,486,4.024,487,3.535,488,3.825,494,3.02,495,3.423,769,2.959,866,4.197,896,4.543,899,3.667,904,1.281,940,3.157,943,2.959,958,4.692,959,4.765,960,6.487,961,3.02,962,5.399,963,2.556,964,2.903,965,4.692,966,4.692,967,3.825]],["t/112",[143,1.544,264,4.135,265,3.903,455,2.346,481,3.672,905,2.667,968,8.073,969,7.2,970,8.073,971,8.073,972,7.573,973,8.073]],["t/114",[49,1.516,71,3.959,135,3.959,142,1.738,143,1.806,152,0.896,245,1.91,264,3.402,270,3.099,303,2.772,337,1.647,455,2.998,508,5.679,616,1.851,735,3.335,820,5.3,907,4.134,974,4.414,975,7.265,976,5.679,977,4.073,978,5.924,979,4.073,980,6.642]],["t/116",[45,2.536,49,1.356,51,2.39,125,1.612,142,1.966,143,0.858,148,2.13,149,2.396,152,1.037,188,2.406,205,2.111,226,2.45,229,3.834,234,1.929,241,0.846,254,2.149,264,4.326,265,2.168,270,2.093,284,1.399,317,1.332,337,1.112,366,0.916,373,2.057,384,2.603,400,2.297,435,3.448,436,3.825,453,6.859,455,1.303,472,2.929,474,3.301,481,3.841,514,3.035,543,1.847,700,2.637,766,2.538,804,2.297,826,1.481,896,3.226,902,4.261,978,4,979,2.75,981,3.834,982,4.207,983,3.035,984,2.252,985,4.905,986,4.207,987,4.905,988,4.905,989,4.905,990,4.905,991,4,992,3.475,993,4.484,994,4.207,995,2.396,996,4.484,997,4.484,998,4.905,999,4.484]],["t/118",[1,1.884,6,2.868,26,3.27,49,0.961,58,2.265,65,3.969,80,5.615,91,5.338,124,3.783,130,4.051,142,1.217,148,1.954,164,3.13,180,1.837,207,4.214,234,2.574,254,3.824,255,2.359,258,2.479,260,3.618,264,3.066,303,2.498,306,2.535,310,4.934,354,4.051,374,3.568,378,3.618,384,3.474,404,3.783,436,3.969,494,4.214,770,4.776,820,4.776,866,3.978,1000,4.214,1001,6.547,1002,5.615,1003,5.985,1004,5.615,1005,4.639,1006,6.547,1007,5.985]],["t/120",[1,2.083,4,1.354,15,2.608,39,2.902,49,1.122,51,1.808,53,2,58,1.867,60,1.375,65,2.454,71,2.941,84,3.824,135,2.941,148,1.611,152,0.666,166,2.698,180,1.514,241,1.53,251,1.489,309,2.665,359,2.864,373,2.263,454,1.905,478,2.793,611,5.837,616,2.261,766,3.955,769,5.598,799,1.774,816,3.119,879,6.232,917,3.824,919,3.34,941,4.629,942,4.934,992,3.824,1008,4.629,1009,3.824,1010,5.398,1011,5.398,1012,3.824,1013,3.279,1014,5.398,1015,4.219,1016,3.633,1017,4.068,1018,4.934,1019,5.398,1020,5.398,1021,5.398,1022,5.598,1023,5.398,1024,5.144,1025,5.398,1026,5.398,1027,3.474]],["t/122",[1,2.039,3,3.461,26,3.691,35,5.079,133,5.777,134,3.461,142,1.757,147,2.398,162,5.236,201,4.143,248,4.143,285,4.757,304,1.834,438,3.609,456,4.757,480,3.18,533,3.715,735,3.393,826,2.232,995,3.609,1028,4.974,1029,5.013,1030,3.778,1031,6.756,1032,5.098,1033,6.756]],["t/124",[1,1.493,6,1.255,26,1.431,35,1.54,45,1.671,49,0.877,52,1.222,60,1.197,61,1.266,66,2.909,70,1.431,79,1.74,90,2.09,120,1.561,121,1.069,124,1.655,125,2.849,138,3.243,142,2.167,145,1.976,147,2.479,148,1.403,156,2.239,157,1.415,164,2.858,165,3.997,166,1.011,167,3.145,178,1.884,179,1.315,180,1.941,182,1.946,188,0.966,195,1.928,197,2.856,198,4.062,199,1.482,201,2.635,204,3.671,205,1.233,213,0.786,224,3.003,225,1.212,238,1.399,239,1.626,242,1.369,245,0.753,248,3.878,255,1.694,274,4.031,277,2.675,280,1.093,281,1.047,285,1.844,293,1.464,294,2.09,297,2.406,301,2.619,302,2.159,303,2.281,304,1.896,305,1.997,306,1.109,314,1.655,323,1.471,354,1.773,365,1.415,383,1.482,397,1.447,400,1.342,426,1.516,485,1.606,490,1.415,496,2.619,605,2.059,640,1.74,735,1.315,862,2.457,877,2.619,904,0.782,905,0.865,919,1.773,960,1.928,961,1.844,974,1.74,1002,2.457,1029,2.494,1030,1.464,1031,2.619,1034,2.865,1035,4.031,1036,2.865,1037,2.336,1038,2.03,1039,2.457,1040,2.865,1041,2.619,1042,1.928,1043,3.429,1044,1.71,1045,1.482,1046,2.865,1047,2.619,1048,4.701,1049,1.74,1050,2.865,1051,2.865,1052,2.865,1053,2.03,1054,1.54]],["t/126",[1,1.461,4,1.145,26,3.382,49,1.185,52,1.948,53,2.509,59,1.549,60,2.056,61,2.019,93,1.769,125,2.652,134,2.139,138,3.15,142,2.051,171,1.207,180,1.9,182,2.26,189,4.557,198,2.682,204,2.423,224,1.983,238,2.23,245,1.78,255,2.908,258,1.73,264,2.139,265,2.993,280,1.742,296,3.151,297,2.239,305,1.771,323,2.119,346,1.983,347,1.899,365,2.255,373,1.915,388,2.307,393,3.976,426,1.473,438,3.941,443,2.038,483,3.15,570,2.639,584,2.117,605,2.001,773,2.826,905,1.379,961,2.94,974,2.775,1013,2.775,1028,3.074,1029,3.593,1043,3.332,1045,4.176,1049,2.775,1055,4.567,1056,3.332,1057,3.57,1058,2.881,1059,4.175,1060,4.175,1061,3.724]],["t/128",[1,1.417,6,1.919,7,3.104,15,3.172,26,2.188,47,2.948,49,0.964,53,1.623,60,2.386,66,2.711,70,3.279,93,1.697,130,2.711,142,1.994,147,2.131,148,1.96,149,3.206,152,0.54,165,3.793,166,1.546,167,2.985,179,2.011,180,1.229,188,1.477,201,2.456,204,4.178,213,1.202,215,2.387,240,1.869,242,3.138,245,2.07,248,2.456,280,1.671,293,3.356,297,2.599,304,1.63,305,1.717,318,2.531,323,2.464,324,2.881,325,3.104,336,1.778,337,2.123,345,1.671,365,3.888,383,2.267,393,2.572,416,2.763,446,1.671,464,3.022,483,3.022,584,2.031,640,2.662,709,2.325,784,2.355,803,3.022,914,0.964,963,2.387,964,4.062,976,3.425,1029,2.325,1062,4.381,1063,4.005,1064,3.425,1065,3.104,1066,4.381,1067,4.381,1068,3.302,1069,4.381]],["t/130",[1,1.116,15,2.498,16,4.216,19,3.663,26,2.582,51,2.483,52,2.206,53,1.916,59,2.94,60,1.888,142,1.611,147,3.385,149,3.62,164,3.544,201,2.898,204,3.934,212,2.525,213,1.419,216,6.088,223,3.567,226,2.582,245,1.949,280,1.973,293,2.643,297,1.435,304,1.84,323,2.962,336,2.098,337,1.964,365,2.553,480,2.225,616,1.888,679,1.898,789,4.587,964,4.587,979,2.898,983,3.199,1024,4.989,1047,4.727,1065,3.663,1070,5.795,1071,3.48,1072,3.401,1073,3.567,1074,4.283,1075,2.818,1076,5.171,1077,3.401,1078,4.727]],["t/132",[1,1.071,16,4.046,49,0.728,52,2.117,60,1.833,61,2.193,82,3.724,93,1.921,95,3.07,133,3.879,134,2.324,142,1.574,143,1.258,145,3.423,147,2.748,148,2.943,149,2.423,164,2.372,165,2.867,168,3.879,171,1.311,188,2.426,195,3.339,201,4.746,204,5.232,213,1.362,216,5.144,225,2.099,226,2.478,230,2.174,245,1.305,252,2.781,280,3.23,282,4.536,284,2.053,293,2.537,297,1.377,304,1.232,318,2.867,323,2.252,337,1.125,352,3.62,365,2.45,459,1.966,480,3.097,804,3.37,964,3.07,1029,2.633,1065,3.516,1079,3.194,1080,4.962,1081,4.372,1082,3.739,1083,6.172,1084,3.879,1085,4.962,1086,3.07,1087,2.913,1088,3.264,1089,4.046]],["t/134",[15,2.024,49,0.932,53,1.552,56,2.806,60,1.067,61,2.806,66,2.592,70,3.17,117,2.421,125,3.019,142,2.008,145,4.378,147,3.138,148,1.895,152,0.783,153,1.686,167,1.905,185,2.348,199,2.168,227,1.368,230,1.835,234,1.647,235,3.157,243,2.421,245,2.015,251,1.156,255,2.287,280,1.598,284,1.811,285,4.933,290,2.122,297,1.162,298,2.819,304,2.122,326,2.642,335,2.046,337,0.95,345,1.598,346,1.819,347,1.742,353,2.819,388,2.116,393,2.46,472,2.501,480,2.731,505,2.252,509,2.972,510,2.501,513,2.968,518,2.141,533,2.496,549,4.961,557,3.056,558,2.89,559,3.416,584,1.942,605,1.835,616,1.067,695,2.697,735,1.923,799,1.377,800,4.378,807,2.755,964,2.592,979,2.348,1000,4.086,1043,3.056,1053,2.968,1057,3.275,1070,3.275,1090,2.141,1091,3.593,1092,6.443,1093,2.46]],["t/136",[1,0.842,26,1.95,45,2.607,49,0.573,51,1.308,52,1.665,58,1.351,59,2.041,60,0.995,112,1.828,120,2.127,121,2.738,125,2.411,133,3.052,142,1.655,147,2.381,148,1.165,152,0.482,164,2.875,170,1.95,171,1.939,182,0.926,185,3.372,213,1.072,216,5.408,224,1.695,226,1.95,242,3.94,243,2.256,245,1.026,248,2.189,255,1.407,284,1.114,285,3.872,290,0.969,296,1.378,299,2.292,304,1.493,305,1.573,314,2.256,323,1.222,335,1.907,337,1.363,354,2.416,361,1.81,366,1.54,373,1.637,415,2.463,446,2.295,470,5.158,480,2.588,483,2.693,509,2.817,510,3.591,525,2.693,526,2.766,533,2.365,545,1.416,554,2.513,561,5.735,735,1.792,746,2.848,768,2.513,826,1.179,940,2.628,964,2.416,995,2.937,1000,2.513,1022,2.463,1030,1.996,1043,2.848,1053,5.84,1057,4.701,1070,4.701,1071,4.048,1072,3.956,1073,2.693,1093,2.292,1094,3.183,1095,3.904,1096,3.904,1097,3.904,1098,2.942,1099,3.348,1100,3.569,1101,3.569,1102,3.183,1103,3.348]],["t/138",[1,1.253,4,1.229,6,0.953,15,1.803,26,1.864,35,2.007,37,2.228,49,0.719,50,1.113,53,2.153,58,1.291,59,0.738,71,1.186,82,1.931,112,2.295,120,2.034,124,1.258,125,1.909,132,2.403,134,1.019,138,1.501,142,1.792,143,0.857,147,1.59,148,1.463,151,2.813,152,1.291,153,1.502,158,1.701,170,1.864,180,1.375,182,1.691,185,1.22,188,1.258,195,1.465,204,3.784,205,2.813,212,1.063,213,1.024,217,1.203,224,2.127,225,1.579,226,1.087,227,1.6,235,1.64,239,1.291,241,1.315,242,1.04,243,1.258,245,0.981,255,0.784,265,1.65,279,1.701,280,1.869,281,1.364,283,1.775,284,1.398,285,2.403,290,0.54,293,1.113,296,1.318,297,1.36,304,0.54,305,0.569,321,1.99,323,1.168,335,1.823,347,2.038,351,1.354,359,1.155,366,1.68,383,1.126,397,1.886,399,0.715,400,1.748,438,1.063,455,1.302,480,2.109,483,1.501,509,1.748,518,1.113,525,1.501,526,1.542,533,0.856,543,0.563,545,0.79,560,1.64,561,2.918,563,1.775,600,2.918,620,1.22,621,1.075,641,2.918,642,4.378,643,3.305,644,3.412,656,1.867,657,1.373,664,1.588,665,1.234,691,1.063,703,1.867,705,1.867,735,0.999,768,1.401,789,1.347,799,0.715,914,0.479,963,1.186,964,1.347,977,1.22,984,0.999,1030,1.908,1043,1.588,1053,1.542,1057,1.701,1065,3.472,1071,1.465,1072,1.432,1073,1.501,1087,1.278,1093,1.278,1099,3.201,1100,1.99,1101,1.99,1104,2.813,1105,1.775,1106,1.347,1107,1.99,1108,2.177,1109,1.238,1110,2.177,1111,2.813,1112,1.99,1113,3.412,1114,1.867,1115,4.737,1116,5.31,1117,4.9,1118,1.99,1119,4.768,1120,3.043,1121,2.177,1122,1.64,1123,1.775,1124,1.465,1125,1.867,1126,1.64,1127,1.867,1128,1.99,1129,2.177,1130,1.867]],["t/140",[1,1.371,2,4.09,6,2.783,19,4.502,28,2.537,39,3.416,45,2.258,55,3.86,61,2.809,71,3.462,93,2.46,112,4.529,179,2.917,182,2.293,258,2.406,265,2.809,293,3.248,296,2.243,320,3.288,338,4.788,383,3.288,395,5.198,397,3.21,426,2.759,446,2.424,480,3.681,605,2.783,664,4.635,907,4.868,933,5.808,956,5.627,963,3.462,995,3.103,1030,3.248,1038,4.502,1131,5.449,1132,4.966,1133,4.383,1134,5.449,1135,5.808]],["t/142",[1,1.259,4,2.72,15,2.82,45,2.074,52,2.49,56,2.58,180,1.637,182,2.571,255,2.909,265,2.58,283,4.759,303,2.227,334,4.026,347,2.427,358,2.194,366,1.729,426,2.986,529,4.398,542,2.407,548,5.336,672,3.682,904,2.527,992,4.135,995,2.85,1013,4.905,1049,4.905,1136,6.924,1137,5.336,1138,3.225,1139,5.336,1140,6.311,1141,4.398,1142,5.837,1143,6.924,1144,5.336,1145,5.837,1146,5.006,1147,5.837,1148,5.837,1149,5.837]],["t/144",[1,1.839,4,1.259,15,2.425,45,3.029,49,0.737,60,1.279,61,2.219,93,1.944,112,2.351,134,2.351,143,0.878,157,2.479,179,3.913,182,2.021,213,1.378,226,3.624,236,2.901,251,1.385,254,2.199,255,1.809,264,2.351,273,1.534,296,3.009,306,1.944,317,1.97,366,1.592,380,2.282,395,3.05,426,3.434,577,4.305,617,1.839,710,3.557,735,2.304,765,4.305,866,5.178,904,1.981,905,1.516,907,2.856,939,2.997,963,3.954,974,3.05,1030,2.566,1037,4.093,1045,2.597,1049,3.05,1077,3.302,1082,3.783,1136,4.305,1150,3.783,1151,4.305,1152,5.02,1153,7.257,1154,4.305,1155,3.924,1156,3.05,1157,3.924,1158,5.02,1159,4.305,1160,5.02,1161,3.463]],["t/146",[1,1.279,2,1.073,4,0.563,15,2.423,17,1.121,26,1.121,39,1.207,45,1.782,49,1.064,59,0.762,60,1.696,61,0.992,71,1.223,93,1.942,94,1.548,96,2.371,112,1.051,116,1.692,124,1.297,125,1.648,134,4.708,142,1.641,143,1.427,152,0.618,163,1.207,182,1.719,188,1.69,199,1.161,205,1.649,207,1.445,224,1.664,235,1.692,236,1.297,238,1.872,241,0.864,251,1.837,263,1.191,265,1.694,285,1.445,292,0.82,296,1.353,297,0.623,303,1.462,309,2.476,313,1.021,317,1.04,345,1.913,362,1.755,366,1.744,395,1.364,413,1.925,426,1.912,428,4.846,455,1.575,477,1.795,481,0.933,490,1.108,507,1.59,514,1.389,531,1.936,543,0.992,554,3.228,570,2.214,616,1.51,617,0.971,620,1.258,624,3.935,625,2.052,641,2.996,642,2.888,643,2.853,651,2.052,655,2.052,656,3.287,679,0.575,695,1.445,735,1.03,799,0.738,826,0.678,894,1.755,902,4.329,905,2.19,907,1.277,917,1.59,974,3.047,977,1.258,984,1.03,994,1.925,1028,1.511,1045,1.161,1064,1.755,1075,1.223,1077,3.298,1081,1.364,1104,1.692,1115,3.125,1119,3.658,1134,1.925,1150,1.692,1156,2.328,1157,1.755,1162,3.503,1163,2.245,1164,2.245,1165,2.245,1166,3.92,1167,4.3,1168,1.548,1169,2.245,1170,1.925,1171,3.832,1172,1.041,1173,1.925,1174,2.245,1175,1.548,1176,1.925,1177,3.287,1178,2.245,1179,2.245,1180,2.052,1181,1.925,1182,2.245,1183,2.245,1184,2.052,1185,2.245,1186,2.052,1187,2.052,1188,2.245,1189,2.245,1190,2.052,1191,2.245,1192,2.052,1193,1.777,1194,2.052,1195,2.245]],["t/148",[12,4.12,49,1.262,71,3.488,84,4.535,134,2.997,142,1.805,152,0.789,182,1.518,236,3.699,241,1.103,263,3.396,278,4.824,296,3.035,306,3.76,380,2.91,426,2.773,428,3.642,480,2.754,570,4.968,616,1.631,621,3.161,624,3.209,672,4.037,866,3.889,1030,4.395,1064,5.003,1077,4.21,1082,4.824,1175,5.931,1196,3.758,1197,4.824,1198,5.49,1199,7.86,1200,5.852,1201,8.598,1202,6.401]],["t/150",[2,3.106,17,3.245,49,1.436,59,2.204,60,1.655,143,1.136,180,2.436,182,1.541,213,1.783,224,2.821,233,3.59,296,2.294,309,3.208,345,2.479,380,2.954,426,2.801,481,3.612,533,2.555,583,3.948,616,1.655,700,3.493,746,4.74,826,1.962,905,1.962,974,3.948,983,4.02,995,3.173,1030,3.322,1154,5.572,1203,6.344,1204,6.234,1205,5.94,1206,5.94,1207,6.498,1208,4.604,1209,4.274]],["t/152",[1,2.226,2,3.015,26,3.15,49,0.926,60,2.455,82,3.263,143,1.685,182,2.018,239,2.182,251,1.74,255,2.272,366,1.8,480,2.714,554,4.06,605,2.763,902,3.766,904,1.722,905,2.91,974,5.172,995,3.08,1030,4.926,1049,3.832,1136,5.409,1146,5.409,1159,7.301,1175,5.872,1208,4.469,1210,6.307,1211,6.307,1212,4.601,1213,4.469,1214,6.307,1215,6.307,1216,6.307]],["t/154",[4,1.792,56,3.158,59,2.424,61,3.158,62,5.212,93,2.767,121,2.667,125,2.348,132,4.599,142,1.328,185,4.005,197,4.341,258,2.706,306,2.767,358,2.686,383,3.697,397,3.609,480,4.41,528,6.127,671,5.212,709,3.791,830,4.419,945,5.826,1000,4.599,1029,3.791,1030,4.726,1087,4.195,1131,6.127,1132,5.585,1133,4.929,1217,6.531]],["t/156",[3,1.29,4,1.142,7,1.952,12,4.348,28,2.323,34,1.674,45,2.862,49,0.854,52,1.942,53,1.021,58,0.953,60,0.702,77,1.481,87,2.518,99,2.246,104,2.01,112,1.29,117,1.592,125,3.036,134,1.29,137,2.246,142,1.657,147,0.894,148,0.822,152,1.139,180,1.277,182,0.653,185,1.544,189,1.854,196,1.9,197,2.765,204,2.415,239,0.953,240,1.175,242,2.176,243,1.592,245,0.724,251,1.864,252,1.544,253,2.076,255,0.993,264,2.131,265,1.218,270,1.175,290,0.684,296,0.972,304,0.684,306,3.3,313,1.252,346,1.196,347,1.146,351,0.999,360,1.376,366,2.004,380,1.252,387,2.01,395,1.674,404,1.592,438,1.345,445,1.738,455,1.209,458,1.854,509,1.29,518,1.408,519,1.738,525,1.9,526,1.952,552,2.362,559,2.246,560,2.076,561,3.558,570,3.361,577,2.362,590,2.362,624,1.699,628,2.223,641,2.153,642,2.076,643,1.567,665,0.911,674,1.343,683,1.185,686,1.854,735,1.265,768,1.773,769,1.738,788,1.812,896,1.812,938,2.362,939,1.645,956,1.812,963,1.501,995,1.345,1000,1.773,1032,1.9,1065,1.952,1070,2.153,1071,3.914,1072,4.919,1077,1.812,1086,1.704,1087,2.673,1094,2.246,1115,2.246,1187,2.518,1199,2.518,1200,2.518,1218,2.362,1219,2.755,1220,2.755,1221,2.01,1222,2.362,1223,4.161,1224,2.755,1225,2.755,1226,2.755,1227,2.755,1228,4.552,1229,2.755,1230,2.755,1231,2.755,1232,2.755,1233,5.317,1234,2.755,1235,2.076,1236,2.755,1237,2.755,1238,2.755,1239,2.755,1240,2.755,1241,2.755,1242,2.518,1243,2.755,1244,2.518,1245,2.755,1246,2.518,1247,2.518,1248,2.518,1249,2.518,1250,2.755,1251,2.755,1252,2.518]],["t/158",[10,2.315,22,2.315,45,1.161,49,0.48,52,3.906,56,2.311,60,0.832,70,1.632,71,1.78,77,1.756,93,1.265,104,2.383,113,4.087,121,1.952,124,1.888,125,2.686,130,2.021,142,0.972,148,1.952,160,1.951,163,1.756,165,3.778,180,0.917,197,1.985,201,2.931,204,1.734,212,1.596,216,3.177,227,1.067,232,2.802,233,1.805,255,1.884,258,1.237,273,0.998,284,0.932,306,2.532,314,1.888,327,3.366,354,2.021,358,1.966,366,1.956,376,1.995,378,1.805,393,1.918,394,1.285,404,1.888,417,1.951,438,1.596,471,2.254,480,2.813,509,1.53,510,3.122,519,2.061,531,2.642,542,1.347,554,2.103,615,2.199,621,1.613,674,2.205,683,1.406,735,1.5,768,2.103,804,1.53,904,0.892,932,2.021,940,2.199,956,2.149,995,2.554,1007,4.78,1028,2.199,1029,1.734,1030,2.673,1032,2.254,1072,2.149,1078,2.987,1086,5.396,1087,4.8,1103,2.802,1109,1.859,1124,2.199,1196,1.918,1223,2.987,1233,6.832,1253,3.267,1254,2.987,1255,3.267,1256,5.229,1257,8.175,1258,3.267,1259,3.267,1260,2.987,1261,3.705,1262,2.987,1263,2.987,1264,2.664,1265,2.664,1266,2.987,1267,3.815,1268,3.267,1269,2.987,1270,2.987,1271,5.229,1272,3.267,1273,3.267,1274,3.267,1275,1.985,1276,2.664,1277,3.267,1278,2.802,1279,2.987,1280,3.267]],["t/160",[4,1.748,56,3.082,59,2.365,61,3.082,62,5.086,93,2.7,121,2.602,125,2.291,132,4.487,164,3.332,185,3.908,197,4.235,222,3.748,258,2.64,306,2.7,378,5.027,383,3.607,397,3.522,452,6.373,473,4.397,480,4.358,528,5.979,621,4.492,709,3.699,1000,4.487,1029,3.699,1030,4.651,1087,4.093,1131,5.979,1132,5.449,1133,4.809,1217,6.373,1281,6.971]],["t/162",[3,4.093,10,6.193,45,3.106,65,3.974,306,3.385,378,4.83,485,5.876,803,6.03,1282,8.741,1283,7.496,1284,7.127,1285,8.741]],["t/164",[1,1.609,4,1.87,45,2.649,49,1.394,56,3.295,60,1.899,112,3.491,152,1.29,180,2.091,378,4.119,456,4.798,480,4.088,554,4.798,637,8.147,945,6.078,956,4.903,992,5.281,1005,5.281,1042,5.017,1049,4.529,1104,5.617,1197,5.617,1286,6.814,1287,7.454,1288,5.617]],["t/166",[4,1.902,8,5.233,52,3.236,117,4.383,121,2.831,180,2.695,346,3.293,400,3.552,407,6.185,456,6.785,458,5.105,477,4.498,495,5.534,498,4.989,686,5.105,904,2.071,961,4.883,1005,7.468,1029,4.025,1289,6.505,1290,6.505,1291,7.586]],["t/168",[46,5.44,49,1.307,65,3.491,93,2.103,101,4.093,112,2.544,121,2.027,169,4.368,179,2.494,180,1.524,233,3.001,293,2.777,306,2.103,317,1.475,378,3.001,380,2.469,384,2.882,400,2.544,404,3.138,438,2.653,456,3.496,481,2.259,485,5.942,492,4.246,495,3.963,498,3.572,601,3.963,867,3.189,868,3.963,904,2.096,943,3.426,995,2.653,1005,6.309,1015,4.246,1098,4.093,1265,4.429,1289,4.658,1292,8.757,1293,7.892,1294,4.965,1295,5.432,1296,3.655,1297,5.432,1298,3.747,1299,5.432,1300,5.432,1301,5.432,1302,5.432,1303,4.429,1304,3.848,1305,5.432,1306,4.658,1307,5.432]],["t/170",[1,1.639,2,1.356,4,1.489,14,1.665,17,1.416,28,1.862,45,2.444,46,2.01,49,1.267,58,1.613,59,0.962,60,1.935,74,1.957,82,1.468,93,1.098,112,1.328,121,1.059,143,0.815,152,0.575,164,1.356,166,1.646,180,1.308,182,1.801,185,1.59,240,1.21,241,1.023,245,0.746,251,1.898,254,2.042,255,2.139,264,1.328,292,2.169,304,1.157,306,3.492,324,1.866,329,2.069,335,1.385,336,1.151,353,1.909,365,1.401,366,1.995,373,1.189,378,5.313,380,1.29,381,2.593,399,0.932,417,2.784,418,3.645,432,1.45,438,2.277,454,1.001,469,2.069,478,1.468,485,2.614,492,3.645,494,1.826,495,2.069,531,1.433,585,2.593,624,1.74,671,2.069,695,1.826,773,1.755,904,1.273,905,1.408,935,2.433,960,1.909,974,2.833,995,3.358,1013,3.607,1027,1.826,1028,1.909,1030,2.384,1032,5.635,1045,3.072,1049,3.607,1138,1.567,1146,2.433,1159,5.091,1218,2.433,1290,3.999,1304,2.01,1308,5.937,1309,2.217,1310,2.836,1311,1.909,1312,2.433,1313,2.836,1314,2.836,1315,2.836,1316,2.836,1317,2.836,1318,4.262,1319,2.836,1320,2.836,1321,2.836,1322,2.836,1323,5.937,1324,2.836,1325,2.593,1326,3.402,1327,2.836,1328,2.836,1329,2.593,1330,2.593,1331,2.593,1332,2.836,1333,2.836,1334,2.836,1335,2.836,1336,2.836,1337,2.836,1338,2.836,1339,2.836]],["t/172",[1,1.492,49,1.015,60,2.57,121,2.581,125,2.272,142,1.286,143,1.209,152,0.853,204,4.802,241,1.739,245,1.818,363,4.548,400,3.238,455,2.405,498,4.548,616,1.762,624,3.765,753,3.996,784,4.865,788,4.548,899,5.405,900,4.362,956,4.548,961,4.451,1030,3.535,1114,5.931,1118,6.322,1340,6.915,1341,5.931,1342,6.915]],["t/174",[1,1.251,4,2.015,49,0.851,60,1.477,85,4.972,112,2.715,121,2.999,152,0.715,166,2.046,180,1.626,254,2.539,306,3.112,370,3.657,374,4.379,378,5.096,380,2.636,436,2.636,454,2.046,456,3.732,477,2.715,480,2.495,485,5.17,492,4.532,493,4.369,494,3.732,497,5.3,498,6.55,507,4.107,531,2.929,700,3.117,735,2.661,904,1.582,960,3.902,995,2.831,1005,4.107,1029,3.076,1049,3.522,1098,4.369,1132,4.532,1133,3.999,1154,4.972,1196,3.404,1289,4.972,1318,5.3,1343,8.036,1344,5.797,1345,4.727,1346,5.797,1347,5.797,1348,5.797,1349,5.797]],["t/176",[60,2.182,61,3.787,93,3.317,112,4.012,121,3.197,242,4.095,255,3.087,280,3.268,317,2.326,438,4.184,1093,5.03,1296,5.765,1350,8.567,1351,5.765,1352,8.567]],["t/178",[1,1.096,4,1.274,60,1.294,82,2.628,93,1.967,121,1.896,166,1.793,170,2.536,179,2.332,189,4.925,242,2.428,317,1.379,366,2.181,397,2.566,400,2.378,456,5.523,458,3.418,554,3.269,683,2.186,753,2.935,940,3.418,961,3.269,1005,6.079,1105,4.141,1106,3.143,1132,3.97,1133,3.504,1140,3.97,1284,4.141,1292,4.356,1293,4.141,1296,3.418,1353,2.89,1354,5.079,1355,4.356,1356,5.079,1357,4.643,1358,7.319,1359,5.079,1360,5.079,1361,5.079,1362,5.079,1363,5.079,1364,5.079,1365,7.319,1366,5.079,1367,8.58,1368,5.079,1369,7.319,1370,5.079,1371,5.079,1372,5.079,1373,5.079,1374,5.079,1375,5.079,1376,5.079,1377,5.079,1378,7.319,1379,5.079,1380,4.643,1381,5.079]],["t/180",[1,0.575,4,1.55,28,0.592,35,0.797,45,0.947,47,0.998,49,0.65,52,1.136,53,0.987,56,0.656,58,1.255,60,0.924,82,0.767,88,0.885,91,2.172,141,0.975,142,0.823,143,0.259,147,1.177,148,2.506,152,0.629,153,1.072,158,1.159,164,1.734,166,1.28,169,0.844,170,0.741,179,1.223,188,1.492,197,2.69,198,1.564,201,1.493,204,2.707,215,0.808,216,3.755,225,1.872,227,0.484,230,0.65,242,3.163,251,0.409,254,1.167,255,2.227,260,0.819,265,1.178,270,1.136,273,0.453,281,0.973,284,0.423,297,0.739,303,0.566,304,1.099,306,1.405,309,1.791,317,0.403,323,0.464,329,1.082,337,1.003,351,0.538,354,0.918,361,0.687,362,1.159,365,0.732,366,2.203,378,2.004,380,0.674,387,1.082,397,1.346,400,0.694,404,0.857,411,1.272,422,2.835,436,2.32,438,1.301,455,0.394,456,0.955,471,2.502,494,1.715,495,1.082,499,1.272,507,1.051,509,2.894,531,0.749,542,1.099,545,0.538,554,2.85,566,5.499,616,0.679,674,0.786,683,1.905,686,0.998,691,0.724,695,2.335,741,1.159,753,0.857,754,2.008,794,1.209,799,1.192,803,1.023,804,2.073,811,1.117,826,0.448,899,2.082,905,0.448,914,1.36,932,0.918,963,1.452,964,2.739,979,2.033,992,1.051,995,0.724,1004,3.797,1005,3.137,1016,0.998,1029,0.787,1030,0.758,1054,1.432,1065,1.887,1071,2.441,1072,2.386,1073,2.502,1074,0.857,1077,1.752,1086,1.648,1087,2.599,1088,0.975,1114,1.272,1197,1.117,1261,1.887,1265,1.209,1292,1.272,1293,1.209,1326,1.082,1382,1.483,1383,3.316,1384,1.483,1385,1.483,1386,1.483,1387,4.427,1388,7.001,1389,1.483,1390,1.483,1391,1.483,1392,1.483,1393,2.435,1394,1.483,1395,1.483,1396,1.483,1397,3.61,1398,1.483,1399,1.483,1400,1.483,1401,1.483,1402,0.975,1403,1.483,1404,1.483,1405,1.483,1406,1.483,1407,1.483,1408,1.483,1409,1.483,1410,1.356,1411,1.483,1412,3.845,1413,2.435,1414,1.483,1415,3.627,1416,2.664,1417,1.209,1418,1.082,1419,1.483,1420,1.483,1421,1.483,1422,1.272,1423,1.356,1424,2.664,1425,1.356,1426,3.627,1427,3.627,1428,3.627,1429,3.627,1430,2.664,1431,1.483,1432,1.483,1433,1.356,1434,1.483,1435,1.483,1436,1.483,1437,1.483,1438,2.664,1439,1.483,1440,2.664,1441,1.483,1442,1.483,1443,1.483,1444,1.483,1445,1.356,1446,1.483,1447,1.483,1448,1.483,1449,2.664,1450,1.483,1451,1.483,1452,1.483,1453,1.483,1454,1.483,1455,3.627,1456,1.483,1457,1.483,1458,1.483]],["t/182",[4,1.503,8,1.983,12,1.85,15,1.389,28,1.882,45,1.675,50,1.469,53,1.065,58,0.994,59,1.599,60,0.732,112,1.346,117,1.661,121,2.236,134,2.207,142,0.876,147,1.945,148,0.858,152,0.739,153,1.157,166,1.015,167,1.307,180,0.806,188,0.969,205,1.237,213,0.789,217,2.605,242,1.374,251,0.793,255,2.962,270,1.226,284,0.82,296,1.015,306,1.113,323,0.899,337,0.652,347,1.195,366,2.226,376,1.097,378,1.588,400,1.346,407,2.344,436,1.307,456,1.85,477,1.346,490,1.419,493,2.166,494,1.85,498,1.89,509,3.246,518,2.41,525,1.983,542,1.185,566,6.5,568,2.247,569,2.628,570,3.462,571,2.344,594,2.628,598,2.628,618,1.333,624,1.759,631,1.983,640,1.746,671,2.097,735,1.32,741,5.981,773,2.917,804,1.346,904,0.785,914,0.633,983,2.917,995,1.404,1004,2.465,1005,3.34,1015,2.247,1029,1.525,1049,2.864,1064,2.247,1143,2.465,1197,2.166,1325,2.628,1383,4.309,1393,2.628,1397,3.843,1412,3.552,1413,4.309,1417,4.886,1425,4.309,1459,2.628,1460,2.874,1461,2.874,1462,2.874,1463,7.652,1464,4.714,1465,4.714,1466,4.714,1467,2.465,1468,2.344,1469,2.874,1470,2.874,1471,3.552,1472,4.714,1473,2.874,1474,4.043,1475,4.714,1476,2.874,1477,2.874,1478,2.874,1479,2.874,1480,2.874,1481,2.874,1482,2.874,1483,2.874,1484,1.635,1485,2.874,1486,2.874,1487,2.874]],["t/184",[2,3.083,4,1.617,65,2.932,112,3.02,121,2.407,124,3.726,204,4.585,246,5.258,285,4.151,327,4.151,366,2.087,422,5.041,700,3.467,799,2.119,914,1.419,940,4.34,960,4.34,1000,4.151,1030,3.297,1133,5.961,1293,5.258,1296,4.34,1423,5.895,1488,6.449,1489,8.641,1490,5.258,1491,5.258,1492,6.449,1493,6.449,1494,6.449,1495,6.449,1496,6.449,1497,6.449,1498,6.449,1499,6.449,1500,6.449,1501,6.449,1502,6.449,1503,6.449,1504,6.449]],["t/186",[1,1.083,4,1.259,15,2.425,42,3.924,49,1.065,52,2.141,61,2.219,95,3.106,125,3.069,134,2.351,138,3.463,142,2.027,143,1.633,147,1.629,148,1.498,149,2.452,150,4.305,151,3.783,153,3.759,188,1.692,201,4.068,224,2.179,230,2.199,256,4.577,257,3.557,263,2.664,269,6.95,270,3.096,298,3.378,303,1.915,380,3.299,420,2.774,423,2.021,480,3.123,686,3.378,695,3.231,735,2.304,768,3.231,807,3.302,943,3.166,963,2.735,1030,2.566,1075,2.735,1086,5.274,1087,4.261,1112,6.634,1276,5.917,1505,4.589,1506,5.02,1507,3.106,1508,5.02,1509,5.02,1510,5.02,1511,5.02,1512,5.02,1513,3.924,1514,5.02]],["t/188",[1,0.996,3,2.162,15,2.23,26,2.305,45,1.64,49,0.678,50,2.36,52,1.969,53,1.711,60,1.176,70,2.305,93,1.788,121,2.547,125,1.517,135,2.515,142,1.269,143,1.193,147,1.498,153,4.035,163,2.482,180,1.295,188,1.556,201,4.552,204,3.622,212,3.333,214,3.368,260,2.551,262,3.036,309,2.279,314,2.667,335,2.254,359,2.449,417,2.756,438,2.254,474,3.107,509,3.196,510,2.756,620,2.588,674,2.958,675,8.203,679,1.748,680,2.971,682,3.368,683,1.986,685,4.836,735,3.133,768,4.393,945,3.764,986,3.959,995,3.966,1032,3.184,1088,3.036,1093,2.71,1261,4.836,1515,5.144,1516,4.22,1517,6.825,1518,4.616,1519,4.616,1520,4.616,1521,3.959,1522,4.616,1523,4.616,1524,4.616,1525,4.616,1526,6.825,1527,4.616,1528,4.616,1529,3.764,1530,4.616]],["t/190",[45,1.327,49,0.853,58,2.468,61,2.569,121,1.394,125,2.866,142,1.497,143,0.653,145,2.576,147,1.886,148,2.403,153,2.339,204,1.982,212,1.824,213,1.025,216,4.334,227,1.22,229,2.919,245,0.982,255,1.346,277,2.125,284,2.035,285,3.741,303,1.425,346,1.621,347,1.553,351,1.355,366,1.956,370,2.356,400,1.749,446,2.722,509,2.721,510,2.23,518,2.971,519,2.356,525,2.576,526,2.646,554,2.404,559,3.045,560,2.814,561,4.543,563,3.045,691,1.824,703,3.203,705,3.203,735,1.715,804,4.325,932,3.596,963,2.035,995,2.838,1002,3.203,1028,4.801,1043,4.24,1053,2.646,1057,2.919,1064,2.919,1071,3.911,1072,3.822,1073,4.009,1086,5.396,1087,5.121,1088,4.692,1089,3.045,1099,4.984,1102,3.045,1139,3.414,1197,2.814,1260,3.414,1261,2.646,1262,3.414,1263,3.414,1264,4.739,1278,3.203,1304,2.646,1341,3.203,1531,3.203,1532,4.984,1533,3.735,1534,3.735,1535,3.735,1536,3.735,1537,3.203,1538,2.725,1539,3.735]],["t/192",[1,1.923,45,2.4,49,1.308,56,2.985,58,2.336,60,1.72,61,3.938,121,2.52,125,2.928,142,1.972,170,3.372,189,4.544,204,3.583,255,2.433,296,2.384,297,2.472,304,2.212,314,3.902,323,2.113,365,3.334,366,1.863,995,3.298,1028,4.544,1043,4.926,1111,5.089,1194,6.173,1242,6.173,1341,5.791,1540,6.752,1541,6.752,1542,5.791]],["t/194",[1,1.157,3,2.512,6,2.35,35,2.884,45,2.704,50,3.89,53,1.988,58,1.856,70,2.679,125,1.763,132,3.453,142,1.644,153,2.159,160,3.202,180,1.505,201,4.266,204,4.038,213,1.472,265,3.364,280,2.046,296,2.686,320,2.775,323,1.678,366,1.422,438,2.62,455,1.425,473,3.383,485,3.007,641,4.193,642,4.042,643,3.052,735,3.493,959,3.7,1012,3.8,1029,2.846,1030,3.89,1053,5.392,1077,3.528,1087,3.149,1104,5.735,1106,3.319,1111,6.665,1113,4.903,1115,4.374,1116,4.903,1177,4.6,1190,4.903,1252,4.903,1278,4.6,1279,4.903,1303,4.374,1513,4.193,1531,4.6,1537,4.6,1543,6.957,1544,5.364,1545,7.61,1546,5.364]],["t/196",[26,4.037,45,2.873,58,2.797,66,5.002,125,2.657,142,1.859,143,1.748,147,2.624,148,2.413,214,5.898,247,5.441,248,4.532,280,3.084,304,2.007,446,3.084,480,4.301,1030,4.133,1547,8.084]],["t/198",[1,1.233,3,1.712,26,1.826,42,4.467,45,1.299,49,1.168,53,1.355,60,1.456,61,1.616,66,3.536,71,1.992,78,1.992,90,2.667,96,3.536,121,1.364,125,2.312,142,1.479,143,1.933,147,2.284,148,1.706,164,3.364,165,2.112,166,1.29,167,1.662,168,2.857,177,2.59,178,2.404,179,1.678,180,1.025,182,1.355,188,1.232,195,3.846,196,2.522,198,4.672,201,3.945,204,1.94,213,1.931,214,5.134,222,1.965,224,1.587,225,2.976,226,2.854,239,1.977,245,1.85,248,2.049,255,2.059,280,2.18,294,2.667,297,1.014,304,1.975,320,1.891,323,1.144,337,1.595,365,2.822,480,1.573,533,1.437,611,3.759,640,3.472,803,2.522,905,1.104,964,3.536,974,2.221,995,1.785,1029,3.734,1030,1.869,1037,2.981,1038,2.59,1039,3.135,1042,2.46,1044,2.182,1045,1.891,1054,3.073,1056,2.667,1071,2.46,1072,2.404,1073,2.522,1077,2.404,1221,2.667,1515,4.307,1548,2.404,1549,3.342,1550,3.656,1551,3.342,1552,3.656,1553,2.857,1554,3.342,1555,3.135]],["t/200",[1,1.129,4,1.313,6,2.292,15,2.528,26,2.614,49,1.281,52,2.232,53,1.939,60,1.905,61,2.313,93,2.027,112,2.451,125,2.457,134,3.502,142,0.973,143,1.664,157,2.584,164,2.502,180,1.468,182,2.387,189,5.032,213,1.436,217,2.892,245,1.376,255,3.143,258,1.982,264,2.451,265,3.305,296,2.64,304,1.299,346,2.272,347,2.176,373,2.195,426,1.688,443,2.335,483,3.61,543,1.354,570,3.024,686,3.522,773,3.238,905,1.58,938,4.488,961,3.369,974,3.18,1013,3.18,1028,3.522,1029,2.777,1045,4.514,1049,3.18,1058,3.301,1059,4.784,1060,4.784,1061,4.267,1221,3.818,1515,5.635,1553,4.091,1556,5.233,1557,3.61,1558,4.784]],["t/202",[4,1.116,15,3.208,35,2.392,49,0.975,56,1.967,61,1.967,66,2.753,93,1.723,125,3.368,142,1.638,143,1.649,147,2.155,148,2.63,149,2.173,152,0.549,163,2.392,164,2.127,188,1.5,204,3.524,207,2.864,213,1.823,217,2.458,223,3.069,227,1.453,242,2.127,243,3.837,245,1.17,248,2.494,251,1.228,252,2.494,255,1.603,277,2.531,280,1.697,290,1.972,302,3.353,304,1.649,317,1.208,337,1.008,345,1.697,346,2.883,347,2.762,397,2.248,480,1.914,505,3.57,507,3.152,508,3.478,509,3.11,510,2.656,512,3.628,533,1.749,554,2.864,584,2.063,605,1.949,611,4.368,695,2.864,803,3.069,905,1.344,956,2.926,963,2.424,964,2.753,979,2.494,1030,2.274,1056,3.246,1086,4.109,1087,2.612,1092,3.353,1093,5.174,1124,2.994,1221,3.246,1553,3.478,1559,3.152,1560,4.449,1561,4.449,1562,4.067]],["t/204",[3,1.469,15,1.515,26,1.566,35,1.686,45,2.261,52,1.338,53,1.875,55,1.905,56,1.386,59,1.717,60,1.289,70,1.566,77,1.686,82,2.618,112,1.469,121,2.374,124,1.812,125,2.09,142,0.583,143,1.112,147,1.018,148,1.899,149,1.532,152,0.387,160,1.872,163,2.72,170,1.566,188,1.706,199,1.623,201,3.566,204,3.375,207,4.698,213,1.389,214,2.288,216,3.864,217,1.733,225,2.14,227,1.024,242,3.828,243,3.675,252,1.758,255,1.13,280,2.427,284,0.895,290,1.579,299,1.841,303,1.196,304,1.256,320,1.623,323,1.583,326,1.978,337,1.147,346,2.197,352,2.288,361,1.454,366,1.751,394,1.233,400,2.979,415,1.978,446,1.93,471,2.163,509,1.469,510,1.872,542,1.293,545,1.138,683,2.737,746,2.288,803,2.163,868,2.288,932,1.94,963,1.709,964,1.94,995,3.106,1022,3.192,1029,1.664,1054,1.686,1071,4.281,1072,4.184,1073,4.388,1075,1.709,1083,4.34,1084,4.972,1086,4.955,1087,2.971,1088,2.063,1093,2.971,1094,2.557,1235,2.363,1261,4.507,1515,4.793,1516,4.626,1531,2.69,1532,4.34,1538,2.288,1553,2.451,1559,5.171,1563,3.136,1564,3.136,1565,3.136,1566,3.136,1567,2.451,1568,2.69,1569,2.69,1570,2.69,1571,2.867,1572,2.69,1573,4.126,1574,2.69]],["t/206",[4,2.138,45,1.784,49,0.737,59,1.703,79,3.05,82,2.597,112,3.398,121,2.709,142,1.585,143,0.878,148,2.957,152,0.619,201,2.814,204,3.851,213,1.992,216,4.409,225,3.069,227,1.639,238,2.452,251,1.385,270,2.141,280,3.939,305,1.313,337,1.645,346,4.3,355,2.053,366,1.356,400,2.351,505,2.699,800,3.463,804,3.991,868,3.662,956,3.302,995,2.452,1058,3.166,1065,3.557,1084,5.672,1086,3.106,1088,4.773,1089,4.093,1091,6.224,1093,2.947,1198,4.305,1418,3.662,1559,3.557,1575,4.589,1576,6.634,1577,4.589,1578,4.589,1579,4.093,1580,4.305,1581,4.305,1582,4.093,1583,4.305,1584,4.305]],["t/208",[3,1.463,45,1.793,49,0.459,58,1.746,78,2.749,79,1.898,82,3.283,96,1.933,112,2.971,121,1.883,124,1.805,125,1.027,142,0.581,143,0.882,147,2.364,148,2.386,152,0.783,170,1.56,177,2.214,188,1.053,198,3.726,201,1.752,204,4.966,207,3.248,216,5.464,217,1.727,223,2.155,225,3.38,243,1.805,245,0.822,246,2.548,248,3.557,258,1.183,260,2.788,264,2.363,277,1.778,280,2.779,284,0.891,290,0.776,303,1.925,304,0.776,314,1.805,335,1.526,346,1.357,347,1.299,351,1.134,353,2.103,359,1.658,360,2.52,361,1.449,366,2.017,370,1.971,388,1.579,399,1.027,509,2.363,510,3.012,525,2.155,526,2.214,531,2.549,554,3.248,674,1.489,919,3.122,995,2.464,1056,2.28,1070,2.442,1083,2.68,1084,3.944,1086,1.933,1088,3.318,1089,2.548,1091,2.68,1092,2.355,1093,1.835,1106,1.933,1124,3.395,1261,4.496,1276,2.548,1418,2.28,1490,2.548,1532,2.68,1559,3.575,1579,2.548,1580,2.68,1581,2.68,1582,2.548,1583,2.68,1584,2.68,1585,2.28,1586,1.866,1587,4.612,1588,2.856,1589,2.856,1590,2.856,1591,2.856,1592,2.856,1593,2.856,1594,2.856,1595,2.856,1596,2.856,1597,2.856,1598,2.856,1599,2.68,1600,2.856,1601,2.856,1602,2.856,1603,2.68,1604,2.856,1605,2.856,1606,2.856,1607,3.125,1608,3.944,1609,3.125,1610,2.68,1611,2.856]],["t/210",[34,2.521,35,2.23,49,0.609,56,1.834,70,2.072,93,1.607,125,2.071,137,3.383,142,1.416,143,1.332,148,1.881,152,0.512,162,2.939,163,2.23,165,2.397,167,2.865,179,1.905,180,1.164,182,0.984,188,1.398,201,3.532,204,2.201,227,1.355,228,2.729,235,4.748,238,2.026,290,1.03,304,1.03,310,3.126,320,2.147,325,2.939,335,2.026,339,3.793,345,1.583,347,3.168,351,1.505,358,2.369,366,1.589,380,1.886,394,1.631,413,3.558,438,2.026,485,2.326,531,2.096,534,3.383,535,3.558,600,3.243,611,2.729,640,2.521,735,1.905,748,2.671,804,1.943,940,2.792,995,3.077,1009,2.939,1029,3.343,1075,2.261,1077,2.729,1086,4.714,1087,3.7,1088,5.595,1093,3.7,1106,3.899,1111,3.126,1124,4.24,1130,3.558,1261,4.464,1264,5.138,1267,3.027,1275,2.521,1303,3.383,1418,3.027,1490,3.383,1573,3.383,1579,3.383,1582,3.383,1612,4.149,1613,3.793,1614,5.76,1615,3.793,1616,5.76,1617,5.76,1618,5.76,1619,5.76,1620,4.149,1621,2.939,1622,7.618]],["t/212",[8,2.645,15,1.853,34,2.33,42,2.997,45,2.108,49,1.065,52,1.636,53,1.421,56,1.695,59,1.301,60,2.08,61,2.622,82,1.984,93,2.809,121,1.431,124,2.216,125,1.949,142,1.103,143,1.544,147,1.245,148,1.145,152,1.007,180,1.076,188,1.293,201,4.066,204,3.147,209,2.182,213,2.423,217,4.008,240,3.094,241,1.023,243,2.216,245,1.008,254,1.68,255,1.382,290,0.952,297,1.064,304,0.952,314,2.216,335,1.873,337,1.644,351,1.391,365,2.929,366,1.525,373,1.608,380,1.743,470,3.289,485,2.15,533,2.332,621,1.894,674,1.132,679,1.519,768,3.818,803,2.645,964,3.67,979,2.15,983,2.373,1000,2.468,1029,2.035,1049,2.33,1068,2.89,1086,3.67,1087,2.252,1088,2.522,1102,3.127,1103,3.289,1104,2.89,1119,4.327,1127,3.289,1156,2.33,1192,3.505,1221,2.798,1235,2.89,1265,3.127,1266,3.505,1468,3.127,1537,3.289,1555,8.006,1557,2.645,1569,3.289,1623,3.835,1624,3.835,1625,3.835,1626,2.798,1627,7.002,1628,3.835,1629,3.505,1630,3.505,1631,3.835]],["t/214",[34,4.74,45,1.534,50,2.206,112,3.04,116,3.252,117,2.493,121,1.611,124,2.493,125,2.133,142,0.802,143,1.364,148,1.288,152,0.962,177,3.057,201,2.419,213,2.141,232,3.701,234,1.697,240,3.328,245,1.134,255,1.555,258,1.634,270,1.841,288,2.576,309,2.131,314,2.493,346,1.873,347,1.794,351,2.831,352,3.148,366,2.032,393,4.581,394,1.697,399,1.418,508,3.373,509,2.021,542,2.677,615,2.904,616,1.653,621,2.131,679,1.662,683,1.857,735,1.981,748,5.022,768,4.178,940,2.904,995,2.107,1028,2.904,1086,2.67,1088,5.132,1093,3.811,1515,3.252,1553,3.373,1572,3.701,1573,5.293,1574,3.701,1599,3.701,1603,3.701,1610,3.701,1627,8.952,1632,3.945,1633,3.945,1634,3.945,1635,1.066,1636,3.945,1637,3.945,1638,3.373,1639,4.315,1640,4.315,1641,3.945,1642,3.945,1643,3.945]],["t/216",[1,0.3,3,0.651,4,1.6,26,0.694,34,1.526,45,1.222,49,0.799,53,1.274,56,0.614,58,1.459,59,1.43,60,0.354,70,0.694,82,1.3,112,1.177,121,0.519,124,1.987,125,1.13,142,1.013,143,1.345,147,1.116,148,1.774,151,1.047,152,1.195,170,0.694,174,1.086,179,0.638,180,0.965,182,0.329,188,1.421,191,0.779,198,1.475,201,1.408,204,2.237,207,1.617,213,1.856,214,1.014,216,0.844,217,1.9,225,1.454,227,0.454,235,1.047,240,1.072,242,0.664,243,1.452,245,0.661,248,0.779,255,0.501,256,0.876,264,0.651,265,1.111,269,1.133,270,0.593,280,1.608,281,0.508,284,0.396,285,1.617,290,0.624,303,0.53,304,0.345,313,1.142,314,1.452,317,0.377,320,0.719,335,2.059,337,0.315,346,1.83,347,2.652,351,2.578,358,0.522,360,0.694,361,0.644,366,2.099,380,1.142,383,0.719,393,2.019,394,1.352,398,1.27,399,0.457,418,4.645,438,0.679,455,0.914,474,0.935,480,0.598,485,0.779,505,1.351,509,0.651,518,1.284,519,1.585,525,0.959,526,0.984,531,0.702,534,1.133,535,1.192,542,0.573,543,0.36,554,0.894,570,1.452,600,1.964,615,0.935,616,0.354,620,0.779,621,1.698,628,3.303,636,1.27,659,1.192,660,1.893,665,0.831,666,2.297,674,1.015,679,0.356,683,1.814,709,0.737,735,1.579,748,2.213,768,2.213,769,1.585,807,0.914,868,1.014,963,0.757,964,0.86,979,0.779,983,0.86,1029,1.825,1030,0.71,1053,0.984,1054,0.747,1071,2.314,1072,2.262,1073,1.733,1075,0.757,1084,2.688,1086,3.37,1087,1.475,1088,3.908,1093,1.475,1094,1.133,1104,2.591,1111,1.893,1119,3.558,1120,2.049,1122,1.047,1124,0.935,1125,1.192,1126,1.893,1130,1.192,1156,0.844,1246,2.297,1247,2.297,1248,2.297,1249,2.297,1261,0.984,1264,1.133,1303,1.133,1418,2.509,1513,1.086,1515,1.047,1542,1.192,1555,2.949,1557,0.959,1559,1.78,1571,1.27,1572,2.155,1573,2.804,1574,2.155,1575,1.27,1576,2.297,1577,1.27,1578,1.27,1579,2.804,1580,2.155,1581,2.155,1582,2.804,1583,2.155,1584,2.155,1587,1.27,1588,1.27,1589,1.27,1590,1.27,1591,1.27,1592,1.27,1593,1.27,1594,1.27,1595,1.27,1596,1.27,1597,1.27,1598,1.27,1599,2.155,1600,1.27,1601,1.27,1602,1.27,1603,2.155,1604,1.27,1605,1.27,1606,1.27,1610,2.155,1611,1.27,1613,1.27,1614,2.297,1615,1.27,1616,2.297,1617,2.297,1618,2.297,1619,1.27,1626,1.014,1627,4.671,1629,1.27,1633,1.27,1634,1.27,1635,0.62,1636,1.27,1637,1.27,1641,1.27,1642,1.27,1643,1.27,1644,0.894,1645,1.39,1646,2.512,1647,2.512,1648,2.512,1649,2.512,1650,2.512,1651,2.512,1652,2.512,1653,2.512,1654,1.39,1655,1.39,1656,1.39,1657,1.39,1658,1.39,1659,2.155,1660,1.39,1661,1.39,1662,1.133]],["t/218",[3,3.187,45,2.419,49,0.999,93,2.635,112,4.194,132,4.381,138,4.695,143,1.19,152,0.839,156,5.32,157,3.361,160,4.063,169,3.872,179,3.124,180,1.909,213,1.868,217,3.761,249,5.32,293,3.479,322,5.549,480,3.854,686,4.58,709,3.611,983,4.211,1009,4.822,1029,3.611,1030,4.578,1039,5.837,1133,4.695,1568,5.837,1621,4.822,1663,6.806,1664,5.837,1665,4.695,1666,6.806,1667,6.806,1668,6.806,1669,6.222]],["t/220",[1,2.132,3,3.716,45,3.512,55,4.821,65,3.608,104,7.209,121,2.962,230,3.476,373,3.328,474,5.34,477,3.716,485,5.539,1380,7.254,1664,6.805,1670,6.805,1671,7.935,1672,7.254,1673,7.935,1674,7.935]],["t/222",[3,3.238,4,1.734,9,4.06,55,4.201,61,3.057,84,4.899,92,6.322,112,4.238,121,2.581,191,5.073,280,2.638,334,4.77,358,2.6,480,4.341,485,3.876,498,5.952,735,3.175,799,2.272,804,3.238,960,4.654,1000,5.825,1030,4.626,1133,6.243,1284,5.639,1331,6.322,1402,4.548,1621,4.899,1664,5.931,1675,6.322,1676,6.915,1677,6.915]],["t/224",[1,1.702,2,2.699,3,2.644,4,1.979,10,4,52,2.408,58,1.953,61,2.495,66,3.493,82,2.921,112,3.694,121,2.107,142,1.05,180,1.584,191,4.422,213,1.549,227,1.844,288,3.37,347,2.348,426,3.175,438,3.853,477,2.644,480,2.429,498,3.713,533,2.22,674,2.328,735,2.592,799,1.855,904,1.541,960,5.309,1028,3.799,1029,5.496,1030,4.033,1087,3.315,1288,6.853,1529,4.603,1678,4.413,1679,2.852,1680,5.645,1681,4.603,1682,5.645,1683,5.645,1684,5.645,1685,5.645,1686,5.161,1687,3.634,1688,5.645,1689,5.645,1690,5.645,1691,5.645]],["t/227",[1,1.202,3,3.661,6,2.441,26,2.783,49,0.818,53,2.065,60,2.3,61,2.463,90,4.065,112,2.609,142,1.454,143,1.579,145,3.844,147,2.931,152,0.687,162,3.948,164,2.664,168,4.356,170,2.783,180,1.563,182,2.141,188,1.878,201,4.382,209,3.17,245,2.374,250,4.779,280,3.445,352,4.065,362,4.356,426,2.913,438,2.721,478,2.883,481,2.317,542,2.298,605,2.441,695,3.587,735,2.558,771,4.779,794,4.544,799,2.967,960,3.75,1000,3.587,1029,4.148,1032,3.844,1042,3.75,1061,6.374,1353,3.17,1692,5.094]],["t/229",[1,1.821,2,3.532,3,1.262,6,2.508,15,2.159,17,1.346,45,1.588,47,3.008,48,1.859,49,1.084,60,2.718,65,1.225,66,1.667,67,1.637,70,1.346,83,1.316,93,1.043,112,1.262,117,1.557,120,1.468,124,1.557,125,0.885,134,2.093,135,1.468,138,1.859,142,0.501,143,1.476,146,3.078,152,0.551,165,1.557,167,1.225,169,2.543,180,2.235,182,1.06,188,1.93,189,1.813,212,1.316,213,2.028,224,1.94,234,1.059,240,2.443,241,0.464,242,1.288,243,2.582,245,1.943,250,2.311,254,1.18,255,1.61,290,1.109,293,2.927,298,1.813,304,1.421,312,2.106,320,2.963,324,1.772,325,1.909,335,1.316,336,1.813,337,1.298,347,1.858,349,2.463,365,3.649,373,2.794,383,1.394,396,1.966,397,1.361,400,1.262,404,2.582,416,1.7,417,1.609,426,0.869,438,3.254,454,1.577,471,1.859,483,4.596,485,3.735,605,1.958,613,1.609,672,1.7,679,0.69,696,1.237,700,2.403,735,1.237,736,1.449,753,1.557,772,2.106,799,1.882,803,1.859,866,1.637,890,5.235,904,1.22,905,1.729,961,1.734,963,1.468,964,3.543,974,3.479,1029,1.43,1030,1.377,1032,1.859,1038,1.909,1042,3.854,1044,1.609,1045,1.394,1049,3.479,1065,1.909,1138,1.489,1186,2.463,1304,1.909,1507,1.667,1659,2.311,1693,6.091,1694,2.694,1695,2.694,1696,2.694,1697,2.694,1698,1.772,1699,2.463,1700,2.03]],["t/231",[3,4.012,19,6.07,45,3.045,60,2.182,112,4.012,146,5.568,180,2.905,347,3.563,485,6.24,1049,6.292]],["t/233",[1,1.874,4,1.63,6,2.846,26,3.245,49,1.275,53,2.408,60,2.212,61,2.872,104,4.74,112,3.043,121,2.425,143,1.136,164,3.106,166,2.294,180,1.823,213,1.783,217,3.59,240,2.772,243,3.754,254,2.846,255,3.129,290,1.613,370,4.098,373,4.102,387,4.74,400,3.043,438,4.241,481,2.702,483,4.482,485,4.868,489,5.298,735,2.983,959,4.482,963,3.541,1038,4.604,1049,3.948,1127,5.572,1699,5.94,1701,6.498]],["t/235",[1,1.599,3,2.419,4,2.283,6,1.41,8,2.22,19,2.28,26,1.607,28,2.063,37,3.084,45,1.836,49,0.472,52,1.373,53,2.398,55,1.955,56,1.423,58,1.113,59,1.092,60,0.82,61,1.423,62,2.348,77,1.73,82,1.665,84,4.586,90,2.348,95,1.991,112,1.507,124,1.859,136,2.624,142,1.378,143,1.132,147,2.101,148,0.961,152,1.236,166,1.136,170,2.58,179,1.477,180,2.553,182,2.427,185,1.804,191,2.896,217,1.778,251,1.426,281,1.176,284,1.474,285,2.072,306,2.506,320,2.673,342,2.516,347,4.336,351,1.168,359,1.708,362,2.516,388,1.626,400,1.507,426,1.038,438,2.523,455,0.855,456,4.166,480,2.223,485,1.804,533,2.913,611,2.117,620,4.153,735,2.372,794,2.624,826,0.972,904,1.767,992,2.28,995,1.572,1029,2.741,1030,1.645,1032,2.22,1049,4.929,1063,2.942,1071,2.166,1072,2.117,1073,2.22,1119,5.405,1124,2.166,1125,2.76,1126,2.425,1133,2.22,1143,4.431,1286,2.942,1670,2.76,1675,2.942,1692,2.942,1693,2.942,1702,3.218,1703,3.218,1704,3.218,1705,3.218,1706,2.942]],["t/237",[65,4.325,879,7.757,1707,8.159,1708,9.514,1709,9.514]],["t/239",[3,4.927,6,0.426,9,3.772,17,1.269,22,1.801,24,0.655,35,0.523,36,0.835,43,0.89,46,0.69,49,0.806,51,0.326,57,3.058,59,0.33,60,1.399,61,0.801,65,0.442,67,1.101,78,0.53,79,1.934,90,1.854,94,0.671,100,4.681,106,5.33,107,8.092,108,0.89,110,0.835,111,1.656,112,1.19,114,0.89,115,3.429,116,0.733,121,0.676,128,0.89,135,0.53,158,0.761,166,0.64,169,4.403,178,0.64,181,5.001,182,0.231,187,0.89,188,0.328,196,3.25,198,0.571,199,0.504,205,1.614,209,2.68,212,3.266,224,0.423,225,1.346,226,0.486,236,0.562,240,0.415,242,0.465,246,0.794,249,0.761,256,0.614,260,2.352,262,0.64,265,0.43,271,0.761,277,0.554,280,1.214,281,0.662,284,0.278,288,0.581,295,1.365,298,0.655,299,1.492,304,0.242,307,0.794,310,0.733,314,0.562,317,1.39,318,3.864,323,0.305,327,0.626,328,1.656,334,1.25,347,0.405,350,0.89,354,0.602,355,0.398,370,0.614,383,0.504,384,1.689,386,0.89,388,0.915,397,1.608,412,2.73,416,0.614,417,2.542,438,0.885,439,0.733,443,0.434,445,2.685,446,0.691,455,0.675,462,0.671,474,0.655,476,0.671,481,1.057,506,0.71,509,0.456,542,0.401,545,0.353,584,0.451,602,0.835,605,0.794,613,1.518,621,0.481,672,2.685,674,0.535,690,0.89,710,1.801,753,1.047,768,2.049,772,1.987,799,0.32,801,0.456,809,1.365,830,0.465,861,0.835,919,1.969,935,0.835,939,0.581,943,1.143,960,1.711,995,0.885,1015,1.416,1017,0.733,1027,2.049,1054,0.974,1058,0.614,1075,3.501,1079,2.74,1107,0.89,1109,1.031,1151,0.835,1196,0.571,1208,0.69,1254,1.656,1312,0.835,1351,1.219,1459,0.89,1490,0.794,1513,1.416,1521,0.835,1548,0.64,1554,6.539,1559,0.69,1570,0.835,1585,0.71,1630,3.892,1638,0.761,1659,5.001,1678,1.987,1679,2.151,1710,7.153,1711,2.542,1712,1.365,1713,5.831,1714,6.141,1715,3.429,1716,6.141,1717,1.812,1718,5.121,1719,0.973,1720,0.973,1721,1.812,1722,0.973,1723,0.973,1724,0.973,1725,0.973,1726,0.973,1727,0.973,1728,1.812,1729,2.542,1730,0.89,1731,0.973,1732,0.973,1733,0.973,1734,2.542,1735,0.591,1736,0.89,1737,0.973,1738,7.23,1739,0.973,1740,0.973,1741,0.973,1742,1.477,1743,2.18,1744,0.973,1745,0.973,1746,3.183,1747,1.812,1748,1.812,1749,3.751,1750,1.812,1751,0.973,1752,0.973,1753,1.987,1754,0.973,1755,1.656,1756,2.542,1757,1.812,1758,1.554,1759,1.812,1760,1.812,1761,1.812,1762,1.656,1763,2.542,1764,1.812,1765,1.812,1766,2.542,1767,1.812,1768,0.973,1769,4.711,1770,1.812,1771,2.542,1772,0.835,1773,2.542,1774,2.542,1775,0.973,1776,0.973,1777,1.812,1778,0.973,1779,0.973,1780,0.973,1781,0.973,1782,2.542,1783,0.973,1784,2.008,1785,0.973,1786,0.973,1787,0.973,1788,0.89,1789,2.542,1790,1.554,1791,0.71,1792,0.761,1793,0.71,1794,0.973,1795,0.973,1796,0.973,1797,0.761,1798,0.835,1799,0.973,1800,0.973,1801,0.973,1802,0.973,1803,0.973,1804,0.973,1805,0.973,1806,0.89,1807,0.973,1808,0.89,1809,0.973,1810,0.69,1811,0.973,1812,4.257,1813,1.812,1814,2.542,1815,0.973,1816,0.973,1817,0.973,1818,1.656,1819,0.973,1820,3.751,1821,0.973,1822,0.973,1823,1.812,1824,0.973,1825,0.973,1826,0.973,1827,3.751,1828,0.973,1829,0.973,1830,0.614,1831,0.89,1832,0.973,1833,1.477,1834,0.973,1835,0.973,1836,0.973,1837,0.89,1838,0.973,1839,0.973,1840,0.973,1841,1.812,1842,0.835,1843,0.973,1844,0.973,1845,0.761,1846,0.973,1847,0.973,1848,0.973,1849,0.973,1850,0.973,1851,0.973]],["t/241",[49,1.233,83,4.102,182,2.426,273,2.566,296,2.965,306,3.253,327,5.407,383,4.346,426,3.301,902,5.015,904,2.293,1172,3.894,1304,5.951,1852,5.407,1853,5.653]],["t/243",[171,2.543,306,3.725,426,3.103,462,6.636]],["t/245",[121,2.581,143,1.209,171,1.828,245,2.379,273,2.113,288,4.129,358,2.6,394,2.719,399,2.272,487,5.211,609,4.77,616,1.762,617,2.293,620,3.876,679,1.771,789,5.6,795,5.405,805,4.201,904,1.888,905,2.088,1854,5.825,1855,8.273,1856,4.899,1857,6.322,1858,6.322,1859,6.322,1860,6.322,1861,8.273,1862,5.931,1863,6.322,1864,6.322,1865,6.322,1866,5.639]],["t/247",[1,2.108,143,1.362,171,2.059,180,2.186,182,2.316,245,2.048,273,2.381,292,2.847,426,3.151,616,2.489,617,2.476,624,3.646,679,1.995,904,2.127,905,2.353,1213,5.52,1867,5.872,1868,5.872,1869,7.123]],["t/249",[143,1.303,171,1.97,182,2.479,245,1.96,273,2.278,296,3.353,303,2.844,317,2.024,426,3.064,459,2.954,533,2.931,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1172,3.456,1203,4.529,1204,6.573,1870,5.281,1871,5.617,1872,5.617]],["t/251",[1,1.744,49,1.187,182,1.917,296,3.528,306,3.131,366,1.51,426,3.224,617,2.049,665,2.673,904,2.207,995,3.948,1873,7.39,1874,8.084,1875,8.084,1876,7.39,1877,8.084,1878,7.39,1879,5.728,1880,8.084]],["t/253",[167,3.934,182,2.651,296,3.054,320,4.477,665,2.862,826,3.146,1538,6.313,1853,5.823,1879,7.382,1881,6.521]],["t/255",[1,1.769,49,1.014,50,2.398,53,2.56,71,2.556,83,2.291,142,0.872,143,0.82,171,1.24,182,2.589,213,1.288,222,2.522,236,2.711,264,2.197,292,2.524,303,1.79,318,2.711,323,2.161,324,4.543,340,4.446,414,2.427,421,2.113,426,1.513,428,2.669,455,1.247,481,1.951,513,3.324,584,2.175,616,2.088,618,3.202,624,3.598,679,2.316,807,3.086,823,2.801,937,3.535,939,2.801,991,3.825,1044,2.801,1045,3.574,1079,4.446,1193,4.193,1687,3.02,1735,4.197,1830,2.959,1853,3.157,1882,4.692,1883,5.632,1884,6.908,1885,3.825,1886,3.825,1887,3.667,1888,3.535,1889,3.825,1890,3.236,1891,3.667,1892,7.069,1893,3.825,1894,3.423,1895,3.825,1896,4.289,1897,3.825]],["t/257",[1,1.849,49,1.257,182,2.031,306,3.317,366,1.601,426,3.34,617,2.171,904,2.338,1853,6.97,1873,7.832,1898,8.567,1899,8.567,1900,8.567]],["t/259",[167,4.423,248,5.454,1538,7.098]],["t/261",[182,2.532,296,3.182,665,2.981,826,2.723,902,5.383,914,1.984,1879,7.565,1901,6.794]],["t/263",[1,1.865,37,3.85,39,3.467,49,0.947,51,2.16,93,2.497,142,1.199,182,2.311,306,2.497,323,2.018,366,2.087,426,2.787,459,2.555,481,2.682,533,2.536,617,1.634,618,2.99,621,3.184,624,2.407,665,2.133,700,3.467,816,3.726,904,1.76,914,1.419,1172,4.006,1203,3.918,1204,3.85,1876,5.895,1878,5.895,1885,5.258,1902,6.449,1903,6.449,1904,6.449,1905,6.449,1906,6.449,1907,6.449,1908,6.449,1909,5.895]],["t/265",[167,4.187,182,2.564,234,3.621,280,3.513,394,3.621,700,4.951,1538,6.718]],["t/267",[1,1.341,39,5.142,49,1.505,142,1.156,143,1.087,171,2.711,182,2.432,303,2.371,317,2.597,318,3.592,323,2.993,414,3.216,421,2.799,428,3.537,455,1.652,459,3.34,512,5.068,584,2.882,624,2.32,665,2.056,679,2.159,1193,4.97,1687,4.001,1887,4.859,1888,4.684,1889,5.068,1890,4.288,1891,4.859,1896,5.682,1901,7.208]],["t/269",[28,4.161,209,4.923,306,3.351,313,3.934,426,2.791,609,5.969,816,5,914,2.293,1538,6.313,1568,7.421,1679,4.371,1910,6.764]],["t/271",[1,2.162,3,2.752,39,3.159,45,2.088,50,4.147,59,1.994,61,2.598,62,4.287,83,3.962,125,1.931,135,3.202,182,2.577,273,1.796,292,2.147,293,3.004,306,2.276,310,4.429,340,3.783,345,2.242,364,3.707,395,4.928,397,2.969,426,3.593,428,3.344,443,2.622,477,2.752,613,3.509,624,3.028,866,3.57,902,3.509,904,1.604,907,3.344,963,3.202,1150,4.429,1170,5.04,1353,3.344,1892,4.593,1894,5.918,1911,5.04,1912,5.877,1913,4.287,1914,5.877]],["t/273",[1,2.318,182,2.548,366,1.702,426,3.466,866,5.535,1137,8.329]],["t/276",[28,3.198,143,1.4,171,2.117,182,1.899,245,2.106,273,2.447,292,2.926,376,3.055,426,3.205,432,4.094,616,2.04,617,2.518,679,2.051,904,2.186,905,2.419,1044,4.782,1045,5.142,1915,7.321,1916,8.009]],["t/278",[79,5.006,88,4.919,143,1.441,171,2.178,185,4.618,245,2.166,273,2.517,292,3.01,426,2.657,432,4.212,616,2.099,617,2.563,624,3.075,904,2.249,905,2.488,1917,6.44,1918,7.066,1919,8.239]],["t/280",[143,1.362,157,3.847,171,2.059,213,2.138,226,3.891,244,4.771,245,2.048,273,2.381,304,1.934,359,4.134,517,5.684,616,1.985,617,2.476,679,2.502,816,4.502,904,2.127,905,2.353,1920,5.52,1921,5.52,1922,5.52,1923,6.09,1924,7.792]],["t/282",[58,2.579,60,2.42,132,4.798,143,1.303,167,3.389,171,1.97,244,3.64,245,1.96,273,2.278,277,4.241,317,2.024,359,5.04,455,2.524,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1054,4.007,1585,5.438,1856,5.281,1925,5.827,1926,5.827,1927,5.281,1928,5.827,1929,5.827]],["t/284",[4,1.548,5,3.893,49,0.906,50,3.155,56,2.728,93,2.39,132,3.973,143,1.079,171,1.631,179,4.375,182,2.535,224,2.679,245,1.623,247,4.153,273,1.886,296,2.961,313,3.814,329,4.502,345,2.354,358,3.154,394,2.427,419,5.032,426,1.991,601,4.502,616,1.572,617,2.126,620,3.46,679,1.58,683,2.656,805,3.749,904,1.685,905,1.864,943,3.893,1081,3.749,1172,2.861,1894,4.502,1913,4.502,1930,5.642,1931,5.293,1932,6.172,1933,6.172,1934,6.172,1935,5.642,1936,6.172]],["t/286",[1,1.568,4,1.822,55,4.414,60,2.38,88,4.338,143,1.27,171,1.92,213,1.994,215,3.959,217,4.015,245,1.91,273,2.22,290,2.32,361,3.368,400,3.402,426,2.343,455,1.931,533,2.857,616,1.851,617,2.368,679,1.86,826,2.194,904,1.983,905,2.194,1267,5.3,1937,8.543,1938,6.231,1939,7.265,1940,7.265]],["t/288",[79,5.054,88,4.966,143,1.454,171,2.199,182,1.972,185,4.663,245,2.187,273,2.542,616,2.119,617,2.578,773,5.147,774,5.598,904,2.271,905,2.512,1172,3.857,1941,8.319,1942,8.319]],["t/290",[6,2.783,49,0.933,50,5.29,56,2.809,79,3.86,88,3.793,143,1.111,171,1.679,180,1.782,182,2.028,185,3.562,218,5.449,222,4.599,245,1.67,273,1.941,358,2.389,417,3.793,426,2.049,459,2.518,610,4.635,616,1.619,617,2.168,679,1.627,695,4.09,773,3.931,774,4.276,904,1.734,905,1.919,914,1.398,1209,5.627,1505,5.808,1894,7.056,1910,6.687,1913,4.635,1943,4.383,1944,6.354,1945,6.354,1946,6.354,1947,5.449,1948,6.354]],["t/292",[34,2.675,39,2.367,58,3.033,59,2.236,71,2.4,95,2.725,143,0.77,160,2.629,161,3.442,182,2.781,199,2.278,215,2.4,219,3.442,230,1.929,256,2.778,264,2.062,296,3.095,302,3.318,303,2.514,315,2.964,317,2.38,323,1.378,342,3.442,345,2.514,376,1.68,426,2.126,459,3.129,481,1.831,533,1.731,584,2.042,605,1.929,613,2.629,624,1.644,665,2.899,695,2.835,799,1.447,826,1.33,914,0.969,925,6.025,977,3.694,1027,2.835,1058,2.778,1081,2.675,1141,3.318,1172,2.042,1193,2.042,1203,5.326,1204,5.605,1209,5.194,1548,2.896,1784,2.778,1853,5.9,1879,5.595,1892,6.173,1895,6.44,1949,4.404]],["t/294",[1,1.718,28,3.18,37,3.415,50,5.509,52,2.44,53,2.12,60,1.457,70,2.857,78,3.117,182,2.555,227,1.868,280,2.182,323,1.79,358,2.151,382,6.901,388,2.89,426,1.845,459,2.267,490,2.825,613,3.415,620,3.207,801,2.679,807,3.762,902,3.415,932,3.539,1017,4.311,1044,3.415,1081,3.475,1151,4.906,1209,5.237,1538,4.173,1678,4.471,1758,4.906,1894,7.224,1911,4.906,1913,4.173,1937,5.229,1947,4.906,1950,5.72,1951,5.72,1952,3.539,1953,2.706,1954,5.72,1955,5.229,1956,5.72,1957,5.229,1958,4.664]],["t/296",[1,0.745,37,2.06,49,0.506,51,1.156,52,1.472,53,1.279,58,1.194,59,1.171,70,1.723,77,3.644,88,2.06,93,2.115,110,4.684,146,1.855,163,1.855,169,1.963,180,1.532,182,2.588,185,3.8,191,1.934,224,1.498,230,1.511,233,3.745,263,3.597,264,1.616,265,1.525,280,1.316,281,1.261,292,1.995,296,1.218,342,2.697,358,1.297,370,2.176,411,2.959,439,2.6,443,1.539,459,1.367,583,3.318,602,2.959,613,2.06,616,0.879,617,0.874,640,2.096,679,2.151,683,3.843,686,2.322,700,1.855,773,6.57,774,4.562,801,1.616,804,1.616,826,1.649,902,2.06,910,2.813,914,1.696,943,2.176,1035,5.813,1053,2.445,1054,1.855,1075,3.694,1081,3.318,1102,2.813,1138,1.907,1172,1.6,1208,2.445,1209,4.458,1267,3.984,1700,2.6,1735,2.096,1892,2.697,1935,4.993,1947,2.959,1952,4.769,1953,1.632,1959,2.6,1960,3.45,1961,2.176,1962,5.813,1963,3.45,1964,6.778,1965,3.45,1966,3.45,1967,3.45,1968,1.685,1969,3.45,1970,3.154,1971,5.527,1972,2.813,1973,2.813,1974,2.959,1975,4.684,1976,3.154,1977,3.45]],["t/298",[1,1.691,28,2.696,49,0.749,50,3.079,53,1.449,58,1.766,66,1.422,78,2.131,79,1.397,83,1.123,121,0.858,135,1.253,142,1.12,143,0.684,152,0.283,166,1.38,172,1.732,182,2.696,188,1.318,207,1.48,213,0.631,226,1.148,239,0.795,256,2.467,263,1.22,264,1.076,280,0.877,281,1.429,290,0.571,292,3.514,296,2.383,303,1.492,306,1.514,317,2.611,318,1.328,323,1.884,324,5.154,340,3.285,345,1.492,364,1.45,376,1.492,380,1.045,395,4.462,414,2.023,421,1.761,423,1.574,424,1.85,426,2.369,428,1.308,431,3.638,435,1.889,436,1.778,455,1.794,481,2.504,506,1.677,583,3.101,604,2.101,605,1.007,617,0.991,624,2.741,665,1.992,679,1.542,683,0.989,686,1.547,789,1.422,798,1.629,823,1.372,826,1.541,907,1.308,937,1.732,939,1.372,977,1.289,991,1.874,1033,2.101,1044,2.335,1045,2.023,1079,1.48,1081,1.397,1141,1.732,1157,1.797,1172,1.066,1193,2.792,1203,2.376,1204,2.335,1351,1.547,1467,1.971,1468,1.874,1471,1.732,1507,1.422,1567,1.797,1621,1.629,1830,1.45,1853,3.435,1870,1.629,1879,3.616,1885,3.189,1886,1.874,1888,2.947,1892,1.797,1894,4.925,1895,3.189,1897,1.874,1943,1.586,1957,2.101,1971,1.874,1972,1.874,1973,1.874,1978,1.874,1979,1.971,1980,2.101,1981,1.971,1982,1.971,1983,2.299,1984,2.299,1985,1.874,1986,3.575,1987,1.629,1988,1.677,1989,2.101,1990,1.797,1991,1.874,1992,2.101,1993,1.874]],["t/300",[1,1.402,2,3.106,4,2.178,49,1.436,59,2.204,60,1.655,77,5.614,117,5.018,146,4.669,161,5.079,180,1.823,213,1.783,218,5.572,221,5.572,233,3.59,288,3.879,299,3.815,303,2.479,304,1.613,347,3.612,363,4.274,396,4.74,404,3.754,416,4.098,904,1.774,1013,5.276,1042,7.028,1138,3.59,1213,4.604,1304,4.604,1994,5.94,1995,6.498,1996,6.498,1997,4.274]],["t/302",[1,2.037,4,1.289,6,2.251,49,1.083,60,2.2,88,5.157,146,3.968,157,2.538,166,2.606,167,3.927,171,2.495,217,2.84,299,4.334,334,3.545,363,3.38,366,2.003,416,3.242,455,1.366,617,1.302,814,4.018,816,2.97,905,1.552,979,4.138,1042,7.004,1109,2.924,1156,3.123,1208,5.23,1471,3.873,1687,3.308,1959,3.873,1998,6.748,1999,6.748,2000,6.748,2001,7.407,2002,6.33,2003,5.14,2004,4.699,2005,6.748,2006,7.896,2007,6.748,2008,5.14,2009,5.14,2010,5.14]],["t/304",[60,2.753,146,4.306,157,4.907,180,2.247,234,3.149,294,7.25,299,4.702,304,1.988,326,5.052,363,5.268,396,5.843,415,6.269,506,5.843,799,2.632,1013,4.866,1042,5.39,2011,6.26]],["t/306",[1,1.207,3,3.057,4,1.091,5,1.645,6,0.634,26,0.723,35,0.778,49,0.737,51,1.191,52,0.618,56,0.64,59,0.885,60,1.425,61,0.64,65,0.658,82,0.749,84,1.026,93,1.01,121,0.54,129,1.181,143,1.414,146,5.272,157,1.288,167,3.564,170,0.723,171,0.383,180,1.22,182,1.19,188,0.879,205,1.531,213,1.792,230,1.905,234,0.569,238,0.707,242,0.692,244,1.737,251,1.385,258,1.347,265,1.572,276,2.126,279,1.132,280,1.915,281,0.529,288,1.557,294,6.218,299,2.947,304,0.883,309,0.715,312,1.132,317,0.708,326,0.913,332,0.974,345,0.995,347,0.602,351,0.525,363,0.952,366,1.691,397,1.317,432,0.74,445,2.244,451,1.242,455,1.334,456,0.932,459,1.409,498,6.38,533,0.569,558,2.454,616,1.425,617,1.839,618,1.209,639,1.922,679,0.911,687,1.132,710,1.026,753,0.837,795,1.132,799,1.429,826,1.313,894,1.132,904,2.326,905,1.689,926,2.126,956,1.715,967,4.093,969,1.181,983,0.896,984,0.665,1013,5.178,1032,0.999,1037,1.181,1042,4.1,1061,1.181,1075,1.421,1081,1.584,1098,1.091,1138,1.965,1155,1.132,1213,2.52,1288,1.091,1357,1.324,1422,1.242,1521,1.242,1529,1.181,1542,1.242,1678,2.038,1698,1.715,1830,0.913,1870,1.026,1911,1.242,1922,4.317,1927,3.081,1943,0.999,2001,3.73,2002,3.051,2011,4.762,2012,1.448,2013,5.594,2014,2.608,2015,3.557,2016,5.019,2017,2.608,2018,7.563,2019,6.093,2020,2.608,2021,5.019,2022,1.448,2023,1.448,2024,2.608,2025,1.448,2026,3.976,2027,1.448,2028,1.448,2029,1.448,2030,1.448,2031,1.448,2032,3.557,2033,1.448,2034,1.448,2035,1.448,2036,1.448,2037,1.448,2038,1.448,2039,1.324,2040,2.236,2041,1.448,2042,1.448,2043,1.448,2044,1.448,2045,1.448,2046,1.448,2047,1.448,2048,1.448,2049,3.252,2050,3.051,2051,5.594,2052,1.448,2053,1.242,2054,1.448,2055,1.448,2056,1.448,2057,1.132,2058,1.448,2059,1.448,2060,1.324,2061,2.608,2062,2.608,2063,1.242,2064,1.448,2065,1.448,2066,1.448,2067,1.448,2068,1.448,2069,2.608]],["t/308",[0,2.887,1,1.487,4,1.173,6,1.551,8,2.442,49,0.52,58,0.708,59,0.695,60,0.902,84,1.45,93,0.793,143,1.293,196,1.412,212,1,213,0.562,233,1.131,238,1,263,1.086,273,1.703,276,1.669,288,1.222,294,1.493,299,2.079,304,2.111,314,1.183,317,0.556,323,1.108,353,3.751,363,1.346,366,2.051,394,0.805,397,1.034,443,0.913,455,0.544,482,3.315,490,1.011,533,1.839,542,0.844,614,1.669,617,1.413,679,1.613,704,1.756,770,1.493,799,1.164,826,2.233,898,1.493,904,2.579,905,3.001,939,2.793,940,2.383,979,5.297,1013,3.386,1042,6.779,1098,1.543,1105,1.669,1156,2.151,1173,1.756,1326,1.493,1402,2.329,1471,3.526,1679,1.034,1715,3.237,1893,1.669,1990,1.6,1991,1.669,1997,1.346,1999,7.148,2000,1.871,2004,7.482,2006,5.095,2050,4.78,2060,1.871,2070,2.047,2071,2.047,2072,2.047,2073,6.297,2074,2.047,2075,2.047,2076,2.047,2077,2.047,2078,2.047,2079,2.047,2080,7.348,2081,4.678,2082,2.047,2083,3.541,2084,2.047,2085,1.756,2086,1.756,2087,3.541,2088,3.541,2089,3.541,2090,5.095,2091,5.095,2092,5.574,2093,2.047,2094,1.669,2095,3.541,2096,6.297,2097,6.297,2098,3.541,2099,2.047,2100,2.047,2101,2.047,2102,3.541,2103,6.297,2104,3.541,2105,2.047,2106,1.756,2107,3.237,2108,2.047]],["t/310",[1,2.031,37,3.05,143,1.505,146,2.747,182,1.743,244,2.495,251,2.375,351,1.854,366,1.941,376,1.949,418,5.745,426,3.037,459,2.025,477,2.393,498,6.192,639,2.258,683,3.163,904,2.723,967,4.166,969,4.166,1119,3.727,1144,4.671,1155,3.994,1235,3.85,1712,3.85,1915,4.671,1943,3.524,1987,3.62,2001,4.382,2011,3.994,2039,4.671,2049,7.869,2050,6.303,2063,4.382,2090,4.671,2091,4.671,2109,7.35,2110,5.109,2111,7.35,2112,5.109,2113,5.109,2114,5.109,2115,7.35,2116,5.109,2117,5.109,2118,5.109,2119,5.109,2120,5.109,2121,5.109,2122,5.109,2123,5.109,2124,5.109]],["t/312",[1,1.784,34,3.671,49,1.383,61,2.671,82,3.126,113,4.722,117,3.491,135,3.292,142,1.123,178,3.974,196,4.168,239,2.09,252,3.387,264,2.829,338,4.553,361,4.699,376,2.305,380,2.747,420,3.338,423,4.599,424,3.911,425,4.28,427,4.553,443,2.695,511,4.146,605,2.646,613,3.607,617,2.095,672,3.811,789,3.738,798,4.28,1079,3.889,2125,6.032,2126,4.722,2127,6.462,2128,4.926,2129,6.042]],["t/314",[1,1.925,182,2.115,227,2.914,366,1.667,380,4.056,423,3.591,424,4.221,434,6.509,458,6.005,2130,8.156,2131,8.922]],["t/316",[143,1.593,240,3.887,245,2.395,273,2.784,383,4.714,423,3.667,424,4.31,904,2.487,905,2.751]],["t/318",[49,1.094,67,4.529,143,1.303,171,1.97,213,2.046,245,1.96,273,2.278,354,4.612,423,3.001,424,3.526,426,2.404,431,3.153,432,3.811,616,1.899,617,2.407,679,1.909,683,3.208,801,3.491,904,2.035,905,2.251,1044,4.45,1045,4.915,1351,5.017,1353,4.241,1548,4.903,2132,6.393,2133,7.454,2134,6.814]],["t/320",[79,5.054,88,4.966,143,1.454,185,4.663,245,2.187,273,2.542,292,3.039,432,4.252,616,2.119,617,2.578,624,3.105,904,2.271,905,2.512,1917,6.502,1918,7.134,2135,7.134,2136,8.319]],["t/322",[143,1.413,171,2.137,245,2.125,273,2.47,361,3.748,423,4.024,426,2.608,511,3.307,616,2.059,617,2.533,679,2.07,904,2.207,905,2.441,1687,5.204,2126,6.319,2137,4.671,2138,8.084,2139,8.084,2140,8.084]],["t/324",[143,1.413,171,2.137,245,2.125,273,2.47,304,2.007,361,3.748,394,3.179,423,3.254,511,3.307,616,2.059,617,2.533,679,2.07,805,4.912,904,2.207,905,2.441,1975,6.933,2125,5.898,2141,6.933,2142,8.084,2143,8.084]],["t/326",[14,4.534,143,1.35,171,2.041,245,2.03,273,2.359,290,1.917,304,1.917,345,2.946,355,3.159,423,3.108,511,3.159,616,1.967,617,2.462,679,1.977,805,4.691,904,2.108,905,2.332,1298,5.326,2144,6.036,2145,4.797,2146,7.722,2147,7.722,2148,7.722,2149,7.722]],["t/328",[65,3.222,93,2.744,143,1.239,157,4.54,167,3.222,171,1.873,180,1.988,213,1.945,226,3.539,244,4.491,245,1.863,251,1.955,273,2.165,304,1.759,359,4.879,476,4.888,517,5.169,616,1.805,617,2.33,679,2.355,816,4.094,904,1.934,905,2.14,1920,5.02,1921,7.232,1922,6.515,1923,5.539,2150,6.077]],["t/330",[58,2.579,60,2.42,132,4.798,143,1.303,167,3.389,171,1.97,244,3.64,245,1.96,273,2.278,277,4.241,317,2.024,359,5.04,455,2.524,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1054,4.007,1585,5.438,1856,5.281,1925,5.827,1926,5.827,1927,5.281,1928,5.827,1929,5.827]],["t/332",[1,1.457,49,0.991,83,3.298,143,1.181,171,1.785,182,2.364,245,1.775,273,2.063,292,2.467,296,3.145,309,3.334,317,2.419,423,4.014,424,4.717,426,3.216,428,3.842,477,3.162,583,4.102,616,1.72,617,2.258,624,3.325,679,1.729,904,1.843,905,2.039,907,3.842,1168,4.658,1852,4.347,1867,5.089,1868,5.089,2151,5.506]],["t/334",[143,1.303,171,1.97,182,2.479,245,1.96,273,2.278,296,3.353,303,2.844,317,2.024,426,3.064,459,2.954,533,2.931,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1172,3.456,1203,4.529,1204,6.573,1870,5.281,1871,5.617,1872,5.617]],["t/336",[1,1.351,49,1.243,78,5.231,143,1.095,171,1.655,182,1.485,236,3.618,245,1.646,263,3.322,273,1.913,296,2.21,317,2.3,327,4.03,340,6.18,345,2.389,423,3.41,424,4.008,426,2.02,490,3.092,583,3.804,616,1.595,617,2.433,679,1.603,773,3.874,774,4.214,904,1.709,905,1.891,907,5.852,1161,4.319,1987,4.436,1988,7.504,2152,4.568,2153,4.894,2154,5.105,2155,5.724,2156,5.105]],["t/338",[143,1.27,171,2.47,182,1.723,245,1.91,273,2.22,281,2.654,296,3.299,318,4.198,423,2.925,424,3.437,426,3.014,459,2.879,490,3.588,616,1.851,617,2.368,679,2.393,826,2.194,904,1.983,905,2.194,1172,4.332,1193,5.056,2157,5.924,2158,5.924,2159,6.642]],["t/340",[121,3.365,185,5.054,199,4.665,366,1.995,404,5.209,469,6.577,481,3.749,2160,8.242,2161,9.016]],["t/342",[366,2.125,1791,6.577,2080,6.577,2162,9.016,2163,6.794,2164,6.794,2165,6.794,2166,9.016]],["t/344",[366,2.125,1791,6.577,2080,6.577,2163,6.794,2164,6.794,2165,6.794,2167,7.351,2168,9.016]],["t/346",[51,1.878,185,3.144,199,2.902,239,1.94,258,2.124,323,2.835,366,2.312,404,3.241,423,2.258,481,2.332,545,2.035,674,1.655,1791,5.729,2080,5.729,2160,5.127,2163,6.829,2164,5.918,2165,5.918,2169,7.853,2170,6.138,2171,7.771,2172,4.81,2173,8.284,2174,9.062,2175,7.853,2176,7.853,2177,5.609,2178,5.609]],["t/348",[366,2.245,545,2.393,639,2.916,1283,5.658,1355,7.524,1788,6.031,1791,4.813,2080,4.813,2126,5.157,2163,4.972,2164,4.972,2165,4.972,2167,5.379,2171,5.658,2172,5.658,2179,6.597,2180,6.597,2181,6.597,2182,6.597,2183,6.597,2184,8.773,2185,6.597,2186,7.524,2187,6.597,2188,6.597,2189,4.161,2190,6.031,2191,6.031,2192,6.597,2193,6.031,2194,6.031,2195,6.031]],["t/350",[51,1.424,239,1.471,258,2.431,366,2.243,423,3.112,511,3.163,542,1.753,545,3.125,639,3.808,674,2.282,804,1.991,1235,3.204,1283,7.387,1791,5.641,2080,5.641,2126,6.733,2163,5.827,2164,5.827,2165,5.827,2167,6.305,2171,7.387,2172,7.387,2189,4.877,2190,7.874,2191,7.874,2193,7.874,2194,7.874,2195,7.874,2196,7.732,2197,7.732,2198,4.251,2199,7.732,2200,4.251,2201,3.886,2202,3.101]],["t/352",[49,1.123,258,2.898,366,1.977,511,3.13,545,2.777,617,1.939,674,2.258,804,4.523,867,4.493,1235,7.279,1791,5.583,2080,5.583,2163,5.767,2164,5.767,2165,5.767,2167,6.24,2201,6.996,2202,5.583,2203,7.653,2204,7.653,2205,7.653,2206,7.653,2207,7.653]],["t/354",[1,1.987,19,6.524,152,1.136,182,2.183,251,2.541,288,5.498,2208,9.208,2209,9.208]],["t/356",[1,1.925,182,2.115,227,2.914,251,2.928,366,1.667,380,4.056,458,6.005,2210,8.922,2211,8.922,2212,8.922]],["t/358",[143,1.61,240,3.928,245,2.421,251,2.541,273,2.814,383,4.765,904,2.514,905,2.781]],["t/360",[28,2.853,49,1.049,67,4.341,143,1.249,152,0.881,171,1.888,182,1.694,205,3.074,213,1.961,245,1.878,273,2.183,292,2.61,303,2.726,354,4.421,426,2.305,432,3.652,616,1.82,617,2.343,679,1.83,683,3.074,801,3.346,904,1.95,905,2.158,1044,4.266,1045,4.783,1351,4.808,1353,4.065,1548,4.699,1888,5.384,2040,6.127,2213,6.531,2214,7.145,2215,7.145]],["t/362",[28,2.762,49,1.015,67,4.201,142,1.876,143,1.209,171,1.828,182,2.146,213,1.898,245,1.818,273,2.113,292,2.526,303,2.638,306,3.505,354,4.279,426,2.23,432,3.535,616,1.762,617,2.293,679,1.771,683,2.976,801,3.238,904,1.888,905,2.088,1044,4.129,1045,4.683,1351,4.654,1353,3.934,1548,4.548,2040,5.931,2216,5.405,2217,6.322,2218,6.915,2219,6.915]],["t/364",[49,1.057,88,4.301,142,1.728,143,1.26,171,1.904,180,2.021,182,1.708,245,1.894,273,2.201,292,2.632,306,3.599,378,3.981,407,5.874,432,3.683,481,2.996,616,1.835,617,2.355,679,1.845,683,3.1,709,3.823,904,1.967,905,2.176,1044,4.301,1045,4.809,1075,3.926,2220,6.586,2221,7.205,2222,7.205,2223,6.586,2224,5.874]],["t/366",[4,2.104,52,2.633,53,2.287,56,2.728,58,2.135,60,2.137,143,1.079,152,1.319,171,1.631,239,2.135,241,1.843,245,1.623,251,1.703,273,1.886,304,1.532,305,1.614,317,1.676,323,1.931,355,2.524,363,4.059,364,3.893,365,3.047,435,2.982,436,3.814,454,2.178,455,1.64,459,2.445,616,2.137,617,2.126,679,2.148,770,4.502,799,2.028,904,1.685,905,1.864,1402,4.059,1484,3.511,2225,6.172,2226,5.642,2227,6.172,2228,6.172]],["t/368",[1,1.361,49,0.926,58,2.182,83,3.08,143,1.103,152,0.778,171,1.667,182,2.446,241,1.087,245,1.658,251,2.847,273,1.927,292,2.304,296,3.005,309,3.114,317,2.616,345,2.406,426,3.328,428,3.589,477,2.954,481,2.623,583,3.832,616,1.607,617,2.157,624,3.851,679,1.615,904,1.722,905,1.905,907,3.589,1150,4.753,1168,4.351,1852,4.06,1867,4.753,1868,4.753,2151,5.143]],["t/370",[143,1.303,171,1.97,182,2.479,245,1.96,273,2.278,296,3.353,303,2.844,317,2.024,426,3.064,459,2.954,533,2.931,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1172,3.456,1203,4.529,1204,6.573,1870,5.281,1871,5.617,1872,5.617]],["t/372",[34,4.341,49,1.049,143,1.249,171,1.888,182,2.661,192,5.585,226,3.568,245,1.878,251,2.551,273,2.183,292,2.61,296,3.617,426,2.982,616,1.82,617,2.343,624,2.667,674,2.728,679,2.367,683,3.074,904,1.95,905,2.158,2229,5.585,2230,7.145,2231,7.145]],["t/374",[1,1.371,49,1.256,78,5.271,143,1.111,171,1.679,182,1.506,236,3.671,245,1.67,251,2.361,263,3.371,273,1.941,296,2.243,317,2.323,327,4.09,340,6.226,345,2.424,426,2.049,490,3.137,583,3.86,616,1.619,617,2.451,679,1.627,773,3.931,774,4.276,904,1.734,905,1.919,907,5.888,1161,4.383,1987,4.502,1988,7.549,2152,4.635,2153,4.966,2154,5.181,2156,5.181,2232,6.354]],["t/376",[143,1.281,171,2.483,182,1.737,245,1.926,251,2.022,273,2.239,281,2.677,296,3.317,318,4.234,426,3.031,459,2.903,490,3.618,616,1.867,617,2.381,679,2.406,826,2.213,904,2,905,2.213,1172,4.356,1193,5.072,2157,5.974,2158,5.974,2233,7.327]],["t/378",[1,1.268,4,1.474,49,0.863,52,2.507,56,2.598,58,3.214,77,3.159,143,1.027,149,2.87,152,1.235,171,2.144,213,1.613,224,3.522,227,2.649,241,1.601,245,1.545,273,1.796,284,1.676,299,3.45,334,5.596,335,2.87,358,2.209,435,2.839,436,4.554,490,2.902,616,2.066,617,2.354,624,3.467,679,1.505,804,2.752,904,1.604,905,1.775,943,3.707,1842,5.04,2234,5.04,2235,5.04,2236,5.877,2237,5.877,2238,5.877,2239,5.877,2240,5.877,2241,5.877]],["t/380",[14,5.609,88,5.703,143,1.315,171,1.987,224,3.264,245,2.511,273,2.297,432,3.844,616,1.915,617,2.421,679,1.925,683,3.236,904,2.052,905,2.271,1044,4.489,1045,3.891,1075,4.097,2213,6.874,2217,6.874,2242,9.003,2243,6.449,2244,7.519,2245,7.519]],["t/382",[4,1.362,8,5.296,49,0.797,59,1.843,60,2.835,143,0.95,171,1.436,179,2.494,180,2.154,191,3.045,192,4.246,213,1.491,245,1.428,251,3.007,263,4.074,273,1.66,346,2.358,347,2.259,351,1.971,507,3.848,558,3.747,616,1.384,617,1.946,623,4.965,679,1.391,799,3.483,801,3.595,904,1.483,905,1.64,932,3.361,1098,4.093,1156,3.3,1686,7.019,1735,5.41,1893,4.429,1952,3.361,2246,5.432,2247,8.905,2248,8.905,2249,5.432,2250,5.432,2251,5.432,2252,5.432]],["t/384",[17,4.037,60,2.059,143,1.413,171,2.137,245,2.125,273,2.47,315,5.441,455,2.148,616,2.059,617,2.533,679,2.07,904,2.207,905,2.441,1016,5.441,1886,6.592,2253,8.084,2254,6.319,2255,6.933,2256,8.084,2257,8.084]],["t/386",[60,2.079,143,1.427,171,2.157,245,2.146,273,2.493,455,2.168,616,2.079,617,2.548,679,2.09,799,2.682,824,6.999,904,2.228,905,2.464,961,5.253,1016,5.492,2254,6.379,2258,6.999,2259,8.161,2260,8.161]],["t/388",[60,2.099,143,1.441,171,2.178,245,2.166,273,2.517,455,2.189,616,2.099,617,2.563,679,2.11,799,2.707,824,7.066,904,2.249,905,2.488,1016,5.545,2254,6.44,2261,7.066,2262,8.239,2263,8.239]],["t/390",[4,2.318,143,1.249,152,1.336,163,3.841,171,1.888,205,3.074,241,1.232,245,1.878,251,1.972,273,2.183,351,2.592,394,2.809,515,6.127,611,6.08,616,1.82,617,2.343,679,1.83,904,1.95,905,2.158,1910,5.585,2094,5.826,2264,9.244,2265,8.451,2266,4.507,2267,7.145,2268,7.145,2269,7.145]],["t/392",[65,3.222,93,2.744,143,1.239,157,4.54,167,3.222,171,1.873,180,1.988,213,1.945,226,3.539,244,4.491,245,1.863,251,1.955,273,2.165,304,1.759,359,4.879,476,4.888,517,5.169,616,1.805,617,2.33,679,2.355,816,4.094,904,1.934,905,2.14,1920,5.02,1921,7.232,1922,6.515,1923,5.539,2270,7.086]],["t/394",[58,2.579,60,2.42,132,4.798,143,1.303,167,3.389,171,1.97,244,3.64,245,1.96,273,2.278,277,4.241,317,2.024,359,5.04,455,2.524,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1054,4.007,1585,5.438,1856,5.281,1925,5.827,1926,5.827,1927,5.281,1928,5.827,1929,5.827]],["t/396",[1,2.208,39,4.516,171,2.22,182,2.426,399,3.363,426,2.709,904,2.293,1172,3.894,1304,5.951,1952,7.108,2271,6.33]],["t/399",[1,2.039,49,1.085,143,1.292,171,1.953,180,2.073,182,2.469,245,1.943,273,2.258,292,2.7,399,2.429,426,3.359,616,2.407,617,2.394,624,3.526,679,1.892,904,2.017,905,2.232,1150,5.569,1213,5.236,1867,5.569,1868,5.569,1869,6.756,1952,4.573]],["t/401",[143,1.338,171,2.023,182,2.29,245,2.012,273,2.338,296,2.701,303,2.92,426,3.116,459,3.032,533,3.009,616,1.95,617,2.448,679,1.96,700,4.114,904,2.089,905,2.311,1203,5.868,1204,6.637,1871,5.767,1872,5.767]],["t/403",[1,1.435,6,2.912,171,1.757,182,2.346,188,3.335,205,2.861,217,3.673,245,1.748,273,2.031,284,1.896,306,2.574,345,2.536,426,3.192,616,2.246,617,1.685,665,2.199,679,1.702,882,5.702,904,2.407,1124,6.659,1156,4.039,1172,3.082,1221,4.85,1959,5.01,2272,6.648,2273,5.421,2274,8.818,2275,8.818,2276,8.818,2277,6.648,2278,6.648]],["t/405",[1,1.555,171,2.457,182,2.44,245,1.894,273,2.201,292,2.632,317,2.793,323,2.908,399,3.054,426,2.998,428,4.099,459,2.855,616,1.835,617,1.826,624,3.84,679,1.845,904,1.967,1166,5.632,1172,3.34,1913,5.256,1952,4.458,1955,6.586,2271,5.429,2279,7.205]],["t/407",[1,1.371,3,2.975,37,3.793,49,0.933,59,2.902,78,3.462,142,1.181,143,1.111,171,1.679,182,2.028,212,3.103,226,3.173,245,1.67,273,1.941,290,1.577,292,2.321,303,2.424,317,1.725,323,3.238,382,4.788,399,2.088,414,3.288,421,2.861,426,2.049,428,3.615,471,4.383,490,3.137,616,1.619,617,1.61,624,3.862,679,2.191,904,1.734,1012,4.502,1687,4.09,1887,4.966,1888,4.788,1889,5.181,1890,4.383,1891,4.966,2271,4.788,2280,6.354]],["t/409",[1,1.895,45,1.883,49,0.778,51,1.774,93,2.052,96,3.278,121,1.977,182,1.256,198,3.111,222,2.848,236,3.061,273,1.619,304,1.315,317,1.438,366,1.89,399,3.324,432,2.708,455,2.543,481,2.203,482,3.754,613,3.163,617,1.343,904,2.059,1054,2.848,1138,2.927,1168,3.655,1484,3.014,1621,3.754,1635,1.308,1698,5.777,1753,4.141,1755,4.843,1921,3.754,1943,3.655,1952,6.505,1962,4.544,2053,4.544,2106,4.544,2271,8.333,2281,4.843,2282,9.571,2283,3.278,2284,5.298,2285,4.843,2286,5.298,2287,5.298]],["t/411",[1,1.351,51,2.097,83,3.058,121,2.337,125,2.058,126,4.568,152,1.48,166,2.21,182,1.485,227,2.045,242,4.049,273,1.913,306,3.718,317,1.7,361,2.903,366,1.17,380,2.847,421,5.188,431,2.648,433,4.568,904,2.621,927,3.614,1326,6.18,2266,3.949,2288,4.894,2289,5.724,2290,5.724]],["t/413",[1,0.922,22,4.564,24,2.875,49,0.627,121,1.595,143,1.51,152,0.527,167,2.929,171,2.282,180,1.199,182,1.013,188,1.44,197,2.596,212,2.087,213,1.173,224,1.855,228,2.81,240,1.822,245,2.436,273,2.638,288,2.551,292,1.561,326,2.695,358,1.606,383,3.333,390,3.906,394,1.68,399,1.404,421,1.924,433,3.117,487,3.22,549,3.34,609,4.444,616,2.2,617,2.468,620,2.395,624,2.404,679,1.986,748,2.75,789,3.986,795,3.34,805,2.596,820,3.117,904,2.659,905,2.608,959,2.947,992,3.027,1013,2.596,1213,3.027,1433,3.906,1792,3.34,1854,4.147,1855,5.889,1856,3.027,1857,3.906,1858,3.906,1859,3.906,1860,3.906,1861,5.889,1862,3.664,1863,3.906,1864,3.906,1865,3.906,1866,3.484,1927,3.027,2220,5.889,2291,4.272,2292,4.272,2293,4.272,2294,4.272,2295,3.117,2296,4.272,2297,4.272,2298,4.272,2299,4.272]],["t/415",[1,0.891,4,1.036,7,2.925,22,2.925,24,2.779,47,5.112,49,0.606,51,2.103,52,3.24,59,1.401,121,2.343,142,1.167,152,1.398,167,3.453,170,3.135,171,2.008,188,1.392,213,1.133,225,2.655,227,1.348,240,2.678,242,1.974,245,1.65,249,3.227,258,3.641,273,1.918,280,1.575,284,1.178,305,1.08,306,1.599,361,2.911,366,0.771,376,2.395,380,1.877,393,4.46,394,3.337,417,2.465,421,1.859,433,3.012,533,1.623,616,1.599,617,1.591,665,2.806,679,1.608,736,2.22,804,1.934,805,2.509,904,2.073,927,3.24,943,3.96,956,2.716,977,2.315,1124,2.779,1212,3.012,1410,3.774,1632,5.739,1798,3.541,2094,3.367,2288,3.227,2289,8.345,2295,4.58,2300,4.129,2301,4.129,2302,4.129,2303,4.129]],["t/417",[1,1.424,22,4.674,49,0.968,51,2.21,66,4.082,152,1.296,167,4.481,197,5.33,212,3.222,215,3.595,227,2.154,260,3.645,306,2.555,337,1.495,361,3.059,366,1.639,380,2.999,421,2.971,628,3.222,665,2.901,904,1.801,1126,6.611,1792,6.858,1845,5.157,2266,5.534,2288,5.157,2290,9.999,2295,4.813,2304,6.031,2305,6.597]],["t/419",[1,0.839,22,2.754,24,2.616,49,0.88,51,2.007,60,2.573,66,2.405,93,2.321,121,2.237,152,0.902,166,1.372,167,4.712,171,1.934,197,3.641,227,1.269,230,1.702,240,2.557,241,0.67,245,1.022,260,2.148,273,1.187,290,0.965,303,1.483,304,1.488,306,1.505,317,1.627,326,2.451,336,2.968,337,2.128,361,1.802,366,1.12,380,1.767,404,2.246,417,2.32,433,2.835,490,1.919,616,0.99,617,0.985,628,1.898,665,1.285,679,1.535,736,3.222,753,2.246,826,1.174,861,3.333,904,1.997,927,2.557,1016,2.616,1124,2.616,1126,5.513,1298,4.135,1326,7.722,1635,0.96,1687,3.858,1706,3.553,1792,4.685,1845,3.038,1927,2.754,1971,3.169,1972,3.169,1973,3.169,2137,2.246,2145,3.613,2288,3.038,2295,2.835,2304,3.553,2306,3.553,2307,3.553,2308,4.685,2309,3.333,2310,3.887,2311,3.887,2312,3.887,2313,3.887,2314,3.887,2315,3.887,2316,3.887,2317,3.887,2318,3.553]],["t/421",[1,1.263,9,2.212,22,2.669,24,2.536,45,1.339,49,1.053,51,1.262,60,2.361,70,1.881,121,1.406,152,1.266,165,4.145,167,3.261,171,2.315,197,2.289,227,1.23,240,2.496,242,5.318,245,2.126,260,3.233,262,2.478,273,2.192,280,2.232,290,0.935,304,0.935,306,1.459,317,1.023,326,2.376,337,1.326,366,1.093,376,1.437,380,1.713,394,3.18,417,2.249,433,2.749,459,1.493,490,1.86,616,1.827,617,1.818,628,1.84,665,2.896,679,1.837,799,1.238,866,2.289,904,2.208,927,3.45,977,2.112,1126,2.839,1267,2.749,1275,2.289,1326,2.749,1557,2.599,1635,0.93,1687,4.618,1792,2.945,1845,2.945,1943,2.599,1989,5.349,2086,3.231,2288,2.945,2295,2.749,2306,3.444,2307,3.444,2318,3.444,2319,3.768,2320,3.768,2321,3.768,2322,5.851,2323,2.599,2324,3.768,2325,3.768,2326,5.349]],["t/423",[1,2.137,3,2.679,49,0.84,60,2.028,82,2.96,125,2.616,152,1.221,166,2.019,178,3.762,182,2.171,212,3.888,217,3.161,227,1.868,290,1.976,306,2.215,361,4.246,366,1.069,380,2.601,414,2.96,419,4.664,421,4.124,425,6.488,431,2.419,433,4.173,453,4.664,458,3.85,616,1.457,805,3.475,866,4.837,927,3.396,1298,3.946,1309,4.471,1700,4.311,2127,6.223,2128,4.664,2130,5.229,2327,5.72,2328,5.229,2329,7.962,2330,5.72,2331,5.72,2332,5.72,2333,5.72]],["t/425",[143,1.593,152,1.124,240,3.887,245,2.395,273,2.784,383,4.714,421,4.103,904,2.487,905,2.751]],["t/427",[49,0.857,67,3.546,82,3.02,142,1.085,143,1.021,152,1.232,171,1.543,182,1.914,213,1.602,245,1.535,251,1.611,273,1.783,284,1.665,290,2.004,292,2.132,295,6.084,303,2.227,354,3.611,361,2.706,364,3.682,414,4.178,419,4.759,420,3.225,421,4.722,426,1.883,431,4.224,616,1.487,617,2.046,679,1.495,683,2.512,801,2.733,904,1.593,905,1.763,915,3.839,1044,4.82,1045,4.789,1351,3.928,1353,3.321,1548,3.839,2132,5.006,2328,5.336,2334,5.006,2335,5.837,2336,5.837]],["t/429",[79,5.054,88,4.966,143,1.454,185,4.663,245,2.187,273,2.542,292,3.039,432,4.252,616,2.119,617,2.578,624,3.105,904,2.271,905,2.512,1917,6.502,1918,7.134,2135,7.134,2337,8.319]],["t/431",[49,1.075,56,3.239,143,1.281,152,0.904,171,1.937,245,1.926,273,2.239,304,2.332,345,2.795,425,5.191,616,1.867,617,2.381,679,1.876,805,4.452,904,2,905,2.213,927,4.008,1298,5.054,1700,5.522,1845,5.727,2127,5.727,2128,5.974,2145,4.64,2338,7.327,2339,7.327,2340,7.327,2341,7.327,2342,7.327]],["t/433",[49,1.516,60,2.632,143,1.27,152,0.896,171,1.92,245,1.91,273,2.855,317,1.972,421,3.272,425,6.621,616,2.38,617,2.618,679,2.393,904,2.551,905,2.194,926,5.924,1687,4.677,2135,6.231,2343,7.265,2344,7.265,2345,7.265,2346,7.265]],["t/435",[65,3.222,93,2.744,143,1.239,157,4.54,167,3.222,171,1.873,180,1.988,213,1.945,226,3.539,244,4.491,245,1.863,251,1.955,273,2.165,304,1.759,359,4.879,476,4.888,517,5.169,616,1.805,617,2.33,679,2.355,816,4.094,904,1.934,905,2.14,1920,5.02,1921,7.232,1922,6.515,1923,5.539,2150,6.077]],["t/437",[58,2.579,60,2.42,132,4.798,143,1.303,167,3.389,171,1.97,244,3.64,245,1.96,273,2.278,277,4.241,317,2.024,359,5.04,455,2.524,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1054,4.007,1585,5.438,1856,5.281,1925,5.827,1926,5.827,1927,5.281,1928,5.827,1929,5.827]],["t/439",[1,1.446,49,0.983,83,3.272,143,1.171,152,1.225,171,1.771,182,2.506,245,1.761,273,2.047,292,2.448,296,3.129,309,3.308,317,2.406,421,4.473,426,3.204,428,3.812,477,3.137,583,4.07,616,1.707,617,2.246,624,3.308,679,1.716,904,1.829,905,2.023,907,3.812,1168,4.622,1852,4.313,1867,5.049,1868,5.049,2151,5.463]],["t/441",[143,1.303,171,1.97,182,2.479,245,1.96,273,2.278,296,3.353,303,2.844,317,2.024,426,3.064,459,2.954,533,2.931,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1172,3.456,1203,4.529,1204,6.573,1870,5.281,1871,5.617,1872,5.617]],["t/443",[1,1.351,49,1.243,78,5.231,143,1.095,152,1.045,171,1.655,182,1.485,236,3.618,245,1.646,263,3.322,273,1.913,296,2.21,317,2.3,327,4.03,340,6.18,345,2.389,421,3.815,426,2.02,490,3.092,583,3.804,616,1.595,617,2.433,679,1.603,773,3.874,774,4.214,904,1.709,905,1.891,907,5.852,1161,4.319,1987,4.436,1988,7.504,2152,4.568,2153,4.894,2154,5.105,2156,5.105,2347,6.261]],["t/445",[143,1.27,152,0.896,171,2.47,182,1.723,245,1.91,273,2.22,281,2.654,296,3.299,318,4.198,421,3.272,426,3.014,459,2.879,490,3.588,616,1.851,617,2.368,679,2.393,826,2.194,904,1.983,905,2.194,1172,4.332,1193,5.056,2157,5.924,2158,5.924,2348,7.265]],["t/447",[1,1.983,4,1.444,10,4.08,12,3.707,49,1.531,51,1.929,65,2.618,96,3.563,121,2.149,125,1.892,126,4.201,142,1.071,147,1.869,148,1.719,152,1.225,153,3.22,154,5.264,161,4.501,178,3.787,179,2.644,183,4.939,205,2.478,212,2.812,230,2.523,251,1.589,270,2.456,277,3.276,284,1.643,292,2.104,360,2.876,378,6.12,431,3.383,438,2.812,478,2.98,822,5.264,1081,3.499,1212,4.201,1218,4.939,1311,6.683,2224,4.695,2295,4.201,2349,5.759,2350,4.34,2351,5.759]],["t/449",[1,1.925,182,2.115,227,2.914,366,1.667,378,4.93,380,4.056,458,6.005,1311,6.005,2352,8.922,2353,8.922,2354,8.922]],["t/451",[143,1.593,240,3.887,245,2.395,273,2.784,378,5.034,383,4.714,904,2.487,905,2.751,1311,6.132]],["t/453",[143,1.427,171,2.157,245,2.146,273,2.493,378,4.509,431,3.451,432,4.172,616,2.079,617,2.548,679,2.09,904,2.228,905,2.464,1044,4.872,1045,4.223,1311,5.492,2224,6.654,2355,8.161,2356,8.161,2357,8.161]],["t/455",[1,1.595,49,1.085,83,3.609,143,1.292,171,1.953,182,1.752,205,3.18,240,3.152,245,1.943,251,2.039,273,2.258,292,3.452,309,3.649,426,2.384,428,4.205,431,3.125,616,1.883,617,2.394,624,3.526,679,1.892,904,2.017,905,2.232,1166,5.777,1309,5.777,2358,7.39,2359,7.39,2360,7.39,2361,7.39]],["t/457",[49,1.094,67,4.529,142,1.386,143,1.303,171,1.97,182,1.767,213,2.046,245,1.96,273,2.278,354,4.612,426,2.404,431,3.153,432,3.811,616,1.899,617,2.407,679,1.909,683,3.208,801,3.491,904,2.035,905,2.251,1044,4.45,1045,4.915,1351,5.017,1353,4.241,1548,4.903,2132,6.393,2134,6.814,2223,6.814]],["t/459",[49,1.104,60,1.915,135,4.097,143,1.315,147,2.44,148,2.244,152,0.927,162,5.327,171,1.987,240,3.208,245,1.977,273,2.297,365,3.713,366,1.405,454,2.654,616,1.915,617,2.421,679,1.925,736,4.042,904,2.052,905,2.271,1311,5.06,1329,6.874,1687,4.84,2295,5.486,2362,7.519,2363,7.519,2364,7.519]],["t/461",[125,2.707,142,1.532,143,1.441,171,2.178,245,2.166,273,2.517,304,2.045,378,4.552,455,2.189,605,3.609,616,2.099,617,2.563,679,2.11,904,2.249,905,2.488,1311,5.545,2365,8.239,2366,8.239]],["t/463",[49,1.144,105,6.682,142,1.449,143,1.362,152,0.961,166,2.75,171,2.059,244,3.805,245,2.048,265,3.444,273,2.381,438,3.805,616,1.985,617,2.476,679,2.502,904,2.127,905,2.353,1204,4.652,1808,7.123,1879,5.52,2367,7.792,2368,7.792,2369,7.792]],["t/465",[65,3.222,93,2.744,143,1.239,157,4.54,167,3.222,171,1.873,180,1.988,213,1.945,226,3.539,244,4.491,245,1.863,251,1.955,273,2.165,304,1.759,359,4.879,476,4.888,517,5.169,616,1.805,617,2.33,679,2.355,816,4.094,904,1.934,905,2.14,1920,5.02,1921,7.232,1922,6.515,1923,5.539,2150,6.077]],["t/467",[58,2.579,60,2.42,132,4.798,143,1.303,167,3.389,171,1.97,244,3.64,245,1.96,273,2.278,277,4.241,317,2.024,359,5.04,455,2.524,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1054,4.007,1585,5.438,1856,5.281,1925,5.827,1926,5.827,1927,5.281,1928,5.827,1929,5.827]],["t/469",[1,1.424,49,0.968,83,4.285,142,1.227,143,1.153,171,1.744,182,2.337,245,1.734,251,1.821,273,2.016,292,2.41,296,3.097,309,3.258,317,2.382,378,5.447,426,3.179,428,3.754,477,3.089,583,4.008,616,1.681,617,2.223,624,3.274,679,1.689,904,1.801,905,1.992,907,3.754,1168,4.551,1311,6.634,1852,4.247,1867,4.972,1868,4.972,2151,5.379]],["t/471",[143,1.303,171,1.97,182,2.479,245,1.96,273,2.278,296,3.353,303,2.844,317,2.024,426,3.064,459,2.954,533,2.931,616,1.899,617,2.407,679,1.909,904,2.035,905,2.251,1172,3.456,1203,4.529,1204,6.573,1870,5.281,1871,5.617,1872,5.617]],["t/473",[1,1.351,49,1.243,78,5.231,143,1.095,171,1.655,182,1.485,236,3.618,245,1.646,263,3.322,273,1.913,296,2.21,317,2.3,327,4.03,340,6.18,345,2.389,378,4.681,426,2.02,490,3.092,583,3.804,616,1.595,617,2.433,679,1.603,773,3.874,774,4.214,904,1.709,905,1.891,907,5.852,1161,4.319,1311,5.701,1987,4.436,1988,7.504,2152,4.568,2153,4.894,2154,5.105,2155,5.724,2156,5.105]],["t/475",[143,1.27,171,2.47,182,1.723,245,1.91,273,2.22,281,2.654,296,3.299,318,4.198,378,4.015,426,3.014,459,2.879,490,3.588,616,1.851,617,2.368,679,2.393,826,2.194,904,1.983,905,2.194,1172,4.332,1193,5.056,1311,4.89,2157,5.924,2158,5.924,2159,6.642]],["t/478",[4,2.436,15,3.73,51,3.253,152,1.447,238,3.771,241,1.675,244,3.771,292,2.821,335,3.771,360,3.856,366,1.815,397,3.901,624,2.882,2370,9.714,2371,7.059,2372,7.722]],["t/480",[1,1.726,12,5.149,28,2.3,142,2.008,147,2.596,148,2.388,152,1.414,153,3.22,170,2.876,236,3.327,258,3.029,284,1.643,335,3.906,342,4.501,346,2.5,355,2.356,366,1.494,459,3.169,481,3.326,533,2.264,628,2.812,691,2.812,772,4.501,910,6.522,1204,6.23,1212,4.201,1491,6.522,2266,3.632,2371,7.312,2373,7.999,2374,3.972,2375,5.759,2376,5.759]],["t/482",[1,2.288,4,1.694,15,3.262,49,0.991,51,2.262,58,2.336,255,2.433,265,4.872,276,7.265,292,2.467,353,4.544,376,2.576,377,5.791,384,3.583,416,4.259,431,2.856,443,3.013,469,4.926,472,4.031,507,4.784,635,4.926,862,5.791,863,6.173,879,5.506,882,5.791,894,5.278,2273,5.506,2377,6.752,2378,6.752,2379,6.752,2380,6.752,2381,6.173,2382,5.791,2383,5.278]],["t/484",[1,2.208,2,4.015,3,3.933,49,1.233,126,6.128,265,4.524,281,3.069,320,4.346,517,6.128,696,3.856,864,6.33,865,7.999,1008,7.204,1943,5.794]],["t/486",[142,1.462,143,1.375,148,2.347,152,0.97,213,2.158,241,1.355,323,2.46,365,3.883,446,3.748,474,5.292,696,3.61,735,3.61,766,4.068,917,6.961,941,6.743,946,7.188,947,7.188,948,7.188,949,7.188,1027,5.061,1075,4.284,1484,4.474]],["t/488",[45,1.98,49,0.818,51,2.618,54,4.065,61,2.463,125,1.831,142,2.041,143,0.974,148,1.663,149,2.721,152,0.964,188,2.635,205,2.398,226,2.783,227,1.82,229,4.356,241,1.557,270,2.377,284,1.589,337,1.263,400,2.609,435,3.777,436,4.105,472,3.327,543,2.766,628,4.781,766,2.883,804,2.609,917,5.539,978,4.544,981,4.356,982,4.779,991,4.544,992,3.948,993,5.094,994,4.779,995,2.721,996,5.094,997,7.146,1027,3.587,1075,3.036,1109,3.17,2384,5.094,2385,4.544,2386,5.572]],["t/490",[2,3.829,58,2.771,101,6.035,121,2.989,142,1.489,148,2.391,207,5.155,255,2.886,260,4.425,265,3.54,293,5.08,303,3.055,310,6.035,374,4.364,387,5.843,431,3.387,864,6.035,1003,7.321,1109,4.557,1758,6.869,2382,6.869]],["t/492",[6,2.804,49,0.939,65,2.91,83,3.126,89,5.852,96,3.961,188,2.158,244,3.126,254,2.804,265,2.829,290,2.134,292,2.339,317,1.738,336,3.939,337,1.451,361,2.968,376,2.442,384,3.396,387,4.67,412,5.49,414,3.312,431,4.106,617,1.622,735,2.939,736,3.441,753,3.699,864,7.316,865,5.003,915,4.21,916,5.852,924,3.961,926,5.219,927,4.142,930,5.49,940,4.308,1981,5.49,2387,5.49,2388,6.401,2389,6.401,2390,5.852]],["t/494",[4,1.707,5,6.314,49,0.999,60,2.55,129,5.549,143,1.19,188,2.294,251,2.762,265,3.008,273,2.079,293,3.479,329,4.965,365,3.361,384,3.611,454,3.161,455,2.66,514,4.211,616,1.734,901,6.222,904,1.858,905,2.055,917,4.822,968,6.222,969,5.549,970,6.222,971,6.222,972,5.837,973,6.222,1168,4.695,1267,4.965,1943,4.695,2391,5.549]],["t/496",[1,2.182,5,5.197,35,4.429,46,5.837,49,1.209,65,3.746,126,6.011,171,2.178,265,4.47,694,7.066,865,7.905,1008,7.066,1920,5.837,2382,7.066,2392,8.239,2393,7.532]],["t/498",[6,2.981,45,2.419,49,1.314,60,2.709,179,3.124,188,2.294,216,4.135,234,2.676,241,1.544,251,2.935,273,2.079,335,3.324,365,3.361,384,3.611,414,4.634,436,3.094,446,4.057,454,2.402,679,1.743,735,3.124,900,4.293,904,1.858,906,6.222,917,6.345,1484,3.872,2383,7,2390,6.222]],["t/500",[1,0.779,2,1.725,3,1.69,45,1.283,56,1.596,58,2.415,60,2.736,71,1.967,95,2.233,121,1.347,142,1.052,143,0.631,147,1.171,152,1.215,157,1.782,166,1.274,171,0.954,180,1.013,199,1.868,222,1.941,224,1.567,239,1.249,241,1.787,251,2.513,263,3.003,273,1.729,280,1.377,290,1.405,304,1.961,306,2.191,317,1.536,323,2.184,332,2.429,337,0.818,345,1.377,363,3.722,365,1.782,414,4.441,415,2.277,435,3.372,436,3.593,446,3.474,454,3.029,469,2.633,471,2.49,614,2.943,616,1.442,617,0.915,624,2.605,635,2.633,640,2.193,700,3.042,735,3.204,753,2.086,769,2.277,770,2.633,788,3.722,900,4.403,904,1.545,905,1.09,913,3.3,932,2.233,959,2.49,983,3.501,995,1.763,1484,2.054,1548,2.374,1635,0.891,1784,2.277,2216,2.821,2383,2.821,2394,2.557,2395,3.61,2396,4.009,2397,3.096,2398,3.3,2399,3.61]],["t/502",[4,1.19,12,4.482,49,1.334,51,2.332,58,1.641,59,2.362,71,3.795,125,2.288,142,1.69,143,0.829,148,1.416,152,1.018,164,3.944,182,1.125,205,2.041,212,2.316,234,1.865,238,2.316,239,1.641,241,1.422,292,2.544,297,1.316,303,1.81,306,1.837,317,1.891,323,1.484,345,1.81,380,2.157,435,2.292,436,2.157,455,2.192,529,3.574,543,2.135,590,4.068,616,1.208,624,1.77,628,3.401,665,3.006,695,3.053,735,4.174,748,3.053,823,4.157,826,2.103,917,3.361,919,5.105,950,3.868,957,4.068,974,2.882,978,3.868,980,4.336,981,3.708,982,4.068,983,4.309,1054,2.55,1176,4.068,1557,3.272,1635,1.171,1793,3.46,1981,4.068,2383,3.708,2400,4.743]],["t/504",[2,4.548,265,4.205,417,5.68,864,7.169,2401,9.514]],["t/506",[58,2.878,60,2.119,142,1.547,143,1.454,152,1.026,238,5.367,241,1.434,251,2.296,265,3.677,302,6.269,304,2.065,435,4.019,436,3.782,455,2.21,616,2.119,974,5.054]],["t/508",[4,2.286,45,1.695,49,0.7,58,3.718,71,2.599,152,1.292,170,2.382,239,1.65,241,1.571,244,2.329,270,2.035,272,4.09,290,1.184,313,2.168,336,1.935,345,1.82,347,3.442,351,1.73,360,2.382,399,2.298,418,3.728,443,2.128,477,2.233,481,1.983,533,1.875,543,2.359,568,3.728,612,3.07,616,1.215,618,2.211,638,3.594,639,2.108,665,2.737,671,3.48,691,2.329,735,2.19,807,3.137,826,2.111,878,4.09,914,1.05,919,5.122,939,2.848,981,3.728,1123,3.889,1205,4.36,1294,4.36,1353,2.714,1735,2.898,1852,3.07,2086,4.09,2216,3.728,2402,4.77,2403,3.21,2404,4.09,2405,4.77,2406,4.36,2407,4.09,2408,3.889,2409,4.36,2410,4.77,2411,4.77,2412,4.77,2413,4.77,2414,4.09,2415,4.77]],["t/510",[1,2.06,2,3.59,49,1.401,60,2.571,142,1.396,143,1.313,152,1.08,157,2.6,164,2.517,165,3.042,166,1.859,171,1.392,180,1.477,189,3.544,239,3.63,240,2.246,242,3.59,254,3.835,280,2.865,290,1.307,293,2.692,297,1.461,299,3.092,304,2.505,323,1.647,363,3.463,364,3.321,365,2.6,384,2.794,415,3.321,446,3.34,455,1.399,464,3.632,784,2.831,799,1.73,866,4.563,904,2.39,959,5.181,1180,4.813,1193,4.059,1197,3.968,1567,4.116]],["t/512",[1,1.21,2,2.681,17,2.801,45,2.791,49,1.33,51,1.878,59,1.903,60,2.728,112,2.626,163,4.222,171,1.482,179,3.605,192,4.384,242,4.94,243,4.537,245,1.475,290,1.949,293,2.867,299,3.293,303,2.14,304,1.949,316,4.81,323,2.835,336,2.276,337,1.78,366,1.048,383,2.902,397,2.833,446,2.996,454,1.98,464,6.772,473,4.953,483,3.869,498,3.689,617,1.421,799,1.843,976,4.384,1068,5.918,1998,5.127,2416,5.609,2417,5.609,2418,5.609]],["t/514",[1,2.279,4,1.911,15,2.004,44,3.383,49,0.925,59,1.408,60,1.057,136,3.383,141,2.729,143,1.102,163,2.23,166,1.464,169,2.361,171,1.097,180,2.808,215,2.261,217,2.292,223,2.862,227,2.058,251,1.145,263,2.201,288,4.548,304,1.891,306,2.44,332,2.792,365,4.201,366,1.927,373,2.642,400,1.943,446,2.404,454,2.224,464,2.862,487,4.748,488,5.138,617,1.597,866,5.168,876,5.76,899,3.243,904,3.097,960,5.725,974,2.521,1018,3.793,1087,2.436,1167,3.558,1290,7.296,1330,3.793,1551,3.793,1976,3.793,2002,3.558,2285,5.76,2309,5.404,2419,4.149,2420,6.301,2421,3.793,2422,4.149,2423,4.149]],["t/516",[152,1.389,171,2.097,243,4.585,290,1.97,304,1.97,323,2.483,335,3.875,336,3.22,337,1.799,435,3.834,436,3.608,446,3.027,605,3.476,617,2.011,696,3.643,1193,4.581,2424,8.474,2425,7.254]],["t/518",[49,1.233,143,1.93,171,2.22,240,3.583,304,2.085,323,2.628,336,3.408,337,1.904,446,3.204,696,3.856,1193,4.744,2424,8.776,2425,7.679]],["t/520",[49,0.633,51,1.445,60,1.099,83,2.107,95,2.67,142,1.986,147,3.292,148,2.919,149,5.396,152,0.532,171,1.141,226,2.155,240,1.841,242,2.063,256,2.722,280,2.476,281,2.371,290,1.071,297,2.896,304,1.937,320,2.233,323,2.912,336,3.521,337,1.967,416,2.722,446,2.976,448,3.701,454,1.523,455,2.473,753,2.493,784,2.32,799,1.418,957,3.701,1193,4.024,1275,2.622,1507,2.67,1567,5.074,2424,7.443,2426,4.315,2427,3.945,2428,6.491,2429,6.491,2430,6.491,2431,3.945,2432,3.945,2433,4.315,2434,4.315,2435,4.315]],["t/522",[1,1.71,17,3.958,26,2.838,49,0.834,53,2.106,60,1.448,65,2.584,83,3.87,125,2.604,135,3.097,157,2.806,160,3.393,182,2.164,222,3.055,227,1.856,244,2.775,253,4.282,255,2.047,281,2.076,292,3.794,293,2.905,304,1.967,326,3.584,327,3.658,384,4.205,394,2.234,395,3.452,431,3.859,441,4.873,450,5.195,451,4.873,464,3.92,475,6.797,481,2.363,687,4.442,866,3.452,867,3.337,1038,4.026,1138,3.14,1798,4.873,1953,3.749,2085,6.797,2265,5.195,2436,4.873,2437,3.824,2438,4.873,2439,5.683,2440,5.683,2441,5.683]],["t/524",[1,0.9,49,1.416,51,3.232,60,1.062,70,2.082,77,2.241,142,1.586,152,1.052,169,2.372,182,2.174,188,1.405,191,2.337,192,3.259,209,2.372,213,1.144,227,1.361,234,1.639,239,1.442,241,0.719,263,3.356,271,3.259,284,1.189,290,2.117,292,2.31,303,1.59,304,1.897,317,1.132,323,2.391,337,2.078,368,3.259,388,2.106,399,1.37,404,2.409,416,2.63,431,3.607,435,2.014,455,1.108,481,1.734,529,3.142,533,1.639,617,1.056,672,2.63,694,3.575,736,2.241,799,2.078,801,3.994,868,3.041,878,3.575,924,2.58,984,2.903,986,3.575,1024,2.806,1068,3.142,1184,3.811,1198,3.575,1586,2.489,1784,2.63,1793,3.041,1856,2.954,1931,3.575,1968,2.036,2137,4.415,2145,2.059,2409,3.811,2442,2.684,2443,3.811,2444,4.169,2445,4.169,2446,3.811,2447,4.169,2448,4.169,2449,3.041,2450,3.811,2451,4.169,2452,3.041,2453,3.811,2454,4.169,2455,4.169]],["t/526",[17,2.33,46,3.306,59,2.773,65,2.121,70,4.504,77,2.509,82,2.414,93,1.807,125,1.533,142,0.868,143,0.816,147,2.927,148,2.871,175,4.002,179,3.752,205,2.008,209,2.655,213,2.64,222,2.509,227,2.247,230,2.044,239,2.38,241,1.186,247,5.5,251,1.288,270,2.935,284,2.744,288,2.786,304,1.158,318,2.696,346,2.026,358,2.586,395,2.835,404,2.696,431,1.973,436,3.716,439,5.185,473,4.34,490,2.304,601,3.404,617,1.182,635,3.404,691,2.279,696,2.142,746,3.404,800,4.746,801,2.185,809,6.159,905,1.409,1079,3.004,1138,2.578,1175,3.219,1312,4.002,1412,3.516,1570,4.002,1831,4.266,1968,2.279,2273,5.61,2456,6.289,2457,4.666,2458,3.805]],["t/528",[60,2.321,304,2.667,337,2.065,462,6.285,2459,7.814,2460,7.122,2461,7.814,2462,8.329]],["t/530",[4,1.997,52,2.44,121,2.135,146,3.075,147,2.584,148,2.377,152,1.129,153,2.303,191,3.207,239,1.979,270,2.44,281,2.909,287,5.229,292,2.09,337,1.297,358,3.722,394,2.249,431,2.419,455,2.116,480,4.261,617,1.45,628,2.794,665,2.633,674,2.349,676,3.161,679,2.039,683,2.462,691,2.794,696,2.626,826,1.727,867,3.359,984,2.626,1027,3.682,1075,3.117,1665,3.946,1698,3.762,1707,4.906,1961,3.608,2450,5.229,2463,5.72,2464,5.72,2465,5.72,2466,3.85,2467,5.229,2468,5.229,2469,3.762,2470,5.229,2471,4.311,2472,4.053]],["t/532",[1,1.849,65,3.895,182,2.031,292,3.13,304,2.127,337,2.347,366,1.601,399,2.815,431,3.623,432,4.379,533,3.368,1275,5.205,1953,4.053,2473,8.567]],["t/534",[1,2.167,37,3.106,49,1.276,51,2.912,65,5.405,70,2.598,182,2.251,188,2.51,226,2.598,227,1.699,238,2.54,239,1.8,292,3.468,304,1.291,337,1.688,366,1.877,368,4.066,431,4.248,455,2.311,605,2.279,617,1.887,674,2.197,696,2.388,799,1.709,826,2.248,833,2.797,959,3.588,1213,3.686,1275,4.523,1304,3.686,1953,2.461,1968,2.54,2189,3.281,2474,5.202,2475,5.202,2476,5.202]],["t/536",[1,1.579,45,1.805,49,0.745,50,2.596,51,1.701,180,1.425,182,2.36,215,2.768,225,2.148,228,3.341,233,2.806,236,2.935,239,1.757,292,1.856,293,2.596,304,2.13,337,1.659,345,1.938,352,3.705,366,1.603,399,3.406,426,1.638,431,2.148,455,2.839,533,1.997,584,2.355,613,3.032,674,1.499,773,4.528,774,3.418,799,1.669,816,2.935,826,1.534,833,2.731,1015,3.97,1035,4.356,1075,3.988,1138,2.806,1275,3.086,1484,2.89,1662,4.141,1698,5.643,1730,4.643,1952,5.809,1953,2.403,1962,4.356,1968,2.48,1970,4.643,2271,7.499,2281,4.643,2477,5.079,2478,5.079]],["t/538",[37,4.129,51,2.316,77,3.718,135,3.768,180,1.94,182,2.146,227,2.258,239,2.393,292,2.526,304,1.717,337,2.051,366,1.885,399,2.974,431,2.925,443,4.038,455,1.837,674,2.041,679,1.771,799,2.272,826,2.088,1275,4.201,1952,4.279,1953,3.271,1968,3.377,2271,8.37,2479,6.915,2480,6.915,2481,5.405,2482,6.915]],["t/540",[7,3.923,51,1.854,53,2.052,77,4.184,88,3.305,142,1.815,143,1.573,152,1.315,171,1.463,224,2.404,241,1.773,290,1.374,304,1.374,317,1.503,337,1.255,359,2.938,366,2.047,414,4.656,431,2.341,542,2.283,545,2.009,617,1.403,621,2.734,674,1.634,777,6.345,806,5.864,812,5.864,825,4.748,829,4.748,830,2.647,833,2.976,834,4.908,1196,3.251,1275,3.364,1793,4.039,2011,4.328,2449,5.677,2452,4.039,2483,4.039,2484,4.039,2485,5.061,2486,5.536]],["t/542",[28,3.003,49,1.402,53,2.786,152,0.927,182,1.783,241,1.647,251,2.075,290,1.866,292,2.747,337,1.704,366,1.961,414,3.891,545,2.728,624,3.565,674,2.219,696,3.452,826,2.885,833,4.042,2396,5.327,2397,8.192,2485,6.874,2487,6.874]],["t/544",[28,2.926,49,1.379,53,2.715,125,3.088,143,1.643,152,0.904,182,1.737,241,1.62,251,2.022,292,2.677,337,1.661,366,2.044,542,3.022,545,2.658,624,3.507,674,2.162,696,3.364,766,4.862,825,6.284,826,2.837,2484,5.345,2488,5.974]],["t/546",[28,3.053,49,1.303,53,2,71,2.941,125,2.512,142,1.65,152,0.666,171,2.02,182,1.812,213,1.481,241,1.318,251,2.109,292,2.793,306,2.09,337,1.223,366,2.141,455,2.031,542,2.226,545,1.958,606,5.975,607,5.975,608,6.232,621,2.665,624,3.312,674,1.593,696,2.478,766,3.955,784,4.109,788,3.55,826,2.915,829,4.629,830,2.58,1196,3.169,1208,3.824,1712,4.068,1810,3.824,2484,5.576,2489,4.644,2490,2.58,2491,4.401,2492,4.401]],["t/548",[60,2.127,135,3.339,152,0.756,163,3.294,171,1.62,183,5.255,304,2.072,323,1.917,336,3.387,337,2.495,345,2.338,366,1.56,376,2.338,446,2.338,454,2.947,477,2.869,616,1.561,617,2.115,674,1.808,683,2.637,736,4.488,753,6.163,763,4.47,766,4.319,799,2.014,898,4.47,1106,3.791,1167,5.255,1621,4.341,2145,4.122,2449,4.47,2484,4.47,2493,6.128,2494,6.128,2495,5.602,2496,4.79,2497,4.79]],["t/550",[60,1.867,120,3.993,135,3.993,142,2.034,152,1.159,226,3.659,234,2.881,297,2.607,304,1.819,337,1.661,366,1.938,446,2.795,454,2.586,455,2.907,545,2.658,674,2.162,784,5.051,826,2.837,2498,6.284,2499,5.727]],["t/552",[60,1.583,93,2.407,135,3.387,142,1.778,148,3.3,149,3.036,152,0.767,239,2.917,280,2.371,281,3.08,297,1.725,304,2.092,323,1.945,336,2.522,337,2.325,358,2.337,366,1.916,446,2.371,454,2.194,542,2.564,545,2.255,674,1.834,676,4.658,691,3.036,736,3.342,753,4.871,1106,3.846,1961,5.317,2145,3.069,2283,3.846,2466,4.183,2500,6.216,2501,4.001,2502,4.684]],["t/554",[60,1.539,93,2.34,135,3.292,142,1.753,147,3.557,148,1.803,149,2.951,152,0.745,223,4.168,239,2.86,280,2.305,281,3.021,290,1.5,297,1.676,304,2.052,323,1.89,336,2.451,337,2.297,358,2.271,366,1.893,446,2.305,454,2.133,542,2.492,545,2.192,584,2.801,674,1.783,676,4.568,691,2.951,736,3.248,753,4.777,1092,4.553,1106,3.738,1961,5.215,2145,2.983,2283,3.738,2466,4.066,2501,3.889,2503,4.28]],["t/556",[17,3.082,55,3.749,142,1.148,143,1.079,171,1.631,270,3.578,284,1.76,290,2.082,323,1.931,337,2.424,345,2.354,366,1.998,388,3.118,455,2.229,542,2.545,545,2.239,547,4.373,584,3.889,674,1.821,676,4.635,680,3.973,691,3.014,742,5.4,748,5.4,751,6.557,826,2.533,830,2.95,1038,4.373,1507,3.819,2442,3.973,2504,5.642,2505,6.84,2506,9.53,2507,6.172]],["t/558",[9,3.293,45,1.993,49,0.823,141,3.689,142,1.46,153,4.16,172,4.227,198,3.293,213,1.539,228,3.689,251,1.548,270,2.392,281,2.049,284,2.8,290,1.949,317,1.523,323,1.755,337,1.271,355,2.294,366,1.931,376,2.14,388,2.833,417,3.349,420,3.099,455,1.49,531,2.833,542,2.313,545,2.035,672,3.538,674,1.655,679,2.32,680,3.61,682,4.092,685,5.564,702,4.573,706,3.689,751,6.138,826,1.694,830,2.681,932,3.47,983,3.47,1038,3.974,1054,3.015,2442,3.61,2489,4.771,2508,5.609,2509,5.127,2510,5.127,2511,5.564]],["t/560",[9,5.498,59,2.472,141,3.321,142,0.939,153,4.546,198,2.965,213,1.386,226,2.522,228,3.321,233,2.79,251,2.011,270,3.109,281,1.845,284,2.439,290,1.253,317,1.371,318,2.918,337,1.145,345,1.926,355,2.065,366,1.933,420,2.79,455,1.342,490,2.493,531,2.551,542,2.082,545,1.832,547,3.577,584,2.341,672,3.185,674,2.151,676,4.027,679,2.398,682,3.684,683,2.173,691,4.176,706,5.624,789,3.124,826,1.525,830,2.414,833,2.715,867,2.965,932,3.124,1353,2.873,1484,2.873,1979,4.33,2489,3.068,2504,4.616,2505,5.942,2509,4.616,2510,6.662,2512,5.049]],["t/562",[51,3.265,60,1.229,77,2.593,93,1.868,135,2.628,142,1.813,143,0.843,148,3.282,149,2.355,152,1.027,213,1.935,224,2.094,239,2.439,280,2.689,281,2.575,297,1.956,303,2.689,304,1.75,314,2.787,317,1.309,323,1.509,336,1.957,337,1.888,358,1.813,366,1.821,431,2.04,446,1.84,454,1.702,542,1.989,545,1.75,617,1.222,674,1.423,676,3.895,691,2.355,696,2.214,736,2.593,830,2.306,833,3.79,1054,2.593,1106,2.984,1586,4.974,1626,3.519,1793,3.519,1961,4.446,2144,3.77,2145,3.481,2449,3.519,2452,3.519,2453,8.377,2460,3.77,2466,3.246,2501,3.105,2502,3.635]],["t/564",[51,3.41,60,1.229,77,2.593,135,2.628,142,1.955,147,3.627,149,2.355,152,1.027,213,1.935,224,2.094,228,3.172,239,1.669,251,1.331,280,2.689,281,1.762,290,1.197,297,1.338,303,2.689,304,1.197,317,1.309,323,1.509,336,1.957,337,1.888,358,1.813,366,1.821,431,2.04,443,2.152,446,1.84,454,1.702,542,1.989,545,1.75,617,1.222,674,1.423,676,3.895,691,2.355,696,2.214,736,2.593,804,2.259,830,2.306,833,3.79,834,3.042,1054,2.593,1106,2.984,1586,2.879,1793,3.519,1961,4.446,2144,3.77,2145,3.481,2449,3.519,2452,3.519,2461,4.136,2466,3.246,2501,3.105,2503,3.417,2513,6.444,2514,3.246,2515,4.136]],["t/566",[4,1.38,48,3.795,49,0.807,52,2.347,146,4.165,148,2.312,152,1.349,179,2.525,180,2.516,213,1.51,225,2.327,240,2.347,241,0.948,251,1.518,281,2.01,284,2.21,313,2.501,336,2.232,346,3.363,347,3.221,351,3.862,366,2.043,394,2.163,399,1.808,481,2.288,531,2.779,542,2.269,545,1.996,558,3.795,616,1.401,621,2.716,674,1.623,679,1.409,683,3.334,796,6.317,804,2.576,830,2.63,1024,5.214,1074,5.181,1141,4.145,2127,4.3,2516,4.013]],["t/568",[17,3.749,48,2.795,49,0.595,121,2.309,142,0.753,143,1.082,152,1.036,179,3.446,225,1.713,233,2.239,234,1.593,247,2.726,251,2.319,270,3.861,281,1.48,284,1.156,290,2.604,298,2.726,316,3.474,336,1.644,337,2.25,345,2.361,347,2.573,351,3.714,355,1.657,366,1.912,481,1.685,531,3.793,542,1.671,545,1.47,612,2.608,616,1.032,621,2,638,3.053,674,1.195,679,1.037,683,2.663,795,3.167,799,2.975,801,4.649,804,4.239,830,1.937,1074,4.338,1109,2.305,1735,4.561,2517,3.167,2518,6.188,2519,7.507,2520,6.438,2521,4.051,2522,4.051,2523,4.051,2524,2.419,2525,4.051,2526,4.051]],["t/570",[1,1.744,28,3.228,49,1.467,70,4.037,125,2.657,152,0.997,166,2.854,182,1.917,205,3.479,251,2.231,292,2.954,304,2.007,306,3.871,431,4.589,438,3.948,696,3.711,2527,7.39]],["t/572",[4,1.281,6,3.22,58,1.768,59,1.733,65,3.342,143,0.893,152,1.32,182,1.211,188,2.902,215,4.005,225,2.161,265,2.258,290,1.268,317,1.387,347,3.056,360,2.552,366,1.941,399,3.094,482,3.62,665,2.847,667,4.382,914,2.195,1412,3.85,1635,2.126,1982,4.382,2137,5.763,2189,3.223,2437,6.713,2458,4.166,2528,4.671,2529,5.109,2530,4.671,2531,5.109,2532,4.671,2533,5.109,2534,4.671,2535,5.109,2536,4.005,2537,3.524,2538,8.608,2539,7.35,2540,3.994,2541,4.166]],["t/574",[4,2.173,49,1.088,58,2.565,78,2.818,152,1.38,179,2.374,227,1.689,238,2.525,241,1.278,251,1.427,290,1.84,304,1.283,337,1.68,366,2.007,376,2.828,399,2.436,400,2.421,435,3.581,436,3.37,533,2.033,542,2.132,545,1.876,616,1.317,628,2.525,640,3.141,665,2.452,674,1.526,766,4.898,769,4.676,826,2.239,830,2.472,951,3.48,977,2.898,984,2.374,1012,3.663,1123,6.045,1412,3.896,1484,2.942,1679,2.612,1681,4.216,1953,2.446,2226,4.727,2323,5.978,2403,3.48,2483,3.772,2484,3.772,2542,5.171]],["t/576",[4,2.028,49,1.187,152,1.233,337,2.266,366,1.867,399,2.657,533,3.179,628,4.882,665,3.306,674,2.386,826,2.441,1412,6.092,1881,6.092,1953,3.825,1968,3.948,2530,7.39]],["t/578",[337,2.466,366,1.739,399,3.059,1953,4.403,2458,7.59,2543,9.308]],["t/580",[337,2.466,366,1.739,1953,4.403,1968,4.546,2458,7.59,2532,8.509]],["t/582",[143,1.4,148,2.391,152,0.988,188,2.7,337,2.253,366,1.857,399,3.266,417,4.782,443,3.573,639,3.54,674,2.363,867,4.702,1698,5.268,1953,3.789,2490,3.829,2540,6.26,2544,7.321,2545,9.938]],["t/584",[51,2.454,152,1.427,188,3.167,227,2.393,244,3.578,317,1.989,337,2.13,360,3.659,366,1.755,399,2.408,665,2.423,674,2.162,799,3.088,833,3.939,1054,3.939,1679,3.702,1953,4.445,1968,3.578,2137,4.234,2534,6.698,2540,5.727,2546,5.522]],["t/586",[4,1.297,51,1.732,142,1.378,143,1.296,148,1.543,152,1.38,180,1.451,188,1.743,225,3.665,230,2.265,317,1.404,337,1.68,351,2.69,360,2.582,366,2.053,399,1.699,455,1.374,542,2.132,545,1.876,621,2.553,628,3.62,674,1.526,676,4.096,691,2.525,799,1.699,826,2.239,830,2.472,833,2.78,867,3.036,984,2.374,1056,3.772,1196,3.036,1735,3.141,1810,3.663,1854,4.772,1994,4.727,2452,5.408,2460,4.042,2466,3.48,2469,4.876,2498,4.434,2501,3.328,2516,3.772,2544,4.727,2546,3.896,2547,6.045,2548,7.413,2549,6.777,2550,5.171,2551,4.727,2552,5.171]],["t/588",[37,5.375,51,3.366,71,3.738,152,1.316,188,2.312,225,4.512,337,2.041,366,1.877,399,2.958,472,4.096,533,2.697,545,2.489,639,3.032,665,2.269,674,2.024,700,3.688,833,3.688,914,1.51,1953,3.245,2490,3.279,2516,5.005,2541,5.594,2553,6.271,2554,7.037,2555,7.721]],["t/590",[152,1.22,160,3.969,188,2.241,213,2.42,225,4.185,244,5.147,337,1.999,345,2.536,366,1.969,399,2.185,542,2.742,545,2.412,628,4.307,667,5.702,674,1.962,826,2.008,984,3.052,1275,6.012,1784,4.193,1953,3.145,1968,3.247,2452,4.85,2516,4.85,2536,3.623,2541,5.421,2546,5.01,2549,6.077,2553,6.077,2555,5.702]],["t/592",[3,3.858,82,4.263,142,1.532,182,2.398,279,6.44,280,3.143,298,5.545,303,3.143,306,3.19,334,5.683,337,1.867,346,3.577,380,3.746,898,6.011,1109,4.688,2393,7.532,2491,6.718,2492,6.718]],["t/594",[4,1.416,14,3.315,28,3.632,49,1.335,58,1.953,120,4.299,125,1.855,142,1.926,152,1.121,182,2.612,241,0.973,251,2.177,292,2.882,303,2.154,304,1.958,305,1.476,306,2.186,345,2.154,366,1.699,431,4.164,432,2.886,438,4.441,490,2.788,624,2.944,914,1.736,983,3.493,2189,3.561,2437,5.309,2491,6.432,2536,3.076,2537,3.894,2556,5.645,2557,5.161,2558,4.842,2559,4.842,2560,4.842]],["t/596",[4,1.38,14,3.23,28,3.581,49,1.316,56,2.432,70,3.869,93,2.13,120,2.998,125,1.808,142,1.908,152,1.2,165,3.179,167,2.501,182,2.126,213,1.51,215,2.998,241,0.948,251,2.138,292,2.83,304,1.365,306,3.769,313,2.501,337,1.247,346,2.388,366,1.675,380,2.501,431,4.117,438,2.687,624,2.053,788,3.618,914,1.705,1276,4.485,1953,2.602,2189,3.47,2437,5.214,2492,6.317,2527,5.029,2536,2.998,2537,3.795,2558,4.718,2559,4.718,2560,4.718,2561,5.501,2562,3.795]],["t/598",[120,5.037,142,2.015,147,2.319,148,2.133,152,1.336,165,4.128,167,3.248,182,1.694,227,2.333,251,2.551,290,2.295,306,2.767,317,2.51,337,2.095,360,3.568,665,2.363,984,3.28,1854,4.599,1953,3.38,2137,4.128,2536,5.037,2563,9.244]],["t/600",[65,4.325,290,2.362,399,3.126,1635,2.349,2137,5.497]],["t/602",[4,1.133,17,3.355,37,2.698,49,0.663,52,1.928,60,1.151,120,4.37,142,1.249,143,0.79,148,2.651,152,1.095,153,3.575,174,3.532,199,2.338,205,1.945,225,4.356,233,2.497,234,3.492,252,2.533,284,1.917,290,2.204,304,1.122,309,2.232,337,2.531,346,1.962,347,2.794,351,2.438,355,1.849,366,2.02,542,1.864,545,1.64,612,4.325,621,2.232,674,1.334,799,1.485,801,3.146,804,2.116,826,1.365,830,2.16,939,2.698,951,3.041,984,2.075,1161,3.117,1196,2.653,1784,2.85,1953,2.138,2459,3.876,2517,3.532,2520,3.876,2536,3.661,2559,3.876,2562,3.117,2564,4.131,2565,6.142,2566,3.685]],["t/604",[4,1.266,17,3.639,28,2.016,49,0.741,52,2.154,60,1.286,120,3.971,142,1.355,147,3.039,152,1.155,153,3.769,205,2.173,225,4.199,233,2.79,234,2.865,252,2.83,290,2.324,304,1.253,337,2.592,346,3.164,355,2.065,366,2.078,542,2.082,545,1.832,621,2.493,674,1.49,799,1.659,801,3.413,826,1.525,830,2.414,951,3.398,984,2.318,1196,2.965,1953,2.389,2229,3.947,2459,4.33,2517,3.947,2536,3.971,2560,4.33,2562,3.483,2567,4.616,2568,6.662,2569,3.947]],["t/606",[4,1.797,17,2.464,28,2.862,37,2.945,49,1.052,58,1.707,120,5.047,125,2.355,142,2.056,143,0.863,152,1.364,171,1.304,180,2.01,182,1.17,215,2.688,234,1.94,240,2.105,297,1.369,306,1.91,317,1.946,337,2.099,346,3.111,366,1.917,399,1.621,455,2.243,542,2.035,545,1.79,621,2.436,665,1.631,674,1.456,678,3.856,766,3.708,784,3.853,826,2.797,830,2.358,1953,2.334,1968,2.409,2137,2.851,2374,4.943,2484,3.599,2536,2.688,2547,5.843,2562,3.403,2564,4.51,2570,5.228]],["t/608",[4,1.943,17,2.747,28,3.094,49,0.807,120,4.221,142,1.979,152,1.349,171,1.454,182,1.304,215,2.998,251,1.518,284,1.569,297,1.526,306,3.769,309,2.716,317,1.493,337,2.206,346,3.363,366,1.917,399,1.808,432,3.96,455,2.058,529,4.145,533,2.163,545,1.996,558,3.795,665,1.819,674,1.623,746,4.013,784,4.165,826,2.339,951,3.702,1953,2.602,2137,3.179,2374,5.344,2551,5.029,2562,3.795,2567,5.029,2569,6.055,2571,5.501]],["t/610",[14,3.874,28,3.504,49,1.447,59,2.238,125,2.168,143,2.007,152,1.296,180,1.851,224,2.864,241,1.137,251,2.421,292,3.205,304,2.178,305,1.725,306,2.555,431,4.443,432,3.372,438,4.814,490,3.258,624,3.274,800,4.551,983,4.082,2462,6.031,2557,6.031]],["t/612",[65,3.851,120,4.616,142,1.164,143,1.095,147,2.032,148,1.869,152,1.269,165,3.618,167,2.847,182,1.485,227,2.766,251,2.338,290,2.383,317,2.3,337,1.92,360,3.127,366,1.794,399,2.058,665,2.071,914,1.864,984,2.874,1635,1.546,1854,4.03,1953,2.962,2137,4.895,2189,3.949,2437,5.701,2488,5.105,2536,5.231,2537,4.319,2558,5.37,2562,4.319,2572,5.724,2573,5.724]],["t/614",[4,1.196,17,3.492,49,0.7,52,2.035,120,2.599,142,0.887,143,1.222,147,1.548,152,1.124,174,3.728,180,1.338,199,2.468,205,2.052,225,4.432,233,2.635,234,3.584,252,2.674,284,1.994,290,2.263,309,2.355,317,1.295,337,2.561,346,2.071,347,2.907,351,2.537,355,1.951,366,2.008,542,1.967,545,1.73,612,4.501,621,2.355,674,1.407,799,1.567,801,3.274,804,2.233,826,1.44,830,2.28,939,2.848,951,3.21,984,2.19,1161,3.29,1784,3.008,1953,2.256,2461,4.09,2517,3.728,2520,4.09,2536,3.81,2562,3.29,2565,6.392,2566,3.889,2572,4.36,2574,4.36,2575,6.992]],["t/616",[4,1.768,17,3.52,49,0.708,52,3.007,93,1.868,120,3.841,142,0.897,143,1.457,148,2.104,152,1.256,153,3.689,180,1.353,205,2.075,213,1.324,225,4.123,233,2.665,234,2.772,252,2.704,270,2.057,290,2.275,337,2.567,346,2.094,355,1.973,366,2.054,542,1.989,545,1.75,558,3.327,621,2.382,674,1.423,799,1.585,801,3.301,826,1.456,830,2.306,951,3.246,984,2.214,1196,2.832,1662,3.933,1953,2.282,2229,3.77,2460,3.77,2517,3.77,2536,3.841,2562,3.327,2568,6.444,2569,3.77,2573,4.409,2576,4.409,2577,7.049]],["t/618",[4,2.145,17,2.522,28,2.016,49,0.741,51,2.864,58,1.747,77,2.715,120,3.971,125,2.395,142,1.355,143,1.637,152,1.315,171,1.335,180,1.416,224,2.192,240,2.154,303,2.78,317,2.322,337,1.938,346,3.712,366,1.933,399,1.659,431,2.135,455,2.488,542,2.082,545,1.832,621,2.493,665,2.41,674,1.49,676,4.027,678,3.947,691,2.466,766,3.771,826,2.201,830,2.414,833,2.715,1793,3.684,1953,2.389,2137,2.918,2449,3.684,2452,5.317,2484,3.684,2498,4.33,2501,3.25,2536,2.751,2562,3.483,2570,5.317,2574,4.616]],["t/620",[4,2.127,17,4.236,143,1.483,152,1.27,180,2.38,337,2.512,346,3.683,366,1.585,432,4.336,533,3.335,558,5.851,2569,6.63,2576,7.754]],["t/622",[1,1.666,14,4.534,28,3.084,35,4.151,49,1.133,125,2.537,152,1.198,179,3.545,212,3.771,241,1.331,251,2.131,290,2.411,292,2.821,304,2.411,421,3.477,422,6.036,431,4.108,438,3.771,624,2.882,2396,6.882,2578,7.722]],["t/624",[4,2.094,9,3.598,52,2.614,65,3.795,121,2.287,152,1.357,182,1.453,227,2.726,241,1.439,280,2.338,284,1.748,290,2.531,317,1.664,366,1.774,376,3.185,399,2.743,665,2.761,914,1.837,927,2.614,984,3.832,1157,4.79,1635,1.513,1854,3.944,2137,4.823,2189,3.865,2437,5.618,2487,5.602,2536,4.549,2537,4.227,2579,6.128,2580,5.602,2581,5.602,2582,5.255]],["t/626",[4,0.702,15,1.353,35,4.364,49,0.411,51,3.356,52,1.194,77,1.505,142,1.78,143,0.807,147,2.911,148,2.252,152,0.841,153,2.746,213,0.768,224,1.215,225,2.885,228,1.841,241,0.483,244,1.367,251,0.773,259,2.401,284,1.316,290,2.307,303,1.068,317,0.76,337,1.84,351,1.016,355,2.406,358,1.734,359,1.485,366,2.049,376,1.068,399,0.92,443,2.058,472,2.754,509,2.16,533,1.101,542,1.902,545,2.134,549,3.606,616,1.175,618,1.298,621,2.278,639,1.238,674,1.736,676,2.549,679,0.717,691,2.253,696,1.285,799,0.92,801,2.16,821,2.188,826,0.845,830,1.338,833,4.364,834,2.909,900,3.711,927,4.353,939,1.671,951,1.884,962,6.345,1075,1.526,1196,1.644,1586,2.754,1681,2.283,1797,2.188,1930,2.559,1953,1.324,1961,2.909,1997,1.841,2414,3.956,2449,2.042,2460,2.188,2466,1.884,2483,2.042,2490,1.338,2501,1.802,2513,4.217,2515,3.956,2516,2.042,2536,2.514,2566,2.283,2580,2.559,2582,3.956,2583,4.613,2584,4.217,2585,4.613,2586,2.8,2587,4.613,2588,2.8,2589,2.559]],["t/628",[337,2.466,366,1.739,1953,4.403,1968,4.546,2581,8.509,2582,7.983]],["t/630",[14,4.493,28,3.858,49,1.123,125,2.515,143,1.338,152,1.191,251,2.921,273,2.338,292,2.796,304,2.398,431,4.085,435,4.667,436,4.392,438,4.717,624,2.856,904,2.089,905,2.311,2590,7.653]],["t/632",[4,2.501,56,2.985,58,2.336,65,4.051,152,1.359,182,1.601,213,1.853,227,2.91,241,1.164,290,1.676,366,1.863,376,3.399,399,2.219,665,2.946,768,4.347,914,1.961,984,4.09,1635,1.668,2137,5.148,2189,4.259,2437,5.996,2537,4.658,2591,6.173,2592,6.752,2593,6.752,2594,6.752]],["t/634",[14,5.293,49,1.323,125,2.963,292,3.294,304,2.238,426,2.908,431,4.516,438,4.403,2595,9.016]],["t/636",[65,3.258,129,4.023,171,2.231,182,2.698,222,2.652,227,3.025,290,1.225,296,3.738,366,1.838,399,1.621,426,2.722,459,3.344,902,2.945,914,2.038,984,2.265,995,2.409,1172,4.294,1203,2.997,1204,5.874,1557,3.403,1635,1.218,1853,5.68,2137,5.352,2189,3.112,2437,6.234,2536,4.599,2537,3.403,2596,4.51,2597,4.934,2598,4.51,2599,4.51,2600,4.934,2601,4.51,2602,4.51,2603,4.934,2604,4.51,2605,8.44]],["t/638",[1,2.29,48,2.705,49,0.576,50,2.005,83,5.075,130,2.427,182,2.793,188,1.322,219,3.066,256,2.474,292,3.797,296,2.131,317,1.639,320,2.029,323,1.889,336,1.591,366,2.047,376,1.496,426,1.265,432,2.005,481,1.631,542,1.617,545,1.423,605,1.718,616,0.999,621,1.937,674,1.157,679,1.004,683,2.597,830,1.875,963,2.137,1074,3.488,1193,1.818,1196,2.303,1208,2.779,1621,2.779,1712,2.956,1810,2.779,1894,4.403,1975,3.364,2488,3.198,2491,3.198,2492,3.198,2528,3.585,2591,3.585,2596,3.585,2606,3.585,2607,6.036,2608,6.036,2609,6.036,2610,6.036,2611,6.036,2612,6.036,2613,6.036,2614,6.036,2615,6.036,2616,6.036,2617,6.036,2618,3.922,2619,3.585,2620,3.585]],["t/640",[182,2.479,234,2.931,323,3.271,337,2.153,366,2.057,455,1.981,545,2.704,583,4.529,584,3.456,674,2.2,679,1.909,799,2.45,826,2.251,1193,5.272,1567,5.827,2481,5.827,2606,6.814,2621,6.078]],["t/642",[1,2.085,6,2.066,17,2.356,28,4.034,48,3.254,49,1.331,70,2.356,83,2.304,182,2.395,234,2.727,239,1.632,292,3.691,306,2.686,317,1.281,324,6.644,336,1.914,337,1.572,340,5.294,366,2.077,395,2.866,481,2.884,542,2.86,545,2.516,616,1.202,624,1.761,674,2.047,679,1.208,683,2.984,799,1.55,826,1.425,834,2.975,907,2.684,1024,4.667,1044,2.816,1045,4.256,1074,4.007,1662,3.846,1735,2.866,1885,5.655,1886,5.655,1987,3.342,1988,3.441,2622,4.046,2623,6.935]],["t/644",[28,3.815,182,2.619,234,4.128,296,3.706,337,2.165,366,2.063,399,2.471,545,2.728,624,3.918,674,2.219,823,4.489,1953,3.557,2598,6.874,2621,6.131,2622,6.449]],["t/646",[6,2.174,48,3.423,49,0.728,182,1.706,234,2.83,238,2.423,290,1.786,296,2.54,317,1.347,336,2.013,337,1.919,366,2.129,399,1.631,426,1.6,443,2.214,481,2.063,482,3.516,542,2.046,545,2.611,583,5.642,616,1.264,665,1.641,674,2.124,679,1.271,683,3.097,789,3.07,816,2.867,826,2.557,830,2.372,943,3.13,1017,3.739,1024,4.843,1074,4.158,1172,2.3,1402,3.264,1853,3.339,1879,5.099,1901,5.423,1913,6.775,1952,6.723,1953,2.347,1968,2.423,2501,3.194,2515,4.255,2599,4.536,2624,6.579,2625,6.579,2626,4.536]],["t/648",[182,2.343,238,3.875,296,2.801,337,2.24,366,2.01,399,2.608,545,2.879,665,2.624,674,2.342,826,2.984,1853,5.34,1879,7.001,1901,7.446,1953,3.754,2501,5.108,2601,7.254]],["t/650",[6,2.506,48,3.946,49,0.84,182,1.356,234,3.13,336,2.321,337,2.076,366,2.139,399,1.88,443,2.552,481,2.379,482,4.053,545,2.889,616,1.457,674,2.349,679,1.465,683,3.426,816,3.305,826,1.727,943,3.608,1017,4.311,1024,5.358,1074,4.6,1402,3.762,1853,5.358,1913,7.224,1952,6.977,1953,2.706,1968,2.794,2602,5.229,2624,7.278,2625,7.278,2626,5.229,2627,9.158]],["t/652",[39,5.051,182,2.594,234,4.301,337,2.13,366,2.113,399,2.408,481,3.047,545,2.658,665,3.107,674,2.162,951,4.931,1172,3.397,1209,4.819,1901,7.08,1953,3.466,2501,4.716,2621,5.974,2628,7.327]],["t/654",[28,2.853,182,2.43,234,4.029,290,1.774,337,2.095,366,2.148,545,2.592,624,3.825,665,2.363,674,2.728,828,6.531,1172,3.312,1901,6.966,1953,3.38,1968,3.489,2501,4.599,2604,6.531,2621,5.826,2622,6.127,2629,9.244]],["t/656",[1,2.009,125,3.059,304,2.31,423,3.747,424,4.403,431,3.937,2630,9.308]],["t/658",[58,1.27,69,3.356,182,1.36,188,1.237,209,2.089,238,3.895,239,1.27,241,0.633,258,3.02,264,1.719,285,3.691,290,1.751,292,1.341,304,0.911,361,1.702,366,1.852,395,2.23,399,3.148,400,2.685,410,3.356,417,2.192,423,3.99,424,3.338,431,1.553,474,2.471,511,3.539,617,0.93,664,2.678,682,2.678,910,4.676,914,2.108,977,2.058,1298,3.956,1635,2.264,1953,1.737,1968,4.478,2137,5.298,2189,2.316,2266,2.316,2437,6.447,2536,4.714,2537,2.532,2620,3.356,2631,3.671,2632,5.242,2633,3.671,2634,5.242,2635,3.671,2636,5.242,2637,3.671,2638,5.242,2639,5.242,2640,3.671,2641,5.242,2642,3.671,2643,5.242,2644,3.671,2645,2.678,2646,3.356,2647,3.671,2648,3.356,2649,3.671,2650,3.671,2651,3.356,2652,3.671,2653,5.734,2654,3.671,2655,3.671,2656,3.356,2657,3.671,2658,3.356]],["t/660",[49,1.187,209,4.6,264,3.786,304,2.007,337,1.832,366,1.867,399,2.657,400,3.786,423,4.024,424,3.825,674,2.386,977,4.532,984,3.711,2170,6.319,2511,5.728,2646,7.39,2659,7.39,2660,9.138]],["t/662",[337,2.156,366,1.777,1968,4.646,2632,8.697,2659,8.697]],["t/664",[337,1.981,366,1.958,399,2.872,423,3.518,674,2.579,826,2.64,984,4.013,2266,5.513,2645,7.648,2648,7.991,2661,7.991]],["t/666",[337,2.156,366,1.777,1968,4.646,2634,8.697,2661,8.697]],["t/668",[49,0.893,51,2.038,170,4.149,171,2.196,213,1.67,227,1.987,258,3.849,317,1.652,337,1.379,346,2.641,366,1.899,394,2.392,399,3.109,423,4.283,459,2.411,533,3.72,542,2.509,674,1.795,683,2.618,826,2.509,830,2.908,833,3.271,834,3.838,984,2.793,1212,6.901,1557,4.197,2394,5.886,2645,6.061,2651,5.562,2662,5.562,2663,8.308,2664,8.308,2665,6.084]],["t/670",[49,1.133,170,3.856,258,2.924,337,1.75,366,1.986,393,4.534,399,2.537,423,3.91,459,3.06,545,2.801,674,2.279,826,2.332,833,4.151,1968,3.771,2170,6.036,2636,7.059,2660,8.88,2662,7.059,2666,9.714,2667,7.722,2668,6.622]],["t/672",[14,3.293,49,0.823,52,2.392,121,2.093,188,1.891,198,3.293,290,1.949,304,1.949,337,2.342,366,2.181,397,2.833,399,1.843,400,2.626,423,2.258,511,3.212,531,2.833,545,2.035,674,2.674,789,3.47,951,3.775,1355,8.419,1484,3.191,1491,8.005,1806,5.127,2144,6.138,2145,2.769,2202,4.092,2536,4.938,2589,5.127,2638,5.127,2669,5.127,2670,4.573,2671,6.138,2672,7.179,2673,4.81,2674,4.81,2675,5.609,2676,5.127]],["t/674",[135,4.533,188,2.804,304,2.065,337,1.886,366,1.901,400,3.895,423,3.348,511,3.403,674,2.455,1529,6.783,1968,4.063,2202,6.069,2639,7.604,2669,7.604,2670,6.783,2671,7.952]],["t/676",[49,0.802,51,1.831,124,3.158,170,3.851,171,2.038,213,1.5,227,1.785,238,2.669,258,3.876,317,1.484,337,1.239,346,2.373,366,1.912,394,3.032,399,2.937,423,3.104,459,2.166,511,4.465,533,3.514,542,2.254,545,1.983,674,2.276,683,2.352,826,2.329,830,2.613,833,2.939,834,3.448,867,3.209,984,2.509,1212,6.519,1557,3.771,1626,3.988,2202,5.626,2394,5.464,2645,5.626,2656,4.997,2677,4.997,2678,7.712,2679,7.712,2680,5.466,2681,5.466]],["t/678",[49,1.133,170,3.856,258,2.924,337,1.75,366,1.986,393,4.534,399,2.537,459,3.06,511,3.973,545,2.801,674,2.279,826,2.332,833,4.151,1968,3.771,2641,7.059,2668,6.622,2670,6.296,2671,7.593,2677,7.059,2682,8.88,2683,7.059]],["t/680",[124,4.585,258,3.005,337,1.799,366,2.01,394,3.12,399,2.608,423,3.194,511,4.042,545,2.879,674,2.342,826,2.396,984,3.643,1626,5.789,2202,7.209,2394,5.622,2645,7.209,2658,7.254,2684,7.254]],["t/682",[45,2.672,49,1.104,50,3.844,284,2.145,290,2.371,337,1.704,366,1.785,397,3.799,511,3.076,674,2.219,789,4.653,898,5.486,1000,4.84,1968,3.672,2144,7.466,2145,3.713,2536,5.205,2643,6.874,2672,8.732,2673,6.449,2674,6.449,2676,6.874,2684,6.874,2685,6.449]],["t/684",[290,2.384,304,1.883,337,1.719,366,1.969,376,3.664,423,4.243,545,2.752,584,4.453,674,2.238,826,2.901,977,4.252,984,4.41,2170,5.929,2481,5.929,2511,6.805,2645,7.007,2686,6.185]],["t/686",[49,1.112,65,1.868,135,2.239,188,1.385,196,2.835,209,2.338,227,1.342,252,2.303,264,1.924,290,2.476,304,1.02,317,1.116,337,0.931,358,1.545,361,1.905,366,1.921,376,2.386,394,1.616,399,1.35,400,1.924,420,2.271,423,3.863,424,2.959,425,2.911,481,1.709,511,3.925,542,1.695,545,1.491,584,2.9,613,2.453,618,1.905,621,2.029,639,1.816,672,2.592,674,1.213,789,2.543,793,3.756,798,2.911,826,2.287,830,1.964,834,2.592,924,2.543,977,3.506,984,1.886,1016,2.765,1196,2.413,1298,2.835,1635,1.015,1665,2.835,1698,2.703,1810,2.911,1830,2.592,1974,3.524,1978,3.351,1979,3.524,2126,7.12,2128,3.351,2137,2.374,2141,3.524,2145,2.029,2186,3.524,2202,4.563,2466,4.21,2469,2.703,2472,2.911,2481,3.212,2490,1.964,2511,4.432,2645,4.563,2670,3.351,2673,5.364,2674,5.364,2685,6.495,2686,3.351,2687,6.255,2688,4.109,2689,4.109,2690,3.756,2691,3.756,2692,3.756]],["t/688",[1,2.009,125,3.059,152,1.148,304,2.31,421,4.192,431,3.937,2693,9.308]],["t/690",[49,0.581,83,1.933,152,1.335,166,1.397,182,1.441,238,2.969,258,2.802,290,0.982,292,1.446,304,0.982,360,3.695,361,1.835,366,1.839,399,3.339,431,1.674,459,3.29,605,1.734,665,1.309,914,2.081,927,3.541,995,3.614,1017,2.983,1156,3.693,1422,5.213,1635,2.05,1968,4.375,2137,5.176,2189,2.497,2266,3.834,2350,4.581,2396,5.243,2403,2.664,2437,6.363,2536,4.524,2537,2.73,2619,3.618,2694,3.958,2695,3.618,2696,3.958,2697,5.557,2698,3.958,2699,5.557,2700,3.958,2701,5.557,2702,5.557,2703,3.958,2704,5.557,2705,3.958,2706,5.557,2707,7.4,2708,3.618,2709,3.958,2710,3.618,2711,3.958,2712,3.958,2713,3.958,2714,3.618]],["t/692",[4,1.605,152,1.375,188,2.158,225,2.707,241,1.103,304,1.589,337,1.451,361,3.986,366,2.083,376,2.442,394,2.517,542,2.64,545,2.322,621,3.161,628,4.199,665,2.117,674,1.889,769,5.423,804,2.997,826,2.596,830,3.06,834,4.037,927,2.731,977,3.588,984,2.939,1507,3.961,2323,5.931,2326,7.86,2483,4.67,2516,4.67,2715,5.852,2716,8.598]],["t/694",[4,1.354,142,1.421,147,1.752,148,1.611,152,1.19,153,2.173,166,1.905,225,3.753,238,2.636,252,3.026,280,2.059,281,1.972,290,1.34,337,1.733,358,2.029,366,2.076,376,2.059,542,2.226,545,1.958,621,2.665,628,3.733,674,1.593,676,4.224,691,3.733,696,2.478,736,2.902,742,5.713,826,2.308,830,2.58,833,4.109,927,4.512,977,3.026,984,3.509,1196,3.169,1810,3.824,1961,4.821,2145,2.665,2323,5.273,2466,3.633,2501,3.474,2516,3.938,2717,3.938,2718,4.401,2719,7.644]],["t/696",[51,2.653,61,2.51,142,2.027,143,0.634,147,2.791,148,2.567,152,0.7,153,3.672,163,3.052,166,1.279,170,2.835,171,1.85,213,0.995,230,4.176,238,1.77,256,2.286,281,1.324,284,2.259,290,1.737,293,1.853,337,1.795,355,2.322,366,1.896,376,1.383,397,1.831,542,1.495,545,1.315,659,3.109,674,1.675,679,0.928,691,4.82,706,2.384,742,5.535,769,2.286,830,1.733,833,4.258,834,4.414,927,1.546,1022,4.414,1068,4.278,1196,2.128,1208,2.568,1586,5.446,1712,2.732,1810,2.568,2385,4.629,2489,2.202,2717,5.778,2718,2.956,2720,3.625,2721,3.625,2722,3.625,2723,5.19,2724,5.19,2725,5.19,2726,5.19,2727,5.19,2728,5.19,2729,4.869]],["t/698",[61,2.447,142,1.673,143,1.361,153,4.576,171,1.463,172,4.172,198,3.251,281,2.023,284,2.784,290,1.374,317,1.503,337,1.255,355,3.681,366,1.993,376,2.112,397,2.797,531,2.797,545,2.009,621,2.734,674,2.655,679,1.418,680,5.009,682,4.039,685,5.513,706,3.641,742,3.564,830,2.647,834,3.492,1196,3.251,1484,3.15,1586,5.372,1626,5.677,1736,5.061,2385,4.514,2489,4.728,2511,5.513,2717,4.039,2718,4.514,2723,5.061,2729,4.748]],["t/700",[61,2.872,142,1.819,143,1.518,281,2.374,284,2.979,337,2.467,355,4.002,366,1.951,397,3.283,542,2.68,545,2.357,674,2.887,680,5.59,742,6.722,834,4.098,1484,3.697,1586,5.84,1626,6.336,2385,5.298,2717,4.74,2718,5.298,2726,5.94,2729,5.572]],["t/702",[49,1.04,281,2.589,366,2.235,443,3.161,542,2.922,545,2.571,621,3.499,674,2.091,683,3.049,830,3.387,1022,5.8,1074,5.313,1196,4.161,1810,5.02,2394,5.02,2554,5.539,2717,5.169,2730,6.478,2731,7.086,2732,7.086,2733,7.086,2734,7.086,2735,7.086,2736,7.086,2737,7.086,2738,7.086]],["t/704",[49,0.845,51,1.929,65,2.618,152,1.225,170,3.995,171,2.429,209,3.276,213,1.58,227,1.881,258,3.029,313,2.618,317,1.563,337,1.305,346,2.5,366,1.949,394,2.264,399,2.629,400,2.697,533,3.614,542,2.375,545,2.089,609,5.518,628,3.906,674,1.699,683,2.478,826,2.415,830,2.753,833,3.096,834,5.045,914,1.267,984,2.644,1079,3.707,1212,5.835,1557,3.972,1854,3.707,1862,4.939,2394,5.667,2706,5.264,2739,5.264,2740,7.999,2741,7.999,2742,5.759]],["t/706",[49,1.133,65,4.416,170,3.856,258,2.924,337,1.75,366,1.986,393,4.534,399,2.537,459,3.06,545,2.801,660,5.819,674,2.279,826,2.332,833,4.151,1968,3.771,2668,6.622,2671,6.036,2682,7.059,2683,7.059,2695,7.059,2715,7.059,2739,7.059,2743,7.722]],["t/708",[51,3.242,142,1.971,152,0.67,171,1.436,290,1.348,297,1.507,337,1.231,366,1.98,399,1.785,455,2.04,533,4.015,542,2.24,545,1.971,621,2.682,628,3.75,665,1.796,674,1.603,784,4.128,826,2.923,830,2.596,833,5.49,914,2.333,927,3.799,1022,4.843,2374,5.296,2394,6.858,2708,4.965,2730,4.965,2744,4.965,2745,7.019,2746,7.678,2747,5.432]],["t/710",[59,2.692,142,1.475,152,0.979,337,1.799,366,1.846,397,4.009,399,2.608,459,3.144,628,3.875,674,2.342,697,5.474,927,3.385,1022,5.005,1968,3.875,2394,5.622,2536,4.324,2554,6.203,2697,7.254,2717,5.789,2744,7.254,2748,9.033]],["t/712",[152,1.233,241,1.394,337,1.832,366,2.027,376,3.084,399,2.657,545,2.933,665,2.673,674,2.386,826,2.441,900,6.305,1156,4.912,2323,6.895,2483,5.898,2710,7.39,2749,7.39]],["t/714",[337,2.156,366,1.777,1968,4.646,2699,8.697,2749,8.697]],["t/716",[59,2.795,152,1.247,241,1.42,337,1.867,366,1.889,397,4.162,399,2.707,459,3.265,674,2.431,748,5.303,927,3.515,2536,4.49,2701,7.532,2717,6.011,2748,9.245,2750,7.532]],["t/718",[337,2.156,366,1.777,1968,4.646,2702,8.697,2750,8.697]],["t/720",[51,2.786,152,1.255,337,1.886,366,1.901,399,2.734,533,3.271,628,4.968,665,2.751,674,2.455,826,2.512,833,4.472,2266,6.417,2714,7.604,2751,7.604]],["t/722",[337,2.156,366,1.777,1968,4.646,2704,8.697,2751,8.697]],["t/724",[1,1.742,49,1.185,60,2.057,65,4.208,152,0.996,188,1.967,227,1.906,241,1.006,290,1.449,306,2.26,337,1.323,358,3.035,366,1.866,399,1.918,542,2.407,545,2.118,665,1.93,674,2.382,866,3.546,900,5.093,927,2.49,1068,4.398,1326,7.287,1491,4.759,1635,1.441,1665,4.026,1707,5.006,2137,3.373,2189,3.682,2466,5.434,2467,5.336,2468,5.336,2469,3.839,2470,5.336,2471,4.398,2472,4.135,2481,6.311,2483,4.258,2671,6.311,2752,5.837,2753,8.074,2754,5.837,2755,5.837]],["t/727",[49,1.283,254,4.592,374,4.763,380,3.974,485,6.294,492,8.194,493,6.587,494,5.626,2756,7.496]],["t/730",[49,0.851,60,2.664,78,3.159,142,1.078,147,2.608,148,2.399,149,4.504,152,0.715,173,4.229,199,3,213,1.591,239,2.006,242,3.841,284,1.654,290,1.439,297,1.609,299,3.404,304,2.289,305,2.102,317,1.574,323,3.472,336,2.352,337,2.091,364,3.657,365,2.863,376,2.212,454,2.837,455,1.54,458,3.902,464,3.999,481,2.411,605,2.539,697,3.999,798,4.107,799,1.905,1022,3.657,1058,3.657,1077,3.813,1743,4.972,2057,4.532,2514,3.902,2757,4.972]],["t/732",[1,1.218,18,4.413,45,2.006,49,0.829,51,1.891,60,2.508,77,3.035,142,1.691,152,1.214,166,1.993,209,3.212,227,1.844,239,1.953,241,1.85,251,2.177,254,2.473,293,2.886,297,2.189,304,1.401,317,2.142,360,2.819,365,2.788,370,3.561,374,4.299,435,3.811,436,3.587,454,3.475,459,2.237,476,5.442,477,2.644,478,2.921,494,3.634,531,2.852,616,1.438,700,3.035,839,6.432,959,3.894,1013,3.43,1075,3.076,1082,4.254,1109,3.212,2057,4.413,2758,5.645]],["t/734",[1,2.185,49,1.023,60,2.58,78,3.799,95,4.313,166,3.789,169,3.966,191,3.908,239,3.148,254,3.985,260,5.027,324,4.585,325,4.939,382,5.253,404,4.028,431,2.948,448,5.979,454,2.461,476,4.809,481,3.783,494,5.856,495,5.086,499,5.979,753,4.028,959,4.809,2759,6.971]],["t/736",[1,2.247,2,3.533,60,1.883,79,4.49,95,4.573,125,2.429,142,1.374,143,1.292,166,2.609,239,2.557,242,4.516,254,4.138,299,4.339,366,1.945,374,4.027,400,3.461,454,2.609,478,4.888,493,5.569,494,4.757,1013,4.49,1397,7.703,2760,7.39]],["t/738",[152,1.161,180,2.64,224,4.085,297,2.611,391,7.355,1288,7.091]],["t/740",[134,4.012,152,1.057,180,2.403,213,2.351,241,1.477,376,3.268,478,4.433,584,3.972,826,2.587,976,6.696,984,3.933,1397,8.445,2761,8.567,2762,8.567]],["t/742",[4,1.99,28,3.169,49,1.165,152,1.219,205,4.63,241,1.368,251,2.19,297,2.202,305,2.584,543,2.053,605,4.328,624,2.962,811,5.98,823,4.738,826,2.396,914,1.746,1172,3.679,2524,4.738]],["t/744",[12,6.703,28,2.951,125,2.429,142,1.757,152,1.284,215,4.027,241,1.274,251,2.039,257,5.236,351,2.681,376,2.819,455,1.964,543,1.912,624,2.758,631,5.098,741,5.777,801,3.461,823,4.412,826,3.145,914,1.626,1644,4.757,2403,4.974,2763,5.236,2764,5.391]],["t/746",[51,2.112,60,1.607,125,2.798,142,1.918,152,0.778,180,2.894,222,3.391,226,3.15,238,4.157,241,1.087,245,1.658,255,3.717,296,3.005,297,2.362,305,1.649,445,3.978,446,2.406,454,2.226,455,2.561,518,3.224,533,2.48,543,1.632,741,4.93,826,2.571,914,1.388,1090,5.274,1417,5.143,1644,4.06,2764,4.601,2765,4.93,2766,6.307,2767,6.307]],["t/748",[152,1.148,205,4.005,290,2.31,297,2.583,543,2.409,605,4.077,799,3.059]],["t/750",[4,1.943,49,0.807,51,1.842,52,2.347,58,2.68,60,1.401,152,1.448,213,2.126,240,3.305,241,1.335,245,1.446,251,1.518,258,2.083,284,1.569,296,1.942,317,2.643,323,1.721,351,1.996,360,2.747,399,1.808,400,2.576,435,3.743,436,4.077,445,3.47,446,2.099,454,1.942,541,4.718,543,1.424,631,3.795,633,4.718,665,1.819,763,4.013,766,2.846,826,2.339,867,3.23,914,1.211,977,3.084,984,2.525,1012,3.898,1079,3.541,1679,2.779,1881,4.145,1997,3.618,2403,3.702,2540,4.3,2541,4.485,2757,4.718,2768,5.501]],["t/752",[59,2.365,147,2.953,148,2.716,152,1.249,170,4.543,213,1.913,241,1.202,313,4.605,345,2.659,347,3.783,351,3.301,388,3.522,399,2.99,472,4.162,543,1.804,612,4.487,618,3.232,631,4.809,639,3.082,665,2.305,691,3.405,826,2.105,914,1.534,1883,5.684,2404,5.979,2764,5.086,2769,5.684,2770,6.373]],["t/754",[51,3.113,59,2.444,93,2.79,152,1.446,188,3.664,241,1.242,317,1.956,351,3.372,358,2.708,399,2.368,459,2.855,533,2.833,543,1.864,631,4.97,665,2.383,800,4.97,826,2.176,914,2.045,1797,5.632,2546,5.429,2769,5.874,2771,6.586]],["t/756",[15,3.025,51,2.097,52,2.671,99,5.105,152,1.184,166,2.99,194,6.621,225,4.685,227,2.045,230,2.743,241,1.079,265,4.244,284,2.416,305,1.637,358,3.185,383,3.24,459,3.804,511,3.927,543,1.62,665,2.071,679,1.603,709,4.495,791,6.002,799,2.058,914,1.378,1074,3.618,1938,5.37,2514,4.214,2546,4.718,2554,6.621,2772,6.261,2773,5.724]],["t/758",[51,3.665,142,2.035,152,1.35,240,4.314,241,1.42,399,2.707,543,2.132,631,5.683,665,2.725,826,2.488,914,1.813,2774,8.239]],["t/760",[65,4.625,179,3.819,241,1.434,251,2.296,260,4.596,315,6.846,455,2.21,543,2.153,679,2.13,826,3.457,914,1.831,1635,2.054,2436,7.134]],["t/762",[152,1.1,290,2.215,297,2.476,366,1.667,391,6.974,462,6.155,505,4.797,543,2.309,605,3.908,799,2.932,2438,7.652]],["t/764",[152,1.309,241,1.538,505,4.797,543,2.309,605,3.908,826,2.694,914,1.963,1635,2.203,2403,7.142]],["t/766",[152,1.057,230,4.537,241,1.477,345,3.268,358,3.221,394,3.368,480,3.686,543,2.217,665,3.425,691,5.058,914,1.885,1635,2.116]],["t/768",[152,1.285,230,3.79,241,1.492,351,3.78,543,2.239,618,4.012,639,3.825,914,1.904,1172,4.012,1635,2.137,1679,4.371,1883,7.056]],["t/770",[4,1.886,53,2.786,152,1.178,227,3.428,241,1.81,251,2.075,290,1.866,351,3.466,355,3.076,505,5.644,543,2.472,557,5.486,568,5.877,618,3.486,639,3.324,914,1.655,1009,5.327,1635,1.857,2764,5.486,2775,6.874]],["t/773",[4,1.822,56,3.212,142,1.351,148,2.169,152,0.896,205,3.126,227,3.052,241,1.252,251,2.005,270,3.099,284,2.072,290,1.803,351,2.636,355,2.972,376,2.772,505,5.024,543,2.673,557,5.3,618,3.368,639,3.212,804,3.402,914,1.599,1009,5.148,1353,4.134,1883,5.924,2764,5.3,2775,6.642,2776,6.231,2777,7.265]],["t/775",[17,2.975,49,0.874,147,1.934,148,2.444,152,1.01,153,2.398,166,3.852,241,1.027,251,1.644,255,2.147,284,2.669,296,2.103,305,1.558,313,2.709,323,1.864,337,1.35,351,2.971,355,2.437,473,3.758,509,4.946,511,2.437,543,2.119,618,2.762,709,3.161,799,1.958,801,2.79,809,4.49,914,1.802,1090,3.046,1093,3.498,1635,1.471,1735,3.62,1833,4.858,1968,2.91,2514,4.01,2763,5.802,2778,5.958,2779,5.11,2780,5.958,2781,5.11,2782,5.958,2783,4.858]],["t/777",[60,1.851,143,1.634,147,3.662,149,5.045,241,1.252,245,1.91,270,3.099,284,2.072,297,2.016,305,1.9,323,2.273,346,3.154,355,2.972,446,2.772,454,2.565,533,2.857,543,1.88,616,1.851,753,4.198,914,1.599,1058,4.583,1402,4.778,1997,4.778,2764,5.3,2784,6.642,2785,7.265]],["t/779",[51,1.929,59,1.954,93,2.23,142,2.008,143,1.399,152,0.986,173,4.201,212,2.812,213,2.195,230,2.523,239,1.992,241,1.379,270,2.456,280,2.197,281,2.922,284,2.282,290,1.429,297,2.996,336,2.337,337,1.813,355,2.356,358,2.165,366,1.076,388,2.909,455,2.125,459,2.282,480,2.478,543,1.49,605,2.523,665,1.904,679,1.475,691,2.812,696,2.644,742,3.707,748,3.707,826,1.739,914,1.267,1417,6.522,1830,3.632,2757,4.939,2764,4.201,2786,5.759,2787,6.34]],["t/781",[4,1.617,49,0.947,50,3.297,56,2.851,130,3.99,146,4.646,148,1.925,152,1.43,180,2.734,188,2.174,213,1.77,225,2.727,240,2.751,241,1.112,251,1.78,281,2.356,284,2.465,313,2.932,346,2.8,347,4.053,351,3.536,394,2.536,399,2.119,446,2.46,473,4.068,513,4.569,514,3.99,531,3.258,796,5.258,804,3.02,1024,4.34,1074,3.726,1141,4.86]],["t/783",[143,1.209,152,1.37,180,2.539,188,2.331,225,3.827,227,2.955,230,3.029,234,3.558,297,1.919,317,2.457,358,3.402,394,3.558,455,1.837,480,2.976,631,4.77,665,2.287,696,3.175,720,5.931,791,4.899,826,2.733,1790,5.931,1854,4.451,2283,4.279,2469,4.548,2540,7.074,2788,6.915]],["t/785",[45,2.132,51,3.145,94,4.139,142,1.879,143,1.439,147,2.67,148,2.456,153,3.78,233,3.315,281,3.006,284,3.02,290,2.715,297,1.665,323,2.938,337,1.865,509,3.853,533,3.973,679,1.536,697,4.139,799,1.972,1275,6.139,1548,3.946,1997,3.946,2283,3.712,2784,5.484,2789,5.484,2790,5.999,2791,5.999]],["t/787",[45,1.827,50,2.627,56,2.272,93,1.99,130,3.18,142,1.373,143,0.899,146,2.763,147,2.396,148,1.534,152,1.322,153,2.069,188,1.732,281,1.878,284,1.466,290,1.276,298,3.459,323,2.31,337,1.165,351,3.425,355,2.102,358,1.932,360,3.686,388,2.597,395,3.123,446,1.961,477,2.407,509,5.478,510,4.407,513,3.642,514,3.18,531,3.729,533,2.021,570,2.97,617,1.302,799,2.426,801,2.407,804,2.407,814,4.018,1074,2.97,1075,4.022,1467,4.408,1484,2.924,1638,4.018,2334,4.408,2514,3.459,2763,5.23,2783,4.191,2792,4.699,2793,4.408,2794,4.699,2795,4.699]],["t/789",[60,2.25,148,2.636,224,3.834,234,3.472,304,2.192,323,2.763,454,3.117,799,3.466,1092,6.655,1138,4.879,2796,8.073]],["t/791",[60,2.25,142,1.642,147,2.866,224,3.834,234,3.472,304,2.192,323,2.763,454,3.117,799,3.466,1138,4.879,2796,8.073]],["t/793",[60,2.204,224,3.757,239,2.994,277,4.923,284,2.468,297,2.401,304,2.148,337,2.362,464,5.969,799,2.844,1022,6.572,1138,4.781]],["t/795",[9,6.041,51,2.413,142,1.34,153,4.529,234,2.833,262,4.738,284,2.651,323,2.254,358,2.708,394,2.833,455,2.47,480,3.1,665,2.383,679,2.38,691,3.519,706,4.738,720,6.179,799,2.368,826,2.807,1128,6.586,2489,4.377,2787,4.97,2797,7.205,2798,7.205]],["t/797",[153,4.443,290,2.085,394,4.024,455,2.232,482,5.951,679,2.621,680,5.407,685,7.25,826,2.537,2173,7.679,2799,8.4,2800,8.4]],["t/799",[4,2.439,49,1.03,53,3.077,60,1.788,142,0.892,143,0.839,152,1.437,164,2.293,166,1.693,171,1.268,213,2.279,215,2.613,227,2.985,234,1.886,241,1.893,251,1.323,263,2.545,264,2.246,304,1.743,312,3.749,317,2.481,336,1.946,337,1.591,355,1.962,380,2.181,435,4.415,436,4.155,454,1.693,547,3.398,614,3.911,616,1.788,671,3.499,695,3.087,709,2.545,766,5.033,771,6.021,898,3.499,1120,3.911,1484,2.729,1742,3.911,2801,3.614,2802,4.796,2803,4.796]],["t/801",[1,0.392,4,1.287,6,0.796,28,0.726,35,0.977,49,0.267,51,1.069,52,0.776,53,1.582,56,1.887,58,0.629,60,1.489,61,0.804,88,1.085,96,1.125,125,2.281,134,1.495,142,1.858,143,1.289,147,1.385,148,0.543,152,1.201,153,0.732,163,0.977,170,0.908,171,1.702,179,0.835,180,1.44,182,1.012,188,1.076,213,2.298,230,0.796,240,1.821,241,0.736,247,1.224,251,0.881,270,0.776,278,1.37,284,1.218,290,1.598,297,1.184,304,2.078,306,0.704,313,3.353,315,1.224,320,0.941,323,1.606,325,1.288,337,0.412,345,0.694,347,2.677,353,1.224,355,2.633,358,1.93,359,0.965,360,0.908,376,2.229,394,1.678,399,1.403,414,3.331,426,1.03,428,1.817,435,0.878,436,0.827,443,1.424,445,3.686,446,2.229,454,2.063,455,1.845,459,1.691,471,1.254,480,2.209,481,1.775,533,0.715,545,0.66,584,0.843,606,1.421,607,1.421,608,1.482,609,3.541,610,3.745,612,1.17,615,1.224,616,2.514,617,0.461,618,0.843,620,2.878,624,2.753,638,1.37,639,0.804,665,0.601,674,0.536,678,2.496,679,0.818,683,1.374,691,2.085,692,3.661,698,2.496,763,1.326,766,1.652,784,0.977,788,1.196,798,2.262,801,0.851,805,2.593,806,1.37,810,2.919,812,3.217,813,2.919,868,1.326,896,2.1,927,1.821,939,1.085,962,1.421,974,1.105,977,1.019,1022,1.147,1056,1.326,1058,2.014,1081,1.94,1122,2.406,1172,1.48,1181,1.559,1193,1.48,1296,1.224,1471,1.37,1635,0.788,1669,1.662,1735,1.105,1753,1.421,1854,1.17,1866,1.482,1990,1.421,1991,1.482,2107,1.662,2229,1.421,2273,2.603,2421,1.662,2443,2.919,2456,1.662,2496,1.421,2497,1.421,2499,1.421,2503,1.288,2686,1.482,2804,1.818,2805,1.559,2806,1.482,2807,1.559,2808,1.662,2809,1.662,2810,1.662,2811,3.193]],["t/803",[49,0.495,51,2.235,59,1.143,60,1.365,68,3.08,88,2.012,91,2.747,93,1.305,125,3.162,142,1.543,143,1.167,147,1.739,152,0.416,157,2.646,171,1.764,203,3.08,213,1.471,224,1.463,227,1.1,240,1.437,241,1.659,251,0.93,290,1.33,304,0.836,314,1.947,337,0.764,346,1.463,359,1.788,363,3.525,376,1.285,394,1.325,405,3.08,414,2.773,415,3.38,420,1.862,432,1.722,446,2.546,455,2.634,475,2.89,506,2.458,600,2.634,606,5.945,607,4.189,616,1.937,617,0.854,619,3.08,621,1.664,624,3.792,639,2.369,696,1.547,698,4.189,766,1.743,784,4.753,788,2.216,806,4.039,812,4.039,900,3.38,932,2.085,1109,1.917,1111,2.539,1166,2.634,1193,2.485,1275,2.047,1445,3.08,1484,1.917,1549,3.08,1608,2.634,1621,2.387,1698,2.216,1866,2.747,2007,3.08,2094,2.747,2396,2.387,2397,4.596,2427,4.899,2431,4.899,2432,3.08,2686,2.747,2812,3.369,2813,3.08,2814,3.369,2815,3.369,2816,3.369,2817,3.369,2818,3.369,2819,3.369,2820,3.369,2821,3.369,2822,3.369,2823,3.369,2824,3.369,2825,3.369,2826,3.369,2827,3.369,2828,3.369,2829,3.369,2830,3.369,2831,3.369]],["t/805",[4,2.529,5,2.959,15,2.267,45,1.667,49,1.203,52,2.001,56,2.074,58,2.39,59,1.592,74,3.236,77,2.522,142,0.872,143,1.208,152,1.389,165,2.711,166,1.656,167,3.141,170,2.343,182,1.638,213,1.288,217,2.592,227,3.293,238,3.373,240,2.001,241,1.797,251,1.295,264,2.197,273,1.433,284,1.338,290,1.165,292,1.714,304,2.035,313,2.133,345,1.79,388,2.37,417,2.801,435,4.369,436,4.964,490,2.317,531,2.37,616,2.088,766,2.427,804,3.235,904,1.281,905,1.417,1275,2.85,2234,4.024,2235,4.024,2832,4.692]],["t/807",[1,2.027,28,2.926,49,1.522,59,2.486,78,3.993,82,3.791,134,3.431,143,1.281,160,4.375,171,1.937,182,1.737,292,3.433,340,4.716,431,3.974,617,1.857,624,4.083,789,4.534,823,4.375,937,7.08,1687,4.716,1897,5.974,2488,5.974,2833,7.327]],["t/809",[1,1.568,14,4.266,28,2.901,45,2.582,49,1.372,59,2.465,74,5.012,83,3.548,191,4.073,227,2.373,292,3.984,313,3.303,395,4.414,426,2.343,431,3.073,617,1.841,624,3.488,823,4.338,907,4.134,937,7.042,1045,3.759,1681,5.924,1698,4.778,1784,4.583,1986,6.642,2224,5.924,2834,7.265]],["t/811",[1,1.658,4,1.363,14,0.813,28,1.679,34,0.841,39,4.265,45,1.495,49,1.283,53,0.513,58,0.479,59,0.47,82,1.296,105,1.188,120,0.755,121,0.935,123,1.266,125,0.455,134,4.011,142,1.475,143,0.851,152,0.6,166,0.884,169,0.788,171,0.906,182,2.422,188,0.467,199,0.717,222,1.347,223,0.955,224,0.601,226,0.692,227,0.452,234,0.545,236,1.447,239,1.88,241,0.432,251,1.343,254,1.502,263,0.735,273,0.423,280,0.956,281,0.506,290,0.622,292,0.915,293,0.708,295,1.888,296,2.711,306,2.297,309,1.693,312,1.083,317,2.01,318,1.447,320,0.717,323,1.701,334,1.728,340,3.499,345,1.308,355,0.567,361,0.642,364,0.874,366,0.909,370,1.58,376,0.956,382,1.044,388,0.7,414,1.296,416,0.874,421,0.624,423,0.558,424,0.655,426,3.187,428,5.155,435,0.669,436,0.63,443,0.618,455,1.576,459,1.359,583,0.841,584,0.642,605,1.097,616,0.353,617,1.503,624,3.913,640,0.841,665,0.828,671,1.01,672,0.874,679,1.246,683,0.596,686,0.932,700,0.745,788,1.648,789,0.857,801,0.649,823,2.905,891,1.083,904,0.378,914,0.305,932,0.857,937,1.044,939,2.048,943,0.874,944,1.188,1027,0.892,1045,0.717,1054,0.745,1082,1.044,1105,1.129,1106,0.857,1109,0.788,1138,1.384,1150,2.584,1156,0.841,1166,1.958,1168,1.728,1172,2.256,1173,1.188,1177,1.188,1193,4.662,1203,0.841,1204,1.496,1209,0.911,1402,0.911,1471,1.044,1484,0.788,1679,0.7,1687,4.567,1712,1.044,1735,0.841,1830,0.874,1842,1.188,1887,1.958,1888,1.044,1889,1.129,1890,0.955,1897,6.036,1909,2.29,1971,1.129,1972,1.129,1973,1.129,1978,1.129,1990,1.958,1991,1.129,1992,3.135,2005,1.266,2053,2.148,2216,1.083,2229,2.681,2309,1.188,2381,1.266,2387,4.661,2396,0.981,2756,1.188,2835,1.385,2836,1.385,2837,1.385,2838,1.385,2839,1.385,2840,2.505,2841,1.385,2842,1.385,2843,1.385,2844,1.385,2845,1.385,2846,1.385,2847,1.385,2848,1.266,2849,2.505,2850,1.385,2851,1.385,2852,2.505,2853,1.385,2854,1.385,2855,1.385]],["t/814",[1,1.595,45,2.626,49,1.085,95,4.573,160,4.412,166,3.335,254,4.138,302,5.569,373,4.367,380,3.36,477,3.461,481,3.073,484,9.412,485,6.61,486,6.338,489,6.026,1672,6.756,2756,6.338]],["t/817",[49,1.257,169,4.874,178,5.635,180,2.905,254,3.753,373,4.343,617,2.171,1041,7.832,1644,5.514,2856,6.07,2857,7.347,2858,7.832,2859,8.567]],["t/819",[1,1.335,49,1.102,53,1.501,55,2.461,59,1.374,93,1.569,143,0.708,157,5.055,167,2.813,185,2.271,212,1.978,213,1.112,219,3.167,227,2.452,242,2.958,244,3.022,254,2.71,255,1.46,263,2.15,265,1.791,278,3.053,304,1.864,326,2.555,345,1.546,353,2.726,359,5.063,373,4.163,384,2.15,438,3.666,459,2.452,478,2.096,481,1.685,605,1.775,616,1.576,617,1.568,679,1.037,815,3.703,816,3.575,898,2.956,905,1.223,961,2.608,1168,2.795,1288,3.053,1474,3.474,1638,3.167,1698,4.07,1920,5.319,1921,2.87,1922,4.384,2026,3.703,2057,3.167,2063,3.474,2387,3.474,2396,4.384,2536,2.208,2857,3.474,2860,4.051,2861,6.188,2862,4.051,2863,7.507,2864,6.188,2865,6.188,2866,6.188,2867,7.507,2868,3.703,2869,9.927,2870,4.051,2871,4.051,2872,4.051,2873,4.051,2874,7.507]],["t/821",[49,0.807,50,2.812,56,2.432,60,2.614,78,2.998,142,1.023,147,2.514,148,2.312,149,4.379,152,0.678,173,4.013,199,2.846,213,1.51,239,1.903,242,3.703,260,3.04,284,2.21,290,1.365,297,1.526,304,2.226,305,2.026,317,1.493,323,3.552,336,3.143,337,2.206,345,2.099,364,3.47,365,2.716,376,2.099,393,3.23,454,3.165,455,1.462,458,3.702,481,2.288,605,2.41,798,3.898,799,2.546,1058,3.47,1077,3.618,1507,3.404,1513,4.3,1743,4.718,2442,3.541]],["t/823",[18,5.079,51,2.176,60,2.212,142,1.819,152,1.288,205,2.796,241,1.93,251,2.397,293,3.322,297,2.41,304,1.613,317,2.358,332,4.373,360,3.245,365,3.208,370,4.098,435,4.196,436,3.949,454,3.066,459,2.575,531,3.283,616,1.655,839,7.081,904,1.774,1075,3.541,1082,4.897,1109,3.697,1120,5.298,2057,5.079]],["t/825",[45,2.02,49,1.163,53,2.106,60,2.325,77,3.055,166,3.221,167,4.149,191,3.185,209,3.233,230,2.489,239,1.966,242,2.716,245,1.494,254,2.489,303,2.168,365,2.806,366,1.705,373,4.354,380,2.584,382,4.282,400,2.661,426,1.833,431,2.403,454,3.221,455,2.106,464,5.467,476,6.295,477,2.661,478,5.109,481,2.363,485,3.185,487,4.282,488,4.633,489,8.05,697,3.92,967,4.633,1013,3.452,1222,4.873,1345,4.633,2875,5.683,2876,5.683]],["t/827",[1,2.361,2,3.503,4,1.838,45,3.339,59,2.486,60,1.867,166,2.586,189,4.931,239,2.535,242,3.503,254,3.21,299,4.302,400,4.4,454,2.586,478,5.366,481,3.907,541,6.284,642,5.522,643,5.346,657,4.622,1013,4.452,2877,7.327,2878,7.327]],["t/829",[1,1.542,44,5.826,49,1.049,93,2.767,134,3.346,152,0.881,180,2.004,182,2.192,224,3.102,227,2.333,239,2.472,295,6.966,296,2.522,297,1.982,305,1.868,323,2.236,373,2.996,391,5.585,473,4.507,510,4.266,617,1.811,683,3.074,1045,4.783,1106,4.421,1288,5.384,2856,5.062,2879,6.531,2880,3.312,2881,9.244,2882,6.127,2883,6.531]],["t/831",[1,0.97,4,1.127,49,1.39,50,3.421,53,1.666,66,2.782,83,3.269,134,3.744,143,1.17,148,1.342,152,0.554,160,2.684,166,1.587,180,1.261,182,1.587,213,1.234,215,3.647,230,1.969,241,0.775,292,2.445,296,2.822,305,2.091,317,1.817,345,1.715,373,1.885,376,1.715,424,3.166,426,2.857,428,3.808,454,1.587,459,1.781,478,3.463,510,3.996,584,2.084,616,1.705,624,3.534,643,3.808,679,1.151,823,2.684,905,2.021,984,2.064,1000,2.894,1054,3.598,1155,3.514,1161,3.101,1172,3.707,1203,2.731,1204,5.654,1635,1.974,2011,3.514,2242,5.74,2243,3.855,2323,3.101,2856,3.185,2882,3.855,2883,4.11,2884,2.572,2885,4.496,2886,4.496,2887,4.496,2888,4.496,2889,4.11,2890,4.11,2891,4.11]],["t/833",[134,3.521,241,1.296,248,4.215,255,3.442,260,4.155,263,3.99,317,2.041,454,3.899,618,3.486,639,3.324,643,4.278,664,5.486,914,1.655,979,4.215,1079,6.149,1507,5.91,1635,2.359,1679,3.799,1784,6.025,2490,3.594,2892,7.519]],["t/835",[4,1.19,14,4.089,17,2.369,28,1.894,67,2.882,78,3.795,88,2.832,134,3.261,142,0.882,143,0.829,179,3.197,180,1.331,182,1.651,213,1.302,223,3.272,230,2.078,234,1.865,236,2.741,241,0.818,254,3.05,263,2.517,296,3.209,304,1.729,305,1.24,309,2.342,317,1.288,327,3.053,340,5.311,351,1.721,354,2.935,360,2.369,394,1.865,414,2.454,426,2.661,432,2.425,490,2.342,543,1.802,617,1.202,683,2.041,700,2.55,773,2.935,774,3.192,907,4.694,914,1.044,919,2.935,972,4.068,1045,4.704,1122,3.574,1161,3.272,1351,3.192,1353,2.699,1635,2.038,1887,3.708,1982,4.068,1985,3.868,1987,3.361,1988,6.019,2152,3.46,2153,3.708,2242,5.972,2243,4.068,2524,2.832,2879,4.336,2880,2.199,2884,1.823,2893,3.708,2894,6.963,2895,4.743,2896,4.743,2897,4.743]],["t/837",[4,1.954,28,3.112,49,1.144,152,1.205,205,4.592,234,3.064,241,1.343,251,2.15,297,2.162,305,2.926,543,2.016,605,4.279,624,3.646,811,5.872,914,1.715,1172,3.612,2524,4.652]],["t/839",[28,3.259,234,3.209,241,1.407,258,3.09,290,2.026,297,2.79,305,2.974,421,5.122,543,2.112,605,3.575,624,3.752,914,1.796]],["t/841",[28,3.198,234,3.149,241,1.381,258,3.033,297,2.757,305,2.955,361,3.713,423,4.35,424,4.702,543,2.073,624,3.709,914,1.762,1890,6.855]],["t/843",[12,6.74,28,2.09,39,4.02,49,1.098,125,1.72,142,2.004,152,1.359,213,2.052,215,2.852,234,2.058,241,1.504,251,1.444,257,3.708,297,2.075,305,1.369,351,1.899,360,3.734,376,1.997,446,2.853,455,1.987,459,2.963,543,1.354,624,2.791,628,2.556,700,4.02,784,4.02,788,4.918,801,2.451,914,1.152,1635,2.155,1644,3.369,2374,5.158,2383,4.091,2403,3.522,2570,3.818,2763,3.708,2884,3.658,2898,4.784,2899,7.478,2900,5.233]],["t/845",[39,3.659,49,0.999,143,1.86,152,0.839,180,2.512,222,3.659,238,3.324,241,1.173,255,3.606,296,3.533,305,1.78,366,1.271,426,2.889,455,1.808,518,3.479,543,1.761,584,3.155,914,1.498,1090,5.117,1193,4.641,1209,4.476,1635,1.681,1644,4.381,2570,4.965,2765,5.32,2884,2.616,2901,6.806,2902,4.211]],["t/847",[39,3.203,49,0.874,60,1.518,125,1.958,142,1.964,152,0.735,180,2.625,222,3.203,226,2.975,238,3.999,241,1.027,245,1.566,255,3.63,296,3.303,297,1.653,305,1.558,366,1.113,426,2.641,445,3.758,446,2.273,454,2.103,455,2.176,518,3.046,543,1.542,584,2.762,784,3.203,914,1.311,1090,5.151,1193,4.338,1209,3.919,1635,1.471,1644,3.835,2499,4.657,2570,4.347,2765,4.657,2884,2.29,2902,3.686,2903,5.958,2904,3.758,2905,5.958]],["t/849",[4,1.435,16,4.664,39,3.075,45,2.033,49,0.84,56,4.048,58,2.755,59,1.941,152,1.129,169,3.255,182,1.356,227,2.6,241,0.986,251,2.527,255,3.568,265,2.529,280,2.182,290,1.42,296,3.674,305,2.082,317,1.553,366,1.069,426,2.568,436,4.502,490,2.825,518,2.924,543,1.48,584,2.652,839,4.664,914,1.752,1090,4.07,1193,4.246,1209,3.762,1635,1.413,1644,3.682,2234,4.906,2235,4.906,2765,4.471,2902,3.539,2906,5.72,2907,5.72]],["t/851",[39,3.547,49,0.968,59,2.238,152,1.082,169,3.754,182,1.564,227,2.154,241,1.512,255,3.551,280,2.517,296,3.708,305,1.725,359,3.501,366,1.233,399,2.168,414,5.1,426,2.83,432,3.372,446,2.517,518,3.372,543,1.707,584,3.059,907,3.754,914,1.452,1090,4.485,1193,4.57,1209,4.339,1635,1.629,1644,4.247,2765,5.157,2902,4.082,2908,6.597]],["t/853",[152,1.148,205,4.005,290,2.31,297,2.583,543,2.409,605,4.077,799,3.059]],["t/855",[152,1.112,205,3.879,233,4.982,241,1.554,454,3.182,639,3.985,914,1.984,1309,7.047,1635,2.226,2490,4.31]],["t/857",[4,2.139,49,1.121,51,1.396,58,2.644,60,1.062,152,1.424,171,1.102,213,1.736,240,1.778,241,1.78,245,1.096,251,2.108,258,1.579,297,1.157,304,1.035,305,1.654,317,2.074,323,1.304,335,2.036,336,1.692,345,1.59,351,1.512,355,1.705,360,2.082,366,1.181,399,2.078,400,1.952,435,4.12,436,3.877,445,2.63,446,1.59,454,1.472,533,1.639,543,1.079,601,3.041,613,2.489,616,1.946,628,2.036,640,2.533,665,2.091,697,2.876,763,3.041,766,4.413,777,5.156,826,1.91,867,2.448,900,3.989,914,0.917,915,2.742,977,3.545,984,1.914,1012,2.954,1079,2.684,1123,3.399,1156,2.533,1244,3.811,1484,3.598,1679,2.106,1762,3.811,1881,3.142,2145,2.059,2403,2.806,2801,3.142,2884,2.431,2909,4.169,2910,3.811]],["t/859",[59,2.188,143,1.128,147,2.804,148,2.579,152,1.202,170,4.315,213,1.77,241,1.112,247,4.34,313,4.431,323,2.018,345,2.46,347,3.593,351,3.938,388,3.258,399,3.203,472,3.85,480,2.775,509,3.02,543,1.669,612,4.151,618,2.99,628,3.149,639,2.851,665,2.133,914,1.419,1635,1.593,1958,5.258,2404,5.531,2490,3.083,2769,5.258,2770,5.895,2904,4.068,2911,6.449]],["t/861",[51,3.096,59,2.424,93,2.767,152,1.443,188,3.653,241,1.232,305,1.868,317,1.94,351,3.354,358,2.686,399,2.348,459,2.831,533,2.809,543,1.849,628,3.489,665,2.363,800,4.929,914,2.034,1797,5.585,2769,5.826,2771,6.531,2904,4.507,2912,7.145]],["t/863",[51,1.995,52,2.542,99,4.858,152,1.303,166,2.891,194,6.401,213,2.247,225,4.467,227,1.946,230,2.61,241,1.027,244,2.91,265,3.62,284,1.699,305,1.558,313,2.709,358,3.079,383,3.083,459,3.708,471,4.11,511,3.35,543,1.542,639,2.634,665,1.97,679,1.526,709,3.161,791,4.221,914,1.802,1022,3.758,1074,3.443,1679,3.01,1938,5.11,2490,2.848,2546,4.49,2554,7.314,2555,5.11,2773,5.446,2913,5.958,2914,5.958,2915,5.958]],["t/865",[51,3.65,142,2.026,152,1.344,240,4.289,241,1.407,305,2.134,399,2.682,543,2.112,628,3.986,665,2.699,914,1.796,2884,3.137,2916,7.46]],["t/867",[65,4.68,179,3.894,241,1.462,251,2.341,315,5.709,455,2.254,543,2.195,679,2.172,914,1.867,1608,6.63,1635,2.095,2436,7.275,2884,3.957,2917,8.483]],["t/869",[49,1.245,152,1.27,194,6.63,258,3.212,290,2.106,297,2.856,358,3.189,421,4.636,543,2.195,799,2.788,927,3.618,2266,5.35,2918,6.916]],["t/871",[1,1.813,134,3.933,157,4.148,241,1.448,305,2.197,415,5.298,454,3.896,618,3.894,639,3.713,914,1.848,1507,6.332,1635,2.074,1679,4.243,2490,4.015]],["t/873",[6,2.703,51,2.81,53,2.287,59,2.094,152,1.452,186,5.293,188,3.447,241,1.446,305,1.614,317,2.277,399,2.028,421,3.778,459,3.324,533,3.298,543,2.171,665,3.381,746,4.502,800,4.257,914,2.097,1193,4.741,2350,4.651,2902,3.819,2904,3.893,2918,5.032,2919,6.172,2920,6.172,2921,5.642]],["t/875",[6,2.212,34,4.428,49,0.741,51,1.691,53,1.871,58,1.747,152,1.425,166,2.572,186,4.33,209,2.873,230,2.212,238,2.466,241,1.256,258,2.76,305,1.32,313,2.296,317,1.371,358,2.74,383,2.613,394,2.865,421,4.471,459,3.388,511,2.981,533,2.865,543,1.307,620,2.83,665,2.828,683,2.173,700,3.918,914,1.882,1079,3.25,1081,4.428,1172,2.341,1193,4.341,1270,4.616,1298,5.027,1959,5.492,2127,3.947,2489,3.068,2763,3.577,2880,2.341,2902,3.124,2904,3.185,2922,5.049,2923,5.049,2924,5.049,2925,7.288,2926,5.049]],["t/877",[152,1.277,241,1.477,421,4.664,543,2.217,665,3.425,902,5.115,914,1.885,1635,2.116,1870,6.07,2266,5.404,2904,5.404,2918,6.985]],["t/879",[51,1.764,125,2.468,142,2.053,152,1.177,166,2.651,194,4.116,212,4.275,219,4.116,241,0.908,244,2.572,284,1.502,290,1.864,297,2.084,305,1.964,351,1.91,358,1.979,383,2.724,399,1.73,421,3.382,455,1.399,459,2.976,511,2.154,533,3.968,543,1.363,660,3.968,784,2.831,821,5.87,914,1.159,927,4.606,1022,4.737,1081,5.799,1679,2.66,2350,3.968,2374,3.632,2745,4.813,2904,5.522,2918,4.293,2921,4.813,2927,5.265,2928,5.265,2929,4.813,2930,5.265]],["t/881",[258,3.487,290,2.286,297,2.555,361,4.269,423,3.707,543,2.383,799,3.026,1890,6.352]],["t/883",[152,1.112,233,4.982,241,1.554,454,3.182,639,3.985,914,1.984,1309,7.047,1635,2.226,1890,6.219,2490,4.31]],["t/885",[4,1.407,52,2.392,53,2.078,55,3.407,58,2.717,188,2.647,215,4.279,236,3.241,239,1.94,241,0.967,281,2.049,290,1.392,305,1.467,355,2.294,361,4.551,394,2.205,423,4.742,424,3.715,425,5.564,427,4.227,443,2.502,455,2.746,511,4.381,543,1.451,674,2.317,807,3.689,914,1.234,1345,6.403,1881,4.227,1959,4.227,2145,2.769,2266,3.538,2884,2.156,2902,3.47,2931,5.609,2932,5.127,2933,4.384,2934,4.573]],["t/887",[4,1.345,52,2.288,55,3.259,58,2.633,171,1.418,182,1.272,188,2.565,215,4.147,222,2.884,239,1.856,241,0.925,270,2.288,281,1.96,290,1.331,305,1.403,355,2.194,358,2.017,394,2.109,423,4.778,424,4.553,425,3.8,427,6.665,443,2.393,455,2.558,511,4.157,543,1.388,672,3.383,674,2.246,894,4.193,914,1.18,1138,2.964,1345,4.374,1353,3.052,1818,4.903,1881,4.042,1893,4.374,1959,4.042,2125,3.913,2145,2.649,2266,3.383,2884,2.062,2902,3.319,2932,4.903,2933,4.193,2934,4.374,2935,5.364]],["t/889",[5,4.098,239,3.005,241,1.12,258,3.954,281,2.374,290,2.156,358,2.443,366,1.214,394,2.555,399,2.135,423,4.381,443,3.875,455,2.308,511,4.812,543,1.681,610,4.74,674,2.563,867,3.815,914,1.43,1075,3.541,1635,1.605,1700,4.897,1890,4.482,2125,4.74,2145,3.208,2880,3.012,2884,2.497]],["t/891",[241,1.434,361,3.857,423,4.609,424,4.813,455,2.703,511,3.403,543,2.153,902,4.966,914,1.831,1635,2.054,2125,6.069,2266,5.247,2884,3.197]],["t/893",[51,3.387,241,1.42,244,4.024,258,3.12,305,2.155,361,4.689,423,4.714,424,4.784,543,2.132,914,1.813,1635,2.035,2936,8.239]],["t/895",[51,3.199,212,3.672,230,3.294,241,1.296,244,3.672,258,2.847,305,1.966,361,3.486,423,4.446,424,3.557,443,4.684,455,1.998,511,4.664,543,1.946,914,1.655,2125,5.486,2884,2.89,2937,6.449,2938,7.519]],["t/897",[188,3.427,239,2.432,241,1.212,258,3.464,305,1.838,366,1.313,394,2.763,423,4.335,443,4.08,455,2.43,511,4.834,543,1.819,674,2.699,867,4.127,914,1.547,1075,3.83,1635,1.736,1700,5.296,2880,3.258,2884,2.701,2934,5.731]],["t/899",[55,4.529,188,2.513,239,2.579,241,1.285,264,3.491,332,5.017,361,4.404,423,4.432,455,3.022,511,3.886,543,1.929,584,3.456,914,1.64,1193,4.847,1635,1.841,2884,2.865,2902,4.612,2933,5.827,2939,6.814]],["t/901",[188,2.58,239,2.648,241,1.319,244,3.737,258,2.898,305,2.001,332,5.15,423,4.614,424,3.62,455,2.954,511,3.951,543,1.98,584,4.478,700,4.114,914,1.684,1635,1.89,2170,5.982,2884,2.941]],["t/903",[58,2.373,166,3.178,188,3.734,241,1.183,255,2.472,284,2.568,305,1.794,313,3.119,361,4.174,423,4.294,424,3.245,427,6.784,443,3.061,455,1.823,511,4.532,543,1.775,867,4.028,914,2.211,1054,3.688,1958,5.594,2884,2.637,2937,5.883,2940,6.86]],["t/905",[4,1.405,6,2.455,49,1.016,53,1.321,54,2.601,58,1.233,61,1.576,71,1.942,117,2.06,146,1.916,180,1,191,1.998,209,2.028,222,1.916,227,1.83,236,2.06,238,1.741,239,1.233,241,0.615,255,1.284,257,4.905,258,2.122,260,3.826,263,1.891,265,2.477,296,1.258,297,0.989,303,2.138,304,0.885,305,1.811,309,2.767,313,2.548,317,0.968,345,1.36,358,1.34,376,2.641,377,3.057,394,1.402,423,4.554,424,4.036,443,4.378,455,2.407,490,1.76,511,3.49,543,1.792,601,2.601,620,1.998,807,2.345,826,1.692,867,3.29,914,1.233,915,3.685,924,3.467,932,2.206,1054,3.013,1075,1.942,1090,1.822,1109,2.028,1135,3.259,1140,6.669,1353,3.188,1559,4.905,1569,3.057,1644,2.295,1678,2.786,1772,3.057,1895,2.907,2141,3.057,2145,3.419,2398,3.259,2446,5.123,2880,1.653,2884,1.37,2941,3.565,2942,5.604,2943,3.565,2944,3.259,2945,3.565,2946,7.848,2947,3.565]],["t/907",[152,1.1,290,2.215,297,2.476,366,1.667,391,6.974,462,6.155,505,4.797,543,2.309,605,3.908,799,2.932,2438,7.652]],["t/909",[152,1.309,241,1.538,505,4.797,543,2.309,605,3.908,914,1.963,1635,2.203,2403,7.142,2884,3.429]],["t/911",[152,1.057,230,4.537,241,1.477,345,3.268,358,3.221,480,3.686,543,2.217,665,3.425,691,5.058,914,1.885,1635,2.116,2880,3.972]],["t/913",[152,1.285,230,3.79,241,1.492,351,3.78,543,2.239,618,4.012,639,3.825,914,1.904,1172,4.012,1635,2.137,1679,4.371,2490,4.136]],["t/915",[4,1.87,53,2.762,152,1.172,227,3.415,241,1.802,251,2.057,290,1.85,351,3.446,355,3.049,505,5.621,543,2.458,557,5.438,568,5.827,618,3.456,639,3.295,914,1.64,1009,5.281,1635,2.346,2406,6.814,2408,6.078]],["t/917",[6,2.113,51,1.615,59,1.636,60,1.229,78,2.628,142,2.005,152,0.595,153,4.426,213,1.935,230,2.113,239,1.669,241,0.831,245,1.268,262,4.636,270,2.057,281,2.575,284,2.011,290,1.197,297,2.918,303,1.84,305,1.261,336,2.86,355,1.973,358,2.65,366,1.556,376,1.84,388,2.437,454,1.702,455,1.873,480,3.033,482,3.417,531,2.437,543,1.248,605,2.113,665,1.595,674,1.423,676,2.665,679,2.347,682,3.519,683,2.075,685,3.417,691,2.355,706,4.636,748,3.105,784,3.79,914,1.061,1635,1.191,1830,3.042,2442,3.105,2489,4.283,2511,3.417,2787,3.327,2880,2.236,2904,3.042,2948,4.823,2949,4.136]],["t/919",[60,1.595,125,2.058,143,1.879,152,0.772,180,2.376,240,3.614,245,1.646,255,2.256,277,3.562,281,2.288,284,1.786,290,1.554,296,2.21,297,2.854,305,2.69,317,1.7,320,3.24,323,1.959,335,3.058,336,3.437,376,2.389,446,2.389,454,2.21,455,2.551,505,4.554,543,1.62,766,3.24,799,2.058,979,3.51,1090,3.201,1635,1.546,2496,4.894,2570,4.568,2884,3.256,2950,6.261]],["t/921",[4,2.006,37,3.438,49,0.845,52,3.412,56,2.546,93,2.23,143,1.399,147,1.869,148,2.964,152,1.225,180,1.615,205,2.478,227,3.001,241,1.379,251,1.589,270,2.456,284,1.643,290,1.429,297,1.598,303,2.197,305,1.506,317,1.563,336,2.337,346,3.473,351,3.334,355,3.759,376,2.197,505,4.3,543,2.378,544,4.939,557,4.201,618,2.67,639,2.546,807,3.787,914,1.267,1009,4.08,1353,3.276,1635,1.422,2407,4.939,2408,4.695,2490,2.753,2776,4.939,2951,4.695,2952,4.939]],["t/923",[17,2.801,45,1.993,49,0.823,147,2.941,148,1.674,152,1.118,153,2.258,166,3.78,241,0.967,251,1.548,255,2.829,284,2.585,296,1.98,305,2.054,309,2.769,313,2.55,337,1.78,347,2.332,351,2.849,355,2.294,473,3.538,509,4.597,511,2.294,543,2.032,618,2.6,709,2.976,799,1.843,801,2.626,809,4.227,914,1.728,1090,4.014,1093,3.293,1558,5.127,1635,1.385,1735,3.407,1772,4.81,1833,4.573,1968,2.739,2514,3.775,2763,6.42,2779,4.81,2781,4.81,2952,4.81,2953,5.127,2954,5.609]],["t/925",[60,1.595,142,2.06,148,3.307,149,3.058,152,0.772,227,2.766,241,1.46,270,3.614,284,1.786,297,2.35,305,1.637,323,1.959,336,3.437,351,2.272,366,1.17,445,3.949,446,2.389,454,2.21,455,2.251,509,2.932,531,3.163,543,1.62,546,4.894,547,4.436,700,4.554,826,1.891,891,4.894,914,1.378,1081,3.804,1402,4.118,1635,1.546,2502,4.718,2793,5.37,2898,5.724,2951,5.105]],["t/927",[37,4.569,96,4.735,142,1.423,143,1.338,148,2.284,152,0.944,227,2.499,241,1.665,270,3.265,278,5.767,297,2.123,303,2.92,305,2.001,336,3.105,337,1.735,351,3.504,509,3.584,531,3.866,543,1.98,914,1.684,999,6.996,1635,1.89,2514,5.15,2951,6.24,2952,6.563]],["t/929",[7,6.01,51,3.448,142,1.914,152,1.27,241,1.462,297,2.354,305,2.218,360,5.141,543,2.195,914,1.867,1635,2.095,2916,7.754]],["t/931",[51,1.916,59,1.941,93,2.215,142,1.935,143,1.392,152,0.982,173,4.173,212,2.794,213,2.185,230,2.506,239,1.979,241,1.373,270,2.44,280,2.182,281,2.909,284,2.271,290,1.42,297,3.068,305,1.496,336,3.231,337,1.805,355,2.34,358,2.151,366,1.069,388,2.89,455,1.52,459,2.267,480,2.462,543,1.48,605,2.506,665,1.892,679,1.465,691,2.794,696,2.626,742,3.682,748,3.682,784,4.28,914,1.259,1635,1.413,1830,3.608,2442,3.682,2787,6.317,2904,3.608,2949,4.906]],["t/933",[49,0.782,60,1.93,120,2.905,125,1.752,142,2.015,143,1.325,152,0.934,180,2.125,240,3.232,245,1.992,255,1.921,270,2.274,277,3.033,281,3.22,284,1.521,290,1.323,296,1.882,297,2.813,305,2.755,317,1.447,320,2.758,323,1.668,335,2.603,336,3.074,337,1.208,376,2.034,446,2.034,454,2.674,455,2.694,505,2.866,543,1.379,766,2.758,784,2.866,799,1.752,979,2.988,1090,2.725,1635,1.316,2497,4.167,2499,4.167,2547,4.347,2570,3.889,2884,3.689,2955,5.331,2956,5.331]],["t/935",[4,1.822,56,3.212,142,1.351,148,2.169,152,0.896,205,3.126,227,3.052,241,1.252,251,2.005,270,3.099,284,2.072,290,1.803,351,2.636,355,2.972,376,2.772,505,5.024,543,2.673,557,5.3,618,3.368,639,3.212,804,3.402,914,1.599,1009,5.148,1353,4.134,1635,1.794,2407,6.231,2408,5.924,2490,3.473,2776,6.231]],["t/937",[17,2.955,49,0.868,147,1.92,148,2.433,152,1.005,153,2.382,166,3.844,241,1.02,251,1.633,255,2.132,284,2.659,296,2.089,305,2.131,313,2.69,323,1.851,337,1.341,351,2.957,355,2.42,473,3.732,509,4.934,511,2.42,543,2.109,618,2.743,709,3.14,799,1.944,801,2.771,809,4.459,914,1.793,1090,3.025,1093,3.474,1635,1.461,1735,3.595,1833,4.825,1968,2.89,2514,3.982,2763,5.774,2779,5.074,2781,5.074,2783,4.825,2953,5.409,2957,5.917,2958,5.917]],["t/939",[60,1.82,143,1.616,147,3.642,149,5.005,241,1.232,245,1.878,270,3.048,284,2.038,297,2.565,305,2.418,323,2.236,336,2.899,346,3.102,355,2.923,446,2.726,454,2.522,533,2.809,543,1.849,616,1.82,753,4.128,914,1.572,1058,4.507,1402,4.699,1635,2.283,2503,5.062]],["t/941",[51,1.878,59,1.903,93,2.172,142,1.991,143,1.373,152,0.968,173,4.092,212,2.739,213,2.155,230,2.457,239,1.94,241,1.354,270,2.392,280,2.14,281,2.869,284,2.24,290,1.392,297,3.051,305,1.467,336,3.186,337,1.78,355,2.294,358,2.108,366,1.048,388,2.833,455,2.087,459,2.222,480,2.413,543,1.451,605,2.457,665,1.855,679,1.436,691,2.739,696,2.575,742,3.61,748,3.61,784,4.222,914,1.234,1635,1.385,1830,3.538,2442,3.61,2787,6.251,2904,3.538,2949,4.81,2959,5.609]],["t/943",[27,5.484,52,3.51,121,2.239,152,1.306,170,2.996,213,2.258,227,1.959,239,2.076,241,1.885,251,2.591,255,2.162,265,2.652,284,2.679,296,2.118,297,2.283,304,1.489,305,2.456,335,2.93,346,2.605,435,3.975,436,5.186,616,2.096,799,1.972,804,2.809,956,3.946,979,3.363,1090,3.067,2106,5.145,2801,4.521,2960,5.999,2961,4.69]],["t/945",[152,1.317,241,1.554,258,3.414,543,2.333,665,3.531,914,1.984,1635,2.226,2884,3.465]],["t/947",[4,2.613,152,1.285,241,1.492,258,3.277,376,3.975,543,2.239,914,1.904,984,4.783,1635,2.137,2884,3.326]],["t/949",[4,1.763,152,1.328,180,1.972,241,1.212,255,2.532,290,2.27,296,2.481,297,2.538,305,2.659,320,3.636,335,3.432,359,3.729,376,2.681,414,3.636,505,3.778,543,1.819,605,4.006,628,3.432,657,4.433,799,2.31,979,3.94,984,3.226,1090,3.593,2323,4.848,2403,4.73,2884,3.515,2961,5.494,2962,7.028]],["t/951",[4,2.309,241,1.587,284,2.627,543,2.383,914,2.026,927,3.928,1635,2.67]],["t/953",[166,3.612,241,1.448,280,3.204,284,2.919,305,2.197,313,3.819,511,3.436,543,2.174,709,4.457,914,1.848,927,4.365,1474,7.204,1635,2.074,2963,8.4]],["t/955",[28,4.414,49,1.505,67,3.777,213,2.815,234,2.444,251,2.326,297,1.725,315,4.183,345,2.371,616,1.583,823,5.033,961,5.426,1016,6.437,1222,5.331,1635,1.535,2254,7.477,2255,5.331,2258,8.203,2261,5.331,2283,3.846,2884,3.942,2964,8.43,2965,9.375,2966,5.682,2967,6.216,2968,6.216]],["t/957",[28,3.456,39,4.652,49,1.27,241,1.492,251,2.388,426,2.791,428,4.923,616,2.204,624,3.23,823,6.675,1402,5.691,2884,3.326]],["t/959",[14,3.703,28,4.12,49,1.414,51,2.112,182,1.495,213,2.336,234,2.48,251,2.847,297,1.75,315,4.245,318,3.644,345,2.406,546,4.93,570,3.644,961,4.06,1016,6.485,1045,4.405,1203,3.832,1635,1.558,1985,5.143,2254,7.532,2255,5.409,2258,7.301,2261,5.409,2283,3.903,2880,2.924,2884,3.272,2951,5.143,2965,7.782,2966,5.766,2969,8.513,2970,6.307,2971,6.307]],["t/961",[28,3.456,67,5.257,182,2.052,241,1.492,251,2.388,354,5.354,570,5,683,3.724,1045,5.785,1351,5.823,1985,7.056,2880,4.012]],["t/963",[4,1.594,49,0.933,50,3.248,52,2.71,130,3.931,146,4.599,148,2.554,152,1.426,179,2.917,180,2.4,188,2.142,213,1.744,225,2.687,240,2.71,241,1.095,251,1.753,281,2.321,284,2.44,313,2.889,346,2.758,347,2.642,351,3.919,394,2.498,399,2.088,446,2.424,473,4.008,513,4.502,514,3.931,531,3.21,558,4.383,796,5.181,804,2.975,1024,4.276,1074,3.671,1141,4.788]],["t/965",[4,1.594,53,2.354,143,1.111,152,1.402,180,2.4,188,2.142,225,3.618,227,2.794,230,2.783,234,3.364,241,1.095,297,1.763,304,1.577,317,2.626,358,3.216,376,2.424,455,1.688,480,2.734,628,3.103,665,2.101,676,3.511,696,2.917,791,4.502,1193,3.966,1790,5.449,1854,4.09,2283,3.931,2469,4.179,2547,5.181,2880,3.966,2884,3.288,2902,3.931,2910,7.821]],["t/967",[60,2.161,142,1.914,234,3.335,297,2.856,304,2.106,454,2.994,455,2.735,1092,6.392,2283,5.249,2374,5.851,2884,3.957,2972,8.483]],["t/969",[45,2.06,51,3.089,94,3.999,142,1.852,143,1.405,147,2.608,148,2.399,153,3.235,233,3.203,281,2.936,284,2.984,290,2.686,297,1.609,305,2.604,323,2.886,337,1.822,509,3.763,533,3.916,679,1.485,697,3.999,799,1.905,950,4.727,1074,3.35,1275,6.051,1548,3.813,1635,1.432,2283,3.587,2789,5.3,2973,5.797,2974,5.797,2975,5.797]],["t/971",[45,1.871,50,2.692,56,2.328,130,3.258,142,0.979,143,0.921,146,2.831,147,1.709,148,1.572,152,1.245,188,1.775,281,1.924,284,2.497,290,2.369,298,3.544,303,2.009,323,2.739,351,3.176,355,2.154,360,3.751,388,2.66,446,2.009,477,2.466,509,5.542,510,4.484,513,3.731,514,3.258,531,4.423,533,2.07,570,3.042,799,2.468,801,2.466,804,2.466,814,4.116,1074,3.042,1484,2.996,1638,4.116,2334,4.516,2763,5.321,2783,4.293,2792,4.813,2793,4.516,2794,4.813,2795,4.813,2976,5.265,2977,5.265]],["t/973",[60,1.572,142,1.988,143,1.079,148,3.292,149,3.014,234,2.427,245,1.623,284,1.76,297,2.967,304,1.532,305,1.614,336,2.504,358,3.154,446,2.354,454,2.178,480,2.656,674,1.821,676,3.41,696,2.833,799,2.028,1296,4.153,1665,4.257,1952,5.19,1961,5.291,1997,5.517,2469,4.059,2471,4.651,2472,4.373,2502,4.651,2880,3.889,2978,5.032,2979,5.032,2980,5.032,2981,7.668,2982,6.172]],["t/975",[26,3.399,35,3.659,53,2.522,142,2.15,143,1.566,147,2.209,148,2.032,171,2.367,241,1.173,247,6.027,281,2.487,284,1.941,298,4.58,304,1.689,358,2.559,360,4.472,364,4.293,610,4.965,616,2.55,772,5.32,801,3.187,814,5.32,1074,3.932,1952,5.541,2981,6.222,2983,6.806,2984,6.222,2985,6.806]],["t/977",[51,1.866,60,1.419,142,2.041,147,3.562,149,2.721,152,0.964,234,2.191,239,1.928,297,2.716,304,1.383,305,2.044,336,2.261,358,2.939,446,2.126,454,1.967,480,2.398,674,1.644,676,3.079,696,2.558,799,1.831,914,1.226,1058,3.515,1296,3.75,1586,4.667,1665,3.844,1735,3.385,1952,6.057,1961,4.931,1997,5.141,2384,5.094,2469,3.665,2471,4.199,2472,3.948,2503,3.948,2880,4.186,2978,4.544,2979,4.544,2980,4.544,2984,7.146,2986,7.817,2987,5.572]],["t/979",[78,3.514,142,1.607,143,1.128,213,1.77,284,2.97,290,2.419,297,2.398,305,1.687,323,2.704,337,2.461,345,2.46,358,2.424,388,3.258,455,2.766,480,2.775,605,2.825,676,3.563,680,5.562,696,2.961,742,4.151,751,5.041,754,4.86,799,2.119,826,1.947,2283,3.99,2442,5.562,2505,5.258,2787,4.449,2880,2.99,2884,3.321]],["t/981",[9,4.454,142,1.41,153,4.46,234,2.983,262,4.989,284,2.74,297,2.105,358,2.852,455,2.552,480,3.264,665,2.509,676,4.191,679,2.46,691,3.705,706,4.989,799,2.493,826,2.291,2489,4.609,2505,6.185,2787,5.233,2880,3.517,2884,2.915]],["t/983",[9,6.155,153,4.22,241,1.507,277,4.973,283,7.127,394,4.122,914,2.307,1635,2.159,2880,4.052]],["t/985",[9,5.835,61,4.393,153,4.548,166,3.508,217,5.491,241,1.381,305,2.094,511,3.276,543,2.073,709,4.25,914,1.762,932,4.956,1635,1.978,2988,8.009,2989,8.009]],["t/987",[9,3.624,78,3.363,142,1.148,143,1.079,153,4.304,157,3.047,213,1.694,234,2.427,239,2.902,284,2.718,290,2.538,297,2.328,305,1.614,317,1.676,323,2.625,326,3.893,345,2.354,376,2.354,388,3.118,455,2.229,605,2.703,679,2.44,680,6.134,685,5.943,751,4.824,754,4.651,799,2.028,983,3.819,1635,1.524,2283,3.819,2442,5.4,2489,5.096,2511,4.373,2884,2.372]],["t/989",[51,2.567,53,2.84,58,1.449,60,1.617,61,1.852,83,3.1,94,4.378,125,1.377,142,1.59,152,0.783,160,2.501,213,2.103,222,2.252,241,1.474,245,1.669,255,1.509,260,2.315,265,2.806,284,1.195,290,1.04,297,2.549,305,2.236,318,3.668,323,1.986,332,4.272,336,2.575,373,1.757,445,4.004,446,2.421,454,3.018,455,1.113,616,1.067,617,1.062,698,3.275,736,3.412,763,3.056,766,4.424,779,3.83,799,1.377,806,3.157,812,3.157,914,0.922,919,5.29,1181,3.593,1193,1.942,1267,3.056,1296,2.819,1586,2.501,1635,1.567,1784,4.004,1917,3.275,2145,3.134,2496,3.275,2801,3.157,2806,3.416,2807,3.593,2808,5.802,2809,3.83,2810,3.83,2880,3.553,2884,3.286,2902,2.592,2990,3.593,2991,3.83,2992,3.83,2993,5.444,2994,3.83,2995,4.189,2996,4.189]],["t/991",[53,2.94,152,0.979,166,2.801,213,2.178,241,1.703,454,2.801,478,5.113,584,3.679,617,2.011,643,5.622,679,2.032,696,3.643,919,4.91,1027,5.108,1418,5.789,1891,6.203,2997,7.254,2998,7.935,2999,7.935,3000,7.935]],["t/993",[1,1.728,134,3.75,157,3.955,241,1.381,305,2.094,317,2.174,415,5.052,454,3.814,613,4.782,618,3.713,639,3.54,643,4.557,914,1.762,979,4.49,1507,6.149,1635,2.454,1679,4.046,2490,3.829]],["t/995",[157,3.283,241,1.146,248,3.727,281,2.429,290,2.456,292,2.429,304,1.65,319,5.702,323,3.526,431,2.812,635,4.85,665,2.199,674,1.962,679,1.702,687,5.197,736,5.665,826,2.663,914,2.177,924,6.122,1012,4.71,1027,5.676,1138,3.673,1635,1.642,1997,4.373,2152,4.85,2483,4.85,2805,5.702,2880,3.082]],["t/997",[241,1.953,736,4.797,826,2.694,891,6.974,914,2.335,1635,2.203,2308,6.974,2884,3.429]],["t/999",[9,5.428,164,3.415,213,1.961,230,3.13,241,1.594,281,2.61,290,1.774,305,2.418,323,3.661,345,2.726,439,5.384,459,2.831,736,5.51,826,2.792,1635,1.764,2145,3.528,2308,5.585,2801,6.966,2880,3.312,3001,8.451,3002,7.145]],["t/1001",[53,2.981,58,1.572,60,1.718,61,2.008,83,3.294,94,4.653,125,1.493,135,2.476,142,1.655,147,1.474,152,0.56,171,1.201,213,2.208,239,2.334,241,1.387,245,1.773,265,3.556,284,1.296,297,2.863,305,2.328,318,3.897,323,2.11,332,4.539,336,2.737,445,4.255,446,2.573,454,3.143,455,1.207,606,3.551,607,3.551,608,5.5,616,1.157,624,1.696,736,3.626,766,4.163,799,1.493,914,1,919,5.509,1543,4.153,1635,1.666,1784,4.255,1917,3.551,2145,3.331,2489,4.098,2490,2.172,2497,3.551,2503,3.219,2884,3.422,2990,3.896,2991,4.153,2992,4.153,2993,5.785,3003,4.153,3004,4.543,3005,4.543]],["t/1003",[53,2.522,60,1.734,142,1.665,152,1.105,166,2.402,213,1.868,239,2.355,241,1.544,297,1.888,323,2.129,445,4.293,446,2.596,454,3.161,455,1.808,459,2.697,478,4.634,584,3.155,617,1.725,643,5.096,679,2.293,696,3.124,919,4.211,1027,4.381,1109,3.872,1418,4.965,1891,5.32,2499,5.32,2884,2.616,2997,6.222,3003,8.187,3006,6.806,3007,6.806,3008,6.806]],["t/1005",[1,1.728,134,3.75,157,3.955,241,1.381,305,2.094,317,2.174,415,5.052,454,3.814,613,4.782,618,3.713,639,3.54,643,4.557,914,1.762,979,4.49,1507,6.149,1635,2.454,1679,4.046,2490,3.829]],["t/1007",[4,1.041,35,5.178,53,1.537,55,2.521,58,1.435,93,1.607,121,1.548,143,0.725,148,1.238,152,1.049,153,1.67,179,1.905,225,3.222,241,1.086,248,2.326,252,2.326,281,1.516,284,1.183,290,2.271,297,1.151,351,3.086,358,3.439,364,2.617,414,3.26,443,1.851,480,3.278,509,2.951,611,2.729,618,1.923,639,1.834,674,1.224,676,2.292,692,3.558,696,1.905,697,2.862,698,3.243,791,2.939,799,2.071,801,1.943,804,1.943,927,4.956,939,2.477,962,7.15,1206,3.793,1296,2.792,1635,1.025,1665,2.862,1670,3.558,1753,3.243,1910,4.925,1961,3.974,1997,2.729,2469,2.729,2471,3.126,2472,2.939,2490,1.983,2514,2.792,2566,3.383,2569,3.243,2584,3.793,2813,3.793,2880,2.921,2884,1.595,2978,3.383,2979,3.383,2980,3.383,3009,3.558,3010,4.149,3011,4.149,3012,4.149,3013,3.793,3014,4.149]],["t/1009",[152,1.161,241,1.888,305,2.461,769,5.935,3015,9.41]],["t/1011",[157,3.283,241,1.146,248,3.727,281,2.429,290,2.456,292,2.429,304,1.65,319,5.702,323,3.526,431,2.812,635,4.85,665,2.199,674,1.962,679,1.702,687,5.197,736,5.665,826,2.663,914,2.177,924,6.122,1012,4.71,1027,5.676,1138,3.673,1635,1.642,1997,4.373,2152,4.85,2414,5.702,2805,5.702,2880,3.082]],["t/1013",[241,1.538,736,4.797,826,2.694,891,6.974,914,2.335,927,4.527,1635,2.203,2308,6.974,2884,3.429]],["t/1015",[164,4.015,213,2.305,241,1.448,281,3.069,303,3.204,305,2.197,323,2.628,736,5.502,826,3.09,927,3.583,931,9.355,2308,6.566,2884,3.228,3001,7.679]],["t/1017",[142,1.892,152,1.355,166,3.591,188,2.804,241,1.754,258,3.15,455,2.21,511,3.403,543,2.153,709,4.414,914,1.831,1635,2.054,3016,8.319]],["t/1019",[142,2.137,147,3.449,152,0.952,241,1.675,258,4.025,305,2.019,394,3.036,455,2.581,914,1.699,927,4.144,1586,5.799,2880,3.58,2884,2.968,3017,7.722]],["t/1021",[35,4.917,142,2.076,148,3.035,152,0.867,239,3.164,241,1.577,258,3.85,305,1.838,394,2.763,455,2.43,547,4.979,914,1.547,927,4.594,950,5.731,962,7.149,1586,5.461,1635,2.259,2880,3.258,2884,2.701]],["t/1023",[153,4.194,166,3.678,241,1.492,305,2.263,511,3.54,543,2.239,709,4.591,914,1.904,927,4.445,1635,2.137,3018,8.653]],["t/1025",[166,3.678,241,1.492,305,2.263,337,2.362,511,3.54,543,2.239,709,4.591,914,1.904,927,4.445,1635,2.137,3019,8.653]],["t/1027",[188,3.389,239,2.824,297,2.264,361,3.783,423,4.386,455,3.022,511,3.338,584,3.783,799,2.682,1193,3.783,1890,5.629,2884,3.137,2902,5.05,2933,6.379]],["t/1029",[79,3.546,188,2.722,222,3.138,239,2.019,290,2.004,297,1.619,358,2.194,361,4.631,394,2.295,423,4.22,424,3.82,427,4.398,455,1.551,511,4.289,584,2.706,770,4.258,799,1.918,1016,3.928,1193,2.706,1298,5.569,1665,4.026,1698,3.839,1830,3.682,1961,3.682,1974,5.006,1978,4.759,2125,4.258,2145,2.882,2186,5.006,2216,4.562,2469,3.839,2472,4.135,2490,2.79,2685,6.924,2690,5.336,2691,7.381,2692,5.336,2880,4.291,2884,3.103,2902,3.611,2933,4.562,2937,5.006]],["t/1031",[61,3.864,297,2.425,423,4.52,424,4.135,443,3.9,455,2.785,511,3.576,867,5.132,2884,3.36,3020,8.741]],["t/1033",[52,2.731,58,2.215,117,3.699,188,2.158,224,2.779,227,2.09,241,1.103,249,5.003,260,3.537,281,2.339,290,2.41,305,2.249,313,2.91,376,2.442,443,4.331,511,4.246,543,2.686,546,5.003,620,3.588,697,4.415,799,2.103,826,1.933,867,3.758,914,2.136,943,4.037,1093,3.758,1138,3.537,1140,5.003,1284,5.219,1635,1.581,2145,3.161,2934,7.011,3021,6.401,3022,6.401,3023,5.852]],["t/1035",[50,3.535,227,2.258,241,1.56,258,2.619,260,5.001,290,2.246,309,3.415,376,3.453,423,4.308,424,4.281,511,2.829,543,1.789,618,3.206,639,3.057,914,2.22,915,5.952,924,5.6,1140,5.405,1353,5.149,1635,1.708,1738,6.322,2145,4.469,2490,3.306,2944,6.322,3024,6.915]],["t/1037",[50,4.379,241,1.477,263,4.546,443,4.62,511,4.236,543,2.217,618,3.972,639,3.787,914,1.885,1093,5.03,1635,2.116,1679,4.328,2490,4.095]],["t/1039",[241,1.587,313,4.187,443,4.108,511,3.767,543,2.383,914,2.026,1635,2.67]],["t/1041",[117,4.345,210,6.874,241,1.296,258,2.847,313,4.343,345,2.869,423,3.845,443,3.355,511,4.664,543,2.717,570,4.345,914,2.102,1635,1.857,2848,6.874,2868,6.874,2880,3.486,3025,10.498,3026,7.519]],["t/1043",[49,0.999,142,1.978,147,2.907,148,2.673,153,4.281,281,2.487,284,2.555,290,1.689,305,1.78,337,2.03,355,3.663,473,4.293,543,2.752,706,4.476,710,6.345,1024,4.58,1074,3.932,2724,6.222,2725,6.222,2727,6.222,2728,6.222,2929,6.222,3027,6.806,3028,6.806,3029,8.956]],["t/1045",[4,1.617,152,1.449,188,2.174,225,3.655,230,3.785,241,1.49,265,3.82,297,1.789,305,2.26,317,1.751,358,3.249,361,4.006,376,2.46,394,2.536,421,2.904,628,3.149,657,4.068,665,2.858,709,4.585,791,4.569,799,2.119,804,3.02,927,2.751,2323,4.449,2880,2.99,2884,3.321,3009,7.411,3030,5.895,3031,6.449]],["t/1047",[1,1.813,134,3.933,157,4.148,241,1.448,305,2.197,415,5.298,454,3.896,618,3.894,639,3.713,914,1.848,1507,6.332,1635,2.074,1679,4.243,2490,4.015]],["t/1049",[4,1.362,93,2.103,142,1.428,147,1.763,148,1.621,152,1.259,212,2.653,225,2.297,252,3.045,281,1.984,290,2.631,297,1.507,305,2.008,347,2.259,351,2.786,364,3.426,455,1.443,612,3.496,617,1.376,628,2.653,665,1.796,674,1.603,676,3.001,691,2.653,696,2.494,791,3.848,799,1.785,804,2.544,811,4.093,816,3.138,927,4.522,944,4.658,1296,3.655,1586,3.243,1608,4.246,1635,1.341,1665,3.747,1910,4.246,1961,4.843,2469,3.572,2471,4.093,2472,3.848,2880,3.56,2884,2.088,2978,4.429,2979,4.429,2980,4.429,3009,4.658,3030,7.019,3032,7.678,3033,5.432,3034,5.432]],["t/1051",[1,1.813,134,3.933,157,4.148,241,1.448,305,2.197,415,5.298,454,3.896,618,3.894,639,3.713,914,1.848,1507,6.332,1635,2.074,1679,4.243,2490,4.015]],["t/1053",[53,2.58,60,1.774,94,4.803,142,2.098,147,3.143,148,2.89,149,3.401,153,2.803,239,1.641,245,1.247,258,2.637,284,2.354,290,2.404,297,3.089,304,1.729,305,1.821,318,4.024,332,4.686,336,2.825,446,2.657,454,3.209,455,1.85,696,2.177,706,3.12,736,3.744,799,1.559,927,2.97,1058,4.392,1635,2.245,1784,4.392,2145,3.439,2489,2.882,2502,3.574,2503,3.361,2884,1.823,2993,5.972,3035,4.743,3036,4.743]],["t/1055",[1,1.813,134,3.933,157,4.148,241,1.448,305,2.197,415,5.298,454,3.896,618,3.894,639,3.713,914,1.848,1507,6.332,1635,2.074,1679,4.243,2490,4.015]],["t/1057",[142,1.848,153,4.35,166,3.508,241,1.381,284,2.835,305,2.094,511,3.276,543,2.073,706,5.268,709,4.25,710,7.041,914,1.762,927,3.416,1635,1.978,3037,8.009,3038,7.321]],["t/1059",[142,1.88,153,4.071,166,3.57,241,1.42,305,2.155,355,4.137,511,3.37,543,2.132,709,4.372,710,7.165,914,1.813,927,3.515,1635,2.035,3038,7.532]],["t/1061",[142,1.577,166,3.634,241,1.462,284,2.937,305,2.218,337,2.333,511,3.47,543,2.195,709,4.501,914,1.867,927,3.618,1635,2.095,3039,7.754]],["t/1063",[142,1.577,166,3.634,241,1.462,305,2.218,337,2.333,355,4.211,511,3.47,543,2.195,709,4.501,914,1.867,927,3.618,1635,2.095,3039,7.754]],["t/1065",[78,3.159,153,4.356,157,2.863,213,1.591,239,2.78,281,2.118,284,2.984,290,2.596,297,2.23,305,1.516,317,1.574,323,2.514,326,3.657,345,2.212,376,2.212,388,2.929,421,2.611,455,2.135,490,2.863,605,2.539,679,2.362,680,6.411,685,5.694,710,4.107,747,4.972,754,4.369,799,2.641,826,1.751,1635,1.432,1830,3.657,2283,3.587,2442,5.173,2489,4.882,2511,4.107,2787,3.999,2884,3.089]],["t/1067",[78,3.514,213,1.77,281,2.356,284,3.187,290,2.695,297,2.398,305,1.687,323,2.704,337,2.36,345,2.46,388,3.258,421,2.904,455,2.296,490,3.184,605,2.825,680,6.701,742,4.151,747,5.531,754,4.86,799,2.84,826,1.947,1635,1.593,1830,4.068,2283,3.99,2442,5.562,2787,4.449,2884,3.321]],["t/1069",[3,4.505,47,6.474,3013,8.794,3040,9.62]],["t/1071",[1,2.318,113,7.122,295,6.866,397,4.603,1837,8.329,3041,9.822,3042,9.111]],["t/1074",[1,1.651,49,1.418,53,2.836,169,4.354,180,2.147,242,3.658,254,3.352,366,1.43,373,4.438,384,5.125,439,5.767,441,6.563,478,3.96,481,3.182,617,1.939,1269,6.996,2856,6.844,2857,8.284,2858,6.996,3043,7.653,3044,7.653]],["t/1076",[1,1.953,3,3.238,49,1.015,53,2.562,59,2.346,143,1.209,157,4.469,213,1.898,242,3.306,244,4.42,254,3.964,265,3.057,303,2.638,359,5.678,373,3.795,384,3.669,478,3.578,616,1.762,617,1.752,679,1.771,816,3.996,905,2.088,1920,6.412,1921,4.899,1922,4.899,2396,4.899,3045,6.915,3046,6.915,3047,6.915,3048,6.915]],["t/1078",[3,3.043,49,1.275,53,2.408,65,2.954,96,4.02,152,1.071,169,3.697,178,4.274,239,3.765,255,2.341,260,5.77,284,1.853,304,1.613,317,2.358,345,2.479,353,4.373,370,4.098,443,2.899,473,4.098,478,3.362,611,4.274,617,2.201,643,3.697,736,3.493,801,3.043,924,6.053,939,3.879,1134,5.572,1138,3.59,1784,4.098,2442,4.182,3049,6.498,3050,6.498,3051,6.498]],["t/1080",[4,2.285,189,6.132,254,3.991,478,4.714,1013,5.535,1119,6.647,3041,8.329,3052,9.111,3053,9.111]],["t/1083",[4,2.17,152,1.285,280,3.301,361,4.012,366,1.617,455,2.299,665,2.862,1193,4.831,3054,5.391,3055,7.91,3056,8.653]],["t/1085",[4,2.149,152,1.373,280,3.268,361,3.972,366,1.601,455,2.276,1193,4.801,1586,5.115,3054,5.359,3057,8.567,3058,8.567]],["t/1087",[48,5.142,59,2.529,93,2.887,152,1.402,213,2.046,366,1.393,455,1.981,533,2.931,679,1.909,804,4.448,1193,5.104,1735,4.529,2495,6.814,2524,4.45,3054,5.697,3059,7.454,3060,7.454,3061,7.454,3062,7.454]],["t/1089",[1,1.096,2,2.428,39,2.731,59,1.723,60,1.294,142,1.595,147,2.785,149,2.48,152,0.903,188,1.712,239,2.532,241,0.876,255,2.637,281,2.674,284,1.449,290,2.47,297,2.761,304,1.261,305,1.914,320,2.628,323,2.29,336,3.481,337,2.128,373,2.13,446,1.938,454,3.029,455,1.35,477,2.378,478,4.439,584,2.355,617,1.287,643,4.882,696,3.939,784,3.935,914,1.118,915,4.814,924,5.309,963,3.988,1175,3.504,1635,1.807,1852,3.269,1993,4.141,2145,2.508,2503,3.599,2884,1.952,3063,5.721]],["t/1091",[1,1.096,2,2.428,39,2.731,59,1.723,60,1.294,142,1.595,148,2.561,149,2.48,152,0.903,188,1.712,239,2.532,241,0.876,255,2.637,281,2.674,284,1.449,290,2.47,297,2.761,304,1.261,305,1.914,320,2.628,323,2.29,336,3.481,337,2.128,373,2.13,446,1.938,454,3.029,455,1.35,477,2.378,478,4.439,584,2.355,617,1.287,643,4.882,696,3.939,784,3.935,914,1.118,915,4.814,924,5.309,963,3.988,1175,3.504,1635,1.807,1852,3.269,1993,4.141,2145,2.508,2502,3.828,2884,1.952,3063,5.721]],["t/1093",[1,1.096,2,2.428,39,2.731,59,1.723,60,1.294,142,1.595,152,0.903,188,1.712,239,2.532,241,0.876,255,2.637,281,2.674,284,1.449,290,2.47,297,2.761,304,1.261,305,1.914,320,2.628,323,2.684,336,3.481,337,2.128,373,2.13,446,1.938,454,3.029,455,1.35,477,2.378,478,4.439,584,2.355,617,1.287,643,4.882,696,3.939,766,4.439,784,3.935,914,1.118,915,4.814,924,5.309,963,3.988,1175,3.504,1635,1.807,1852,3.269,1993,4.141,2145,2.508,2497,3.97,2884,1.952,3063,5.721]],["t/1095",[1,1.234,2,2.734,59,1.941,60,1.457,143,1,152,0.982,239,1.979,241,0.986,255,2.869,281,2.909,284,1.632,290,2.458,297,2.541,304,1.42,305,2.082,323,1.79,336,3.716,337,2.076,373,2.399,446,2.182,454,2.81,477,2.679,478,4.738,584,2.652,617,1.45,643,5.211,696,3.655,766,4.738,914,1.259,915,5.237,924,5.666,963,4.339,1175,3.946,1635,1.966,1852,3.682,2145,2.825,2496,4.471,3063,6.223]],["t/1097",[1,1.234,2,2.734,59,1.941,60,1.457,152,1.129,239,1.979,241,0.986,255,2.869,281,2.909,284,1.632,290,2.458,297,2.541,304,1.42,305,2.082,323,1.79,336,3.716,337,2.076,373,2.399,446,2.182,454,2.81,477,2.679,478,4.738,584,2.652,617,1.45,643,5.211,696,3.655,763,4.173,766,4.738,914,1.259,915,5.237,924,5.666,963,4.339,1175,3.946,1635,1.966,1852,3.682,2145,2.825,3063,6.223]],["t/1100",[4,1.58,9,2.436,28,3.042,45,2.239,49,1.343,50,3.221,83,3.077,125,1.363,134,1.943,143,1.102,152,0.777,160,2.477,180,2.137,182,1.494,213,1.139,215,3.433,234,2.995,241,0.715,251,1.145,292,2.302,296,2.689,305,2.225,317,2.484,320,3.26,345,1.583,376,1.583,414,2.147,420,4.209,421,1.868,423,1.67,424,1.963,426,3.228,428,3.585,459,1.644,478,3.26,584,1.923,624,3.942,643,3.585,672,2.617,823,2.477,905,1.903,927,1.77,939,2.477,976,3.243,984,1.905,1054,3.387,1155,3.243,1162,3.793,1172,4.241,1203,2.521,1204,5.462,2323,2.862,2882,3.558,2884,2.422,2889,3.793,2890,3.793,2891,3.793,3054,3.942,3064,4.149,3065,3.793,3066,3.558]],["t/1102",[49,1.52,152,1.057,205,3.686,241,1.477,297,2.377,305,2.708,605,3.753,914,2.279,1635,2.116,3067,6.456,3068,9.468]],["t/1104",[49,1.323,241,1.554,305,2.358,421,4.809,914,2.35,1635,2.226,3067,6.794,3069,8.242]],["t/1106",[49,1.296,241,1.522,305,2.309,423,4.245,424,4.99,914,2.321,1635,2.181,3067,6.655,3070,6.655]],["t/1108",[4,2.241,49,0.802,56,2.416,58,1.891,67,3.321,152,1.375,180,2.164,224,2.373,227,2.519,241,0.942,255,2.779,297,1.517,305,2.337,351,1.983,366,1.441,394,3.032,396,3.988,421,2.462,434,3.988,518,3.942,543,1.414,657,3.448,665,3.21,914,1.203,977,3.064,1090,3.942,1122,4.119,1156,3.321,1193,2.534,1635,1.35,1679,2.761,2391,4.457,2880,3.575,2884,2.101,2961,4.273,3054,5.022,3071,6.028,3072,5.466,3073,4.997,3074,3.988,3075,4.688,3076,4.997,3077,4.997,3078,4.997,3079,6.028]],["t/1110",[4,1.917,49,1.122,58,1.867,70,2.696,142,1.421,152,1.305,180,1.514,212,3.733,227,1.763,241,0.93,255,1.945,258,2.044,297,1.498,305,2.321,313,2.454,358,2.029,366,1.008,394,2.122,397,2.727,420,4.224,455,1.434,518,2.759,543,1.397,620,4.285,657,3.405,800,3.723,805,3.279,896,3.55,914,1.188,927,4.117,984,2.478,1090,3.907,1138,2.982,1635,1.888,1854,3.474,2374,3.723,2490,2.58,2880,2.502,2904,3.405,3054,5.473,3070,4.068,3074,5.576,3079,4.219,3080,5.398,3081,4.934,3082,4.629,3083,4.934,3084,4.934,3085,4.934,3086,4.934]],["t/1112",[4,1.943,49,1.137,58,1.903,70,2.747,142,1.44,152,1.349,180,1.543,212,3.783,227,1.796,241,0.948,255,1.982,258,2.083,297,1.526,305,2.345,313,2.501,358,2.068,366,1.028,394,2.163,397,2.779,420,4.281,455,1.462,518,2.812,543,1.424,620,4.343,657,3.47,805,3.342,896,3.618,914,1.211,927,3.305,984,2.525,1090,2.812,1138,3.04,1635,1.913,1854,3.541,2374,3.795,2490,2.63,2880,2.55,2904,3.47,3054,5.507,3070,4.145,3074,5.652,3079,4.3,3081,5.029,3082,4.718,3083,5.029,3084,5.029,3085,5.029,3086,5.029,3087,5.029]],["t/1114",[152,1.173,180,2.669,297,2.64,696,4.368,3054,4.923]],["t/1116",[1,1.007,3,2.185,4,2.05,18,3.647,28,1.863,49,1.01,53,1.729,56,2.063,58,1.614,67,2.835,152,1.403,180,1.309,205,2.961,213,1.888,224,2.026,227,2.669,234,1.835,241,1.409,251,1.899,255,2.479,303,1.78,305,2.137,309,2.304,317,1.267,320,2.414,351,2.496,366,0.872,384,2.476,394,1.835,414,2.414,421,2.101,434,3.404,435,2.254,436,2.121,518,3.517,611,3.069,616,1.189,657,2.943,665,2.983,977,2.616,1090,3.517,1122,3.516,1156,2.835,1176,4.002,1193,3.19,1635,2.018,1679,2.357,2391,3.805,2806,3.805,2880,2.163,2884,1.793,2961,3.647,3054,4.667,3068,4.266,3071,3.647,3073,4.266,3074,5.019,3075,4.002,3076,4.266,3077,4.266,3078,4.266,3088,4.666]],["t/1118",[4,2.839,58,3.083,59,3.023,152,1.396,180,2.975,227,2.205,351,2.45,360,3.372,394,3.921,396,7.274,543,2.58,914,1.486,995,3.298,1157,5.278,1635,1.668,2880,3.131,3054,5.486,3071,5.278]],["t/1120",[4,1.919,58,2.648,94,5.279,152,1.305,180,2.969,230,3.352,241,1.319,347,3.182,351,2.777,477,3.584,543,1.98,807,5.033,914,1.684,1081,4.65,1635,2.385,2524,6.319,3054,4.998,3089,6.563,3090,6.996]],["t/1122",[4,2.192,58,3.024,152,1.078,241,1.507,543,2.262,914,1.923,1635,2.589,3054,5.424,3089,7.496,3090,7.991,3091,8.741]],["t/1124",[4,2.009,58,2.771,117,4.628,152,1.333,180,2.247,230,3.508,241,1.381,351,3.606,477,3.75,543,2.073,615,5.39,801,3.75,914,1.762,1635,2.454,2524,5.933,3054,5.142]],["t/1126",[4,1.838,53,2.715,58,2.535,152,1.279,180,2.056,230,3.21,241,1.263,347,4.549,355,3.843,373,3.073,384,3.888,477,3.431,543,1.896,612,6.048,638,5.522,639,3.239,914,1.612,981,5.727,1081,4.452,1635,1.809,1679,3.702,2490,3.503,2524,4.375,3054,4.862]],["t/1128",[79,4.958,96,6.221,152,1.006,180,2.821,241,1.407,345,3.113,477,3.822,543,2.112,618,3.783,639,3.607,914,1.796,1172,3.783,1635,2.015,1679,4.123,2490,3.901,3054,5.202,3089,6.999]],["t/1130",[152,1.27,180,2.888,241,1.462,351,3.077,394,4.048,543,2.195,914,1.867,1056,7.51,1172,3.933,1635,2.095,2880,3.933,3054,4.389]],["t/1132",[5,4.362,35,3.718,152,1.116,169,3.934,180,1.94,241,1.192,313,4.115,347,2.876,351,3.66,358,3.402,477,4.238,543,1.789,609,4.77,618,3.206,620,3.876,639,3.057,801,4.238,804,3.238,805,4.201,816,3.996,914,1.522,1306,5.931,1635,1.708,1679,3.493,2489,4.201,2490,3.306,2524,4.129,3054,5.537,3092,6.915]],["t/1134",[152,1.148,239,3.22,297,2.583,329,6.791,420,5.143,423,3.747,3054,4.816]],["t/1136",[4,1.732,49,1.53,51,2.314,55,2.85,58,2.39,152,1.319,213,1.288,241,1.191,258,1.777,281,2.995,303,1.79,305,2.637,313,3.727,317,1.274,335,2.291,351,1.702,380,2.133,394,1.845,420,4.997,421,4.073,424,2.219,434,3.423,459,1.859,620,2.63,665,2.284,683,2.019,770,3.423,805,2.85,826,1.417,927,2.001,963,2.556,1090,2.398,1170,4.024,1193,2.175,1353,2.669,1608,3.667,1679,2.37,1797,3.667,1852,3.02,2350,3.535,2524,4.124,2880,2.175,2884,1.803,2902,2.903,2904,2.959,3054,4.679,3069,4.289,3070,3.535,3079,7.069,3082,5.924,3087,4.289,3093,8.198,3094,4.692,3095,4.692,3096,4.692]],["t/1138",[4,2.149,241,1.785,303,3.951,335,4.184,420,4.734,421,3.858,455,2.276,543,2.68,914,1.885,1635,2.116,3097,8.567,3098,8.567]],["t/1140",[241,1.554,257,6.388,347,3.749,420,4.982,543,2.333,914,1.984,1090,4.609,1635,2.637,3099,9.016]],["t/1142",[4,2.127,55,5.154,152,1.27,241,1.462,258,3.212,420,5.688,421,3.82,543,2.195,615,5.709,914,1.867,1635,2.542,2524,6.146]],["t/1144",[6,3.508,79,4.866,96,4.956,180,2.788,222,4.306,241,1.381,258,3.033,420,5.971,477,3.75,543,2.073,639,3.54,914,2.187,927,3.416,1090,4.094,1172,3.713,1635,1.978,2490,3.829,2524,4.782]],["t/1146",[4,1.763,5,4.433,35,3.778,146,3.778,152,0.867,241,1.212,313,4.158,351,2.55,358,3.438,420,5.618,477,4.283,543,1.819,609,4.848,618,3.258,620,3.94,639,4.494,801,3.291,805,4.27,816,4.061,914,2.237,1090,3.593,1306,6.027,1679,3.551,2489,4.27,2490,3.36,2524,4.196,3054,3.636,3100,7.028]],["t/1148",[5,4.622,59,2.486,146,3.939,152,1.349,213,2.011,241,1.263,290,1.819,345,2.795,358,2.755,394,3.694,396,7.567,420,5.192,443,3.269,543,1.896,616,1.867,674,2.162,683,3.153,914,1.612,1079,4.716,1635,2.32,2880,3.397,3054,3.791,3071,5.727,3101,7.327]],["t/1150",[4,1.972,77,4.227,152,1.322,166,2.775,180,2.206,188,2.65,233,4.345,660,5.925,665,2.6,683,3.383,977,4.407,1275,4.777,1586,4.694,2880,3.645,2884,3.022,3054,5.545,3055,7.188,3071,6.146,3102,7.863,3103,7.863]],["t/1152",[49,1.066,152,1.274,222,3.906,239,2.514,241,1.611,258,2.751,297,2.016,305,2.444,329,5.3,420,5.163,423,4.158,424,4.421,434,5.3,462,5.012,628,3.548,657,4.583,665,2.403,979,4.073,1742,5.924,2884,2.792,3054,4.835,3066,6.231,3067,5.475,3070,5.475]],["t/1154",[152,1.293,166,3.085,241,1.507,258,3.31,305,2.286,543,2.262,914,1.923,927,4.472,1635,2.159,2514,5.883,3104,8.741]],["t/1157",[6,1.758,15,4.04,24,4.135,26,2.004,49,1.227,77,2.158,163,2.158,164,1.919,188,2.071,199,2.077,227,2.006,239,1.389,241,1.442,242,1.919,244,3,255,1.446,290,1.853,297,2.071,304,0.996,309,3.034,317,1.09,335,1.96,358,1.509,366,2.125,373,1.683,376,2.344,380,1.825,394,1.578,397,2.028,399,1.319,478,2.077,518,3.14,519,4.708,543,1.59,657,4.708,674,2.202,679,1.028,821,5.834,900,4.708,914,1.84,930,3.442,1090,3.815,1109,2.283,1221,2.928,1468,3.272,1635,1.843,1931,5.269,1980,3.669,2085,3.442,3075,3.442,3105,3.442,3106,3.669,3107,3.669,3108,6.401,3109,4.013,3110,7.464,3111,4.013,3112,4.013,3113,4.013,3114,4.013,3115,4.013,3116,4.013,3117,4.013,3118,4.013,3119,4.013,3120,4.013,3121,4.013,3122,4.013,3123,6.143,3124,4.013,3125,4.013]],["t/1159",[4,2.3,15,1.584,39,1.763,49,1.202,52,1.399,53,1.215,54,2.393,56,2.319,58,1.815,70,1.638,71,1.787,95,2.029,117,1.895,152,1.313,166,1.158,169,1.866,215,1.787,227,1.071,241,1.506,244,2.562,251,0.905,255,1.182,265,1.45,284,1.496,290,0.814,303,2.857,304,0.814,305,1.372,309,1.619,317,1.424,335,1.602,345,2.501,366,1.399,376,1.251,399,1.078,400,1.536,414,2.714,421,2.952,426,1.692,455,1.394,478,1.697,518,1.676,519,2.069,543,0.849,546,5.123,549,2.563,615,2.207,617,0.831,620,1.838,624,1.224,640,1.992,657,4.134,660,2.471,665,2.168,679,0.84,799,1.078,821,4.1,900,3.308,914,1.648,919,4.634,979,1.838,1022,2.069,1058,2.069,1090,1.676,1109,2.984,1156,3.187,1193,4.05,1213,2.324,1353,1.866,1562,2.998,1586,1.958,1635,2.023,1753,2.563,1943,2.262,1990,2.563,2350,2.471,2391,4.277,2524,1.958,2801,2.471,2806,2.674,2807,2.813,2856,2.324,2893,2.563,2939,5.992,2990,2.813,2994,2.998,3023,4.795,3054,2.714,3065,4.795,3067,2.471,3074,2.393,3079,4.1,3105,2.813,3107,2.998,3108,4.498,3126,3.279,3127,3.279,3128,3.279]],["t/1161",[54,5.045,70,3.453,152,1.116,227,2.258,241,1.192,244,4.42,255,2.492,284,1.973,305,1.808,309,3.415,335,3.377,345,2.638,347,2.876,351,3.283,366,1.691,472,4.129,515,5.931,518,3.535,519,4.362,543,1.789,617,1.752,801,3.238,811,5.211,914,1.522,1090,3.535,1109,5.149,1484,3.934,1559,4.899,1635,1.708,2856,4.899,2893,5.405,3105,5.931,3108,5.931,3129,6.915]],["t/1163",[1,1.053,49,1.043,54,3.558,70,2.436,152,1.136,170,2.436,180,1.994,222,4.508,227,2.321,241,1.225,255,1.757,258,2.691,280,1.861,284,2.027,305,2.193,309,2.409,335,2.382,366,1.328,420,4.633,421,2.197,423,3.375,424,3.362,434,5.185,462,3.365,518,2.493,519,3.077,543,1.262,615,3.283,617,1.236,618,2.261,639,2.156,657,3.077,801,2.284,914,1.073,927,4.361,979,2.734,1090,3.633,1106,3.018,1109,4.044,1635,1.755,1644,3.14,1742,3.977,2490,3.397,2524,5.006,2856,3.456,2893,3.813,2961,5.555,3054,3.677,3066,4.183,3067,3.676,3070,3.676,3074,5.185,3106,4.459,3130,4.878,3131,4.878,3132,4.878,3133,4.878]],["t/1165",[1,1.277,49,0.868,54,4.317,70,2.955,146,4.382,152,1.239,180,1.66,227,1.932,241,1.02,255,2.132,258,2.241,280,2.257,284,1.688,290,1.469,305,1.547,309,2.922,335,2.89,366,1.523,421,2.665,505,4.382,518,4.166,519,3.732,543,1.531,615,3.982,617,1.499,618,2.743,639,2.616,914,1.302,927,3.977,1090,3.025,1106,3.661,1109,4.637,1635,2.013,1644,3.809,1958,4.825,2490,3.896,2524,4.866,2856,4.192,2893,4.625,3054,4.217,3074,5.946,3134,5.917,3135,5.917,3136,5.917,3137,5.917]]],"invertedIndex":[["",{"_index":366,"t":{"30":{"position":[[1036,1]]},"34":{"position":[[150,1]]},"46":{"position":[[166,1],[198,1],[222,1],[252,1],[269,1],[286,1],[316,1],[339,1],[347,1],[391,1],[408,1],[416,1],[461,1],[478,1],[491,1],[508,1],[521,1],[560,1],[595,1],[621,1],[637,1],[661,1],[706,1],[739,1],[755,1],[796,1],[830,1],[883,1],[904,1],[939,1],[969,1],[1012,1],[1040,1],[1056,1],[1091,1],[1117,1],[1125,1]]},"50":{"position":[[141,1]]},"54":{"position":[[891,1],[914,1],[970,1],[1012,1],[1126,1],[1216,1],[1286,1],[1316,2],[1345,1],[1483,1],[1566,1],[1622,1],[1665,1],[1774,1],[1869,1],[1897,1],[2225,1]]},"56":{"position":[[171,1],[266,3]]},"58":{"position":[[628,1],[651,1],[799,1],[895,1],[929,2],[958,1],[1095,1],[1182,1],[1240,1],[1329,1],[1357,1],[1533,1],[1556,2],[1559,1],[1561,2],[1585,2],[1717,1],[1742,1],[1744,2],[1841,1],[1877,3],[1907,1],[1909,2],[2020,1],[2022,1],[2060,1],[2062,2],[2150,2],[2178,1],[2218,1],[2220,2],[2310,2],[2339,1],[2341,1],[2343,2]]},"60":{"position":[[252,1],[885,1],[1175,1]]},"64":{"position":[[202,1],[372,1]]},"66":{"position":[[107,1],[229,1],[827,1],[950,1],[1141,1],[1403,2]]},"68":{"position":[[440,1]]},"73":{"position":[[326,1],[328,5],[363,1],[434,1],[451,1],[513,1],[571,1],[626,1],[666,1],[707,1],[747,1],[825,1],[827,2],[830,5],[872,1],[874,2],[950,1],[967,2],[1036,1],[1093,1],[1095,2],[1156,1],[1201,1],[1247,1],[1295,1],[1320,1],[1322,2]]},"76":{"position":[[192,1],[261,1],[406,1],[511,1],[955,1]]},"78":{"position":[[336,1],[338,5],[375,1],[455,1],[477,1],[560,1],[630,1],[632,2],[635,5],[679,1],[681,2],[763,1],[781,2],[865,1],[898,1],[929,2],[984,2],[987,2]]},"80":{"position":[[456,1],[581,1],[969,1],[1055,1],[1087,1],[1165,1],[1167,1],[1169,5],[1213,1],[1268,1],[1270,1],[1272,1],[1408,1],[1410,6],[1417,2],[1420,1],[1526,1],[1528,6],[1535,2],[1538,1],[1540,1]]},"90":{"position":[[1033,1],[1051,1],[1073,1],[1100,1],[1125,1],[1139,1],[1163,1],[1184,1],[1211,1],[1235,1],[1260,1],[1292,1],[1325,1],[1347,1],[1374,1],[1470,1],[1606,6],[1648,3],[1876,1],[1956,1],[2034,1],[2120,1],[2192,1],[2194,1],[2196,1],[2379,1],[2421,1],[2462,1],[2531,1]]},"94":{"position":[[232,1]]},"108":{"position":[[595,1],[624,1],[649,1],[677,1],[682,2]]},"116":{"position":[[177,1]]},"136":{"position":[[662,1],[1091,2],[1127,1],[1169,2]]},"138":{"position":[[965,1],[1018,1],[1106,1],[1123,1],[1178,1],[1266,1],[2902,2],[2938,1],[2980,1],[3343,1],[3488,1]]},"142":{"position":[[106,1],[674,1],[692,1]]},"144":{"position":[[364,1],[526,1],[1015,1]]},"146":{"position":[[403,1],[446,1],[490,1],[531,1],[1059,1],[1857,1],[2682,1],[2684,1],[3449,1],[3555,1],[3572,1],[3684,1]]},"152":{"position":[[337,1],[772,1],[845,1]]},"156":{"position":[[759,1],[794,1],[796,4],[808,2],[819,3],[846,1],[848,2],[1110,1],[1220,1],[1327,1],[1361,2],[1423,1],[1447,1],[1523,2],[1844,1],[2131,1],[2293,1]]},"158":{"position":[[451,1],[453,2],[481,1],[542,1],[544,2],[576,1],[599,1],[621,1],[857,1],[862,1],[1331,1],[1376,1]]},"170":{"position":[[879,1],[976,1],[1146,1],[1162,1],[1296,1],[1371,1],[1435,1],[1495,1],[1544,1],[1686,1],[2081,1],[2127,1],[2165,1],[2207,1],[2254,1],[2376,1]]},"178":{"position":[[202,1],[346,1],[352,1],[374,1],[464,1],[489,1],[500,1],[537,2],[551,1],[570,2],[584,1],[624,1],[746,2]]},"180":{"position":[[139,1],[151,1],[247,1],[273,1],[303,1],[314,1],[570,1],[583,1],[840,1],[854,1],[1091,1],[1103,1],[1311,1],[1327,1],[1463,2],[2579,1],[2581,2],[2584,2],[2587,1],[2627,1],[2675,2],[2801,1],[2810,2],[2813,1],[2828,1],[2858,3],[2882,2],[2971,2],[2974,1],[3006,2],[3285,1],[3305,1],[3307,1],[3348,1],[3435,3],[3485,1],[3516,2],[3519,1],[3825,1],[3863,1],[3934,1],[3957,1],[3978,1],[4014,1],[4063,1],[4112,1],[4159,1],[4287,3],[4291,2],[4347,2],[4398,1],[4406,3],[4500,3],[4592,2],[4616,3],[4628,2],[4715,2],[4739,3],[4751,2],[4850,2],[4866,2],[4892,1],[4900,1],[4966,2],[4982,2],[5011,1],[5019,1],[5061,2],[5109,2],[5158,2],[5197,4]]},"182":{"position":[[173,1],[183,1],[223,1],[245,1],[284,1],[323,2],[326,1],[352,1],[455,3],[493,1],[545,1],[661,2],[664,1],[680,1],[763,2],[766,1],[900,2],[912,2],[915,1],[948,3],[1004,1],[1028,1],[1058,1],[1071,3],[1105,1],[1107,2],[1132,2],[1150,1],[1219,1],[1460,2],[1469,2],[1472,2],[1475,1],[1491,1],[1579,3],[1583,2]]},"184":{"position":[[335,2],[489,2],[605,3],[617,2],[664,1],[666,2]]},"190":{"position":[[425,1],[427,1],[696,1],[735,1],[829,1],[937,2],[1006,1],[1181,1],[1335,1],[1568,1]]},"192":{"position":[[181,1],[267,1],[314,1]]},"194":{"position":[[303,1],[436,1]]},"204":{"position":[[1175,1],[1177,1],[1909,1],[1911,1],[1938,1],[1951,2],[1960,1],[1973,3]]},"206":{"position":[[311,1],[365,1]]},"208":{"position":[[765,1],[843,1],[882,2],[944,1],[983,2],[1100,2],[1147,2],[1228,2],[1791,1],[1860,1],[1862,1],[1980,1],[1996,2],[2025,1],[2108,1]]},"210":{"position":[[257,1],[309,1],[373,1],[437,1]]},"212":{"position":[[641,1],[662,1],[1401,1],[1435,1]]},"214":{"position":[[299,1],[407,2],[426,1],[486,1],[1093,1],[1137,2],[1154,1],[1226,2],[1243,1],[1295,1]]},"216":{"position":[[758,1],[1039,2],[1074,1],[1177,1],[2081,1],[2083,1],[2230,1],[2232,1],[2259,1],[2272,2],[2281,1],[2294,3],[2409,1],[2463,1],[2782,1],[2860,1],[2899,2],[2961,1],[3000,2],[3117,2],[3164,2],[3245,2],[3404,1],[3473,1],[3475,1],[3593,1],[3609,2],[3638,1],[3721,1],[3972,1],[4024,1],[4088,1],[4152,1],[4442,1],[4463,1],[4579,1],[4613,1],[4740,1],[4848,2],[4867,1],[4927,1],[5005,1],[5049,2],[5066,1],[5138,2],[5155,1],[5207,1],[5418,1],[5699,2],[5734,1],[5837,1]]},"251":{"position":[[73,1]]},"257":{"position":[[87,1]]},"263":{"position":[[206,1],[426,1],[466,1],[468,2],[483,1],[505,1]]},"273":{"position":[[40,1]]},"302":{"position":[[143,1],[149,1],[504,1],[506,1],[522,1],[525,1],[589,1]]},"306":{"position":[[513,1],[626,1],[794,1],[841,1],[912,1],[1037,1],[1406,1],[1463,1],[1530,2],[1601,2],[2475,1],[2556,1],[3011,2],[4234,2],[5200,1],[5258,1],[5350,1],[5429,1]]},"308":{"position":[[432,6],[626,9],[693,1],[874,1],[921,9],[940,4],[945,1],[952,3],[965,3],[1013,1],[1537,2],[2041,1],[2167,1],[2193,2],[2239,1],[2254,2],[2257,3],[2304,1],[2358,3],[2371,2],[2397,2],[2970,1],[3071,1],[3074,3],[3084,1],[3199,1],[3272,1],[3360,1]]},"310":{"position":[[264,1],[523,1],[816,1],[842,1],[858,1],[890,1]]},"314":{"position":[[45,1]]},"340":{"position":[[0,3],[112,3]]},"342":{"position":[[0,1],[97,1],[121,1]]},"344":{"position":[[0,1],[37,1],[61,1]]},"346":{"position":[[112,1],[119,4],[124,1],[148,1],[222,1],[224,1],[261,1],[287,1],[289,2],[292,1],[335,1],[361,1],[363,1],[365,2],[420,1],[466,1],[490,1],[564,1],[566,1],[609,1],[635,1],[637,1],[639,2]]},"348":{"position":[[0,1],[126,1],[136,4],[188,1],[201,3],[252,1],[265,3],[269,1],[293,1],[367,1],[541,2]]},"350":{"position":[[32,1],[69,1],[93,1],[175,1],[177,1],[361,2],[364,1],[548,1],[550,2],[620,1],[682,1],[706,1],[788,1],[790,1],[974,1],[976,2],[1054,1],[1117,1],[1141,1],[1223,1],[1225,1],[1409,1],[1411,2]]},"352":{"position":[[0,1],[59,1],[83,1]]},"356":{"position":[[43,1]]},"409":{"position":[[161,3],[605,3],[708,1],[725,4],[807,3]]},"411":{"position":[[185,1]]},"415":{"position":[[99,1]]},"417":{"position":[[99,1],[197,5]]},"419":{"position":[[88,1],[181,5]]},"421":{"position":[[125,1],[815,2]]},"423":{"position":[[570,1]]},"449":{"position":[[40,1]]},"459":{"position":[[182,3]]},"478":{"position":[[60,2],[225,2]]},"480":{"position":[[149,2],[326,2]]},"512":{"position":[[543,2]]},"514":{"position":[[388,1],[400,2],[450,2],[456,2],[474,2],[524,2],[530,2],[676,2]]},"532":{"position":[[146,2]]},"534":{"position":[[502,1],[516,1],[536,1],[561,1],[589,1]]},"536":{"position":[[226,1],[250,1],[498,3]]},"538":{"position":[[273,1],[304,1],[309,2]]},"540":{"position":[[74,1],[107,1],[134,1],[169,1],[202,1],[224,1],[251,1]]},"542":{"position":[[84,1],[102,1],[138,1]]},"544":{"position":[[87,1],[105,1],[135,1],[162,1]]},"546":{"position":[[75,1],[89,1],[113,1],[134,1],[161,1],[191,1],[229,1],[257,1],[276,1],[314,1]]},"548":{"position":[[336,1],[352,1]]},"550":{"position":[[65,1],[79,1],[103,1]]},"552":{"position":[[44,1],[61,1],[84,1],[103,1]]},"554":{"position":[[55,1],[72,1],[95,1],[114,1]]},"556":{"position":[[105,1],[122,1],[146,1],[172,1],[205,1]]},"558":{"position":[[151,1],[172,1],[189,1],[211,1],[246,1]]},"560":{"position":[[189,1],[206,1],[232,1],[249,1],[284,1],[471,2]]},"562":{"position":[[86,1],[103,1],[126,1],[159,1],[190,1]]},"564":{"position":[[65,1],[82,1],[105,1],[133,1],[173,1]]},"566":{"position":[[56,1],[66,1],[84,1],[97,1],[110,1],[127,1],[138,1]]},"568":{"position":[[102,1],[122,1],[134,1],[149,1],[159,1],[173,1],[182,1],[871,1]]},"572":{"position":[[25,1],[87,2],[162,2],[225,2],[294,2],[347,3]]},"574":{"position":[[72,1],[91,1],[118,1],[142,1],[147,1],[164,1],[195,1]]},"576":{"position":[[68,1],[86,1]]},"578":{"position":[[80,2]]},"580":{"position":[[76,2]]},"582":{"position":[[73,1],[103,1]]},"584":{"position":[[69,1],[96,1]]},"586":{"position":[[64,1],[82,1],[103,1],[125,1],[145,1],[173,1],[212,1],[253,1]]},"588":{"position":[[72,1],[101,1],[121,1]]},"590":{"position":[[75,1],[93,1],[115,1],[135,1]]},"594":{"position":[[605,1],[684,2],[737,3]]},"596":{"position":[[638,1],[717,2],[770,3]]},"602":{"position":[[261,1],[288,1],[304,1],[335,1],[364,1],[383,1],[404,1],[424,1],[429,2]]},"604":{"position":[[183,1],[210,1],[226,1],[259,1],[278,1],[297,1],[318,1],[338,1],[343,2]]},"606":{"position":[[395,1],[415,1],[439,1],[461,1],[482,1],[512,1]]},"608":{"position":[[406,1],[429,1],[450,1],[473,1],[478,2]]},"612":{"position":[[22,1],[97,2],[150,3]]},"614":{"position":[[234,1],[261,1],[277,1],[306,1],[332,1],[353,1],[373,1],[378,2]]},"616":{"position":[[156,1],[183,1],[199,1],[230,1],[266,1],[285,1],[306,1],[326,1],[331,2]]},"618":{"position":[[213,1],[227,1],[249,1],[269,1],[310,1],[340,1]]},"620":{"position":[[180,2]]},"624":{"position":[[22,1],[110,2],[163,3]]},"626":{"position":[[77,1],[96,1],[116,1],[139,1],[161,1],[197,1],[224,1],[242,1],[275,1],[304,1],[333,1],[364,1],[400,1],[440,1],[478,1],[490,1],[517,1],[543,1],[548,2]]},"628":{"position":[[80,2]]},"632":{"position":[[21,1],[79,2],[132,3]]},"636":{"position":[[20,1],[90,2],[167,2],[228,2],[281,3]]},"638":{"position":[[89,1],[107,1],[137,1],[174,1],[193,1],[218,1],[240,1],[261,1],[284,1],[312,1],[335,1],[354,1]]},"640":{"position":[[77,1],[96,1],[132,1],[241,1]]},"642":{"position":[[88,1],[104,1],[114,1],[124,1],[138,1],[151,1],[156,1],[176,1],[193,1],[210,1]]},"644":{"position":[[68,1],[70,2],[135,1],[163,1]]},"646":{"position":[[64,1],[78,1],[88,1],[96,1],[108,1],[113,1],[129,1],[151,1],[174,1],[193,1],[613,2]]},"648":{"position":[[72,1],[92,1],[111,1]]},"650":{"position":[[68,1],[82,1],[92,1],[100,1],[112,1],[117,1],[133,1],[155,1],[544,2]]},"652":{"position":[[128,1],[144,1],[164,1],[192,1],[197,2]]},"654":{"position":[[65,1],[92,1],[115,1],[143,1],[169,1],[192,1]]},"658":{"position":[[151,1],[240,2],[306,2],[381,2],[465,2],[558,2],[660,2],[713,3]]},"660":{"position":[[85,1],[108,1]]},"662":{"position":[[81,2]]},"664":{"position":[[69,1],[87,1]]},"666":{"position":[[65,2]]},"668":{"position":[[75,1],[103,1],[128,1],[153,1]]},"670":{"position":[[71,1],[104,1],[134,1]]},"672":{"position":[[98,1],[115,1],[147,1],[152,1],[167,1],[186,1],[191,1],[203,1],[219,1],[234,1],[239,2]]},"674":{"position":[[70,1],[102,1]]},"676":{"position":[[88,1],[106,1],[142,1],[169,1],[196,1]]},"678":{"position":[[84,1],[126,1],[158,1]]},"680":{"position":[[86,1],[104,1],[130,1]]},"682":{"position":[[105,1],[124,1]]},"684":{"position":[[71,1],[89,1],[124,1]]},"686":{"position":[[77,1],[95,1],[122,1],[154,1],[173,1],[195,1],[218,1],[253,1]]},"690":{"position":[[104,1],[178,2],[262,2],[319,2],[387,2],[456,2],[509,3]]},"692":{"position":[[67,1],[85,1],[112,1],[132,1],[158,1],[182,1]]},"694":{"position":[[84,1],[101,1],[122,1],[142,1],[165,1],[187,1],[238,1],[267,1]]},"696":{"position":[[513,1],[528,1],[561,1],[589,1],[616,1],[676,1],[732,1],[794,1],[852,1]]},"698":{"position":[[143,1],[158,1],[178,1],[196,1],[218,1],[249,1]]},"700":{"position":[[145,1],[160,1],[180,1],[200,1]]},"702":{"position":[[123,1],[159,1],[202,1],[240,1],[278,1],[326,1],[370,1],[419,1],[464,1]]},"704":{"position":[[77,1],[105,1],[125,1],[150,1],[175,1]]},"706":{"position":[[73,1],[112,1],[142,1]]},"708":{"position":[[79,1],[107,1],[140,1],[175,1],[218,1],[278,1]]},"710":{"position":[[92,1],[125,1]]},"712":{"position":[[65,1],[82,1],[112,1]]},"714":{"position":[[61,2]]},"716":{"position":[[85,1],[118,1]]},"718":{"position":[[64,2]]},"720":{"position":[[73,1],[101,1]]},"722":{"position":[[69,2]]},"724":{"position":[[115,1],[142,1],[172,1],[215,1]]},"736":{"position":[[224,1],[238,1],[268,1]]},"762":{"position":[[97,1]]},"779":{"position":[[518,3]]},"811":{"position":[[4870,3],[4940,3],[5049,1],[5051,2],[5058,3]]},"825":{"position":[[210,1],[360,1],[370,4]]},"845":{"position":[[306,1]]},"847":{"position":[[482,1]]},"849":{"position":[[597,1]]},"851":{"position":[[344,1]]},"857":{"position":[[571,2],[650,1]]},"889":{"position":[[460,1]]},"897":{"position":[[362,1]]},"907":{"position":[[97,1]]},"917":{"position":[[267,1],[468,3],[715,1]]},"925":{"position":[[359,3]]},"931":{"position":[[511,3]]},"941":{"position":[[558,3]]},"1074":{"position":[[51,2]]},"1083":{"position":[[133,1]]},"1085":{"position":[[168,1]]},"1087":{"position":[[336,1]]},"1108":{"position":[[168,2],[560,1]]},"1110":{"position":[[358,1]]},"1112":{"position":[[329,1]]},"1116":{"position":[[568,1]]},"1157":{"position":[[461,1],[489,1],[491,3],[549,1],[911,1],[939,1],[941,3],[1000,1],[1022,1],[1298,1],[1326,1],[1328,3],[1391,1],[1413,1],[1465,1]]},"1159":{"position":[[235,1],[275,1],[303,1],[305,3]]},"1161":{"position":[[220,1],[222,3]]},"1163":{"position":[[364,1],[366,3]]},"1165":{"position":[[368,1],[370,3]]}}}],["0",{"_index":683,"t":{"71":{"position":[[372,1],[475,1]]},"156":{"position":[[1222,1]]},"158":{"position":[[859,2]]},"178":{"position":[[212,2]]},"180":{"position":[[1334,2],[3393,2],[3414,2],[3432,2]]},"188":{"position":[[374,1]]},"204":{"position":[[1929,2],[1949,1],[1971,1]]},"214":{"position":[[410,2]]},"216":{"position":[[2250,2],[2270,1],[2292,1],[4851,2]]},"284":{"position":[[526,2]]},"296":{"position":[[997,3],[1199,1],[1298,1],[1348,3],[1378,1],[1467,1]]},"298":{"position":[[367,3]]},"310":{"position":[[636,1],[662,1]]},"318":{"position":[[66,2]]},"360":{"position":[[152,2]]},"362":{"position":[[182,2]]},"364":{"position":[[303,2]]},"372":{"position":[[3,2]]},"380":{"position":[[322,2]]},"427":{"position":[[375,2]]},"457":{"position":[[65,2]]},"530":{"position":[[427,2]]},"548":{"position":[[215,2]]},"560":{"position":[[474,2]]},"566":{"position":[[68,2],[220,1]]},"568":{"position":[[124,2],[274,1]]},"638":{"position":[[109,2],[446,1]]},"642":{"position":[[116,2],[346,1]]},"646":{"position":[[90,2],[302,1]]},"650":{"position":[[94,2],[264,1]]},"668":{"position":[[347,2]]},"676":{"position":[[522,2]]},"702":{"position":[[161,2]]},"704":{"position":[[443,2]]},"801":{"position":[[541,1],[751,2]]},"811":{"position":[[5023,1]]},"829":{"position":[[183,1]]},"835":{"position":[[431,4]]},"875":{"position":[[382,2]]},"917":{"position":[[269,2]]},"961":{"position":[[107,2]]},"1136":{"position":[[1134,2]]},"1148":{"position":[[124,5]]},"1150":{"position":[[157,4]]}}}],["0.0",{"_index":2811,"t":{"801":{"position":[[3333,3],[3679,3]]}}}],["00:00:00",{"_index":2978,"t":{"973":{"position":[[194,8]]},"977":{"position":[[361,8]]},"1007":{"position":[[1025,8]]},"1049":{"position":[[615,8]]}}}],["00:00:00utc",{"_index":2470,"t":{"530":{"position":[[583,11]]},"724":{"position":[[375,11]]}}}],["06",{"_index":2018,"t":{"306":{"position":[[771,2],[818,2],[889,2],[936,2],[1014,2],[1100,2],[1148,2],[1232,2],[1305,2],[1383,2],[1440,2]]}}}],["08",{"_index":2322,"t":{"421":{"position":[[802,2],[805,2]]}}}],["1",{"_index":674,"t":{"71":{"position":[[174,2],[200,2],[378,1],[515,2]]},"90":{"position":[[1053,2],[1141,2],[1294,2]]},"108":{"position":[[651,2]]},"156":{"position":[[1425,2],[2730,1]]},"158":{"position":[[483,4],[578,4],[623,2],[1277,1]]},"180":{"position":[[1357,2],[3959,2]]},"188":{"position":[[245,2],[305,3],[380,1],[529,2],[718,2],[850,2]]},"208":{"position":[[1150,1],[1231,1]]},"212":{"position":[[664,3]]},"216":{"position":[[3167,1],[3248,1],[4465,3]]},"224":{"position":[[242,1],[279,1]]},"239":{"position":[[0,2],[125,1]]},"346":{"position":[[661,4]]},"350":{"position":[[219,2],[832,2],[1267,2]]},"352":{"position":[[251,1]]},"372":{"position":[[170,2],[464,2]]},"530":{"position":[[463,2],[603,2]]},"534":{"position":[[518,2],[591,3]]},"536":{"position":[[252,3]]},"538":{"position":[[306,2]]},"540":{"position":[[109,2]]},"542":{"position":[[104,2]]},"544":{"position":[[107,2]]},"546":{"position":[[91,2]]},"548":{"position":[[354,3]]},"550":{"position":[[81,2]]},"552":{"position":[[63,2]]},"554":{"position":[[74,2]]},"556":{"position":[[124,2]]},"558":{"position":[[174,2]]},"560":{"position":[[208,2],[347,1]]},"562":{"position":[[105,2]]},"564":{"position":[[84,2]]},"566":{"position":[[86,2]]},"568":{"position":[[136,2]]},"574":{"position":[[120,2]]},"576":{"position":[[88,3]]},"582":{"position":[[105,3]]},"584":{"position":[[98,3]]},"586":{"position":[[84,2]]},"588":{"position":[[103,2]]},"590":{"position":[[95,2]]},"602":{"position":[[290,2]]},"604":{"position":[[212,2]]},"606":{"position":[[417,2]]},"608":{"position":[[452,2]]},"614":{"position":[[263,2]]},"616":{"position":[[185,2]]},"618":{"position":[[229,2]]},"626":{"position":[[118,2],[244,2],[519,2]]},"638":{"position":[[139,2]]},"640":{"position":[[98,2]]},"642":{"position":[[126,2],[178,2]]},"644":{"position":[[137,2]]},"646":{"position":[[98,2],[131,2]]},"648":{"position":[[94,2]]},"650":{"position":[[102,2],[135,2]]},"652":{"position":[[166,2]]},"654":{"position":[[94,2],[194,3]]},"660":{"position":[[110,3]]},"664":{"position":[[89,3]]},"668":{"position":[[105,2]]},"670":{"position":[[106,2]]},"672":{"position":[[149,2],[188,2],[221,2]]},"674":{"position":[[104,3]]},"676":{"position":[[108,2],[328,1]]},"678":{"position":[[128,2]]},"680":{"position":[[106,2]]},"682":{"position":[[126,3]]},"684":{"position":[[91,2]]},"686":{"position":[[97,2]]},"692":{"position":[[87,2]]},"694":{"position":[[103,2]]},"696":{"position":[[256,1],[530,2]]},"698":{"position":[[160,2],[284,1],[364,1]]},"700":{"position":[[162,2],[235,1],[316,1]]},"702":{"position":[[204,2]]},"704":{"position":[[107,2]]},"706":{"position":[[114,2]]},"708":{"position":[[109,2]]},"710":{"position":[[127,3]]},"712":{"position":[[84,2]]},"716":{"position":[[120,3]]},"720":{"position":[[103,3]]},"724":{"position":[[144,2],[395,2]]},"801":{"position":[[1334,2]]},"885":{"position":[[273,1],[336,1]]},"887":{"position":[[433,1],[496,1]]},"889":{"position":[[267,2],[463,2]]},"897":{"position":[[148,2],[365,2]]},"917":{"position":[[717,3]]},"973":{"position":[[211,2]]},"977":{"position":[[378,2]]},"995":{"position":[[449,2]]},"1007":{"position":[[1042,2]]},"1011":{"position":[[452,2]]},"1049":{"position":[[632,2]]},"1148":{"position":[[244,1]]},"1157":{"position":[[566,2],[1039,2],[1482,2]]}}}],["1.0.0b5",{"_index":2476,"t":{"534":{"position":[[764,10]]}}}],["1.5h",{"_index":1858,"t":{"245":{"position":[[149,6]]},"413":{"position":[[664,6]]}}}],["1/2",{"_index":2036,"t":{"306":{"position":[[1786,7]]}}}],["1/3",{"_index":1622,"t":{"210":{"position":[[1296,3],[1326,3],[1361,3]]}}}],["10",{"_index":2094,"t":{"308":{"position":[[1951,2]]},"390":{"position":[[378,3]]},"415":{"position":[[426,3]]},"803":{"position":[[1004,2]]}}}],["10.0",{"_index":2822,"t":{"803":{"position":[[1490,4]]}}}],["100",{"_index":1975,"t":{"296":{"position":[[1384,4],[1513,3]]},"324":{"position":[[270,4]]},"638":{"position":[[356,5]]}}}],["1000",{"_index":2007,"t":{"302":{"position":[[628,4],[669,4]]},"803":{"position":[[1094,4]]}}}],["1073741824",{"_index":2341,"t":{"431":{"position":[[363,10]]}}}],["14",{"_index":1283,"t":{"162":{"position":[[81,2]]},"348":{"position":[[536,4]]},"350":{"position":[[356,4],[543,4],[969,4],[1404,4]]}}}],["16",{"_index":2310,"t":{"419":{"position":[[617,2]]}}}],["1633119005107454620",{"_index":2197,"t":{"350":{"position":[[243,22],[856,22],[1291,22]]}}}],["1633119625907957639",{"_index":2198,"t":{"350":{"position":[[430,22]]}}}],["1970",{"_index":2471,"t":{"530":{"position":[[606,4]]},"724":{"position":[[398,4]]},"973":{"position":[[214,6]]},"977":{"position":[[381,5]]},"1007":{"position":[[1045,5]]},"1049":{"position":[[635,6]]}}}],["1context.register_actor",{"_index":1239,"t":{"156":{"position":[[1526,24]]}}}],["1gb",{"_index":2342,"t":{"431":{"position":[[386,4]]}}}],["1if",{"_index":1597,"t":{"208":{"position":[[1103,3]]},"216":{"position":[[3120,3]]}}}],["2",{"_index":545,"t":{"56":{"position":[[150,1]]},"90":{"position":[[1075,2],[1165,2],[1327,2]]},"108":{"position":[[679,2]]},"136":{"position":[[1184,1]]},"138":{"position":[[2994,1]]},"180":{"position":[[1381,2]]},"204":{"position":[[1337,1]]},"239":{"position":[[2983,2]]},"346":{"position":[[387,4]]},"348":{"position":[[409,2]]},"350":{"position":[[406,2],[1000,4],[1112,4],[1435,4]]},"352":{"position":[[270,1]]},"540":{"position":[[136,2]]},"542":{"position":[[140,3]]},"544":{"position":[[137,2]]},"546":{"position":[[115,2]]},"550":{"position":[[105,3]]},"552":{"position":[[86,2]]},"554":{"position":[[97,2]]},"556":{"position":[[148,2]]},"558":{"position":[[191,2]]},"560":{"position":[[234,2]]},"562":{"position":[[128,2]]},"564":{"position":[[107,2]]},"566":{"position":[[99,2]]},"568":{"position":[[151,2]]},"574":{"position":[[166,2]]},"586":{"position":[[105,2]]},"588":{"position":[[123,3]]},"590":{"position":[[117,2]]},"602":{"position":[[337,2]]},"604":{"position":[[261,2]]},"606":{"position":[[441,2]]},"608":{"position":[[475,2]]},"614":{"position":[[308,2]]},"616":{"position":[[232,2]]},"618":{"position":[[251,2]]},"626":{"position":[[141,2],[277,2],[545,2]]},"638":{"position":[[176,2]]},"640":{"position":[[134,3]]},"642":{"position":[[140,2],[195,2]]},"644":{"position":[[165,3]]},"646":{"position":[[110,2],[153,2]]},"648":{"position":[[113,3]]},"650":{"position":[[114,2],[157,3]]},"652":{"position":[[194,2]]},"654":{"position":[[117,2]]},"670":{"position":[[136,3]]},"672":{"position":[[236,2]]},"676":{"position":[[144,2]]},"678":{"position":[[160,3]]},"680":{"position":[[132,3]]},"684":{"position":[[126,3]]},"686":{"position":[[124,2]]},"692":{"position":[[114,2]]},"694":{"position":[[124,2]]},"696":{"position":[[563,2]]},"698":{"position":[[180,2]]},"700":{"position":[[182,2]]},"702":{"position":[[242,2]]},"704":{"position":[[127,2]]},"706":{"position":[[144,3]]},"708":{"position":[[142,2]]},"712":{"position":[[114,3]]},"724":{"position":[[174,2]]},"801":{"position":[[1346,2]]}}}],["2.0",{"_index":879,"t":{"94":{"position":[[321,3],[458,3]]},"120":{"position":[[97,4],[857,3]]},"237":{"position":[[8,4]]},"482":{"position":[[119,3]]}}}],["2.15",{"_index":2060,"t":{"306":{"position":[[4237,6]]},"308":{"position":[[1540,6]]}}}],["2.16",{"_index":2047,"t":{"306":{"position":[[3014,6]]}}}],["2.17",{"_index":2101,"t":{"308":{"position":[[2400,6]]}}}],["2.8.0",{"_index":3043,"t":{"1074":{"position":[[54,6]]}}}],["2.o",{"_index":2377,"t":{"482":{"position":[[69,4]]}}}],["20",{"_index":2300,"t":{"415":{"position":[[193,2]]}}}],["20.0",{"_index":2831,"t":{"803":{"position":[[1904,4]]}}}],["2004",{"_index":1708,"t":{"237":{"position":[[21,4]]}}}],["2019",{"_index":1849,"t":{"239":{"position":[[8978,4]]}}}],["2023",{"_index":2017,"t":{"306":{"position":[[766,4],[1143,4]]}}}],["2097152",{"_index":2148,"t":{"326":{"position":[[292,7]]}}}],["2278",{"_index":2030,"t":{"306":{"position":[[1282,5]]}}}],["24",{"_index":3085,"t":{"1110":{"position":[[780,3]]},"1112":{"position":[[750,3]]}}}],["255",{"_index":1964,"t":{"296":{"position":[[601,3],[1204,3],[1695,3]]}}}],["256",{"_index":1974,"t":{"296":{"position":[[1317,5]]},"686":{"position":[[786,3]]},"1029":{"position":[[287,3]]}}}],["2;}messag",{"_index":2474,"t":{"534":{"position":[[538,10]]}}}],["2h45m",{"_index":1859,"t":{"245":{"position":[[159,7]]},"413":{"position":[[674,7]]}}}],["2mb",{"_index":2149,"t":{"326":{"position":[[312,4]]}}}],["2nd",{"_index":2207,"t":{"352":{"position":[[280,3]]}}}],["2x&ping=lowcogment://discover/datalog?name=high&open&color=green_blu",{"_index":2854,"t":{"811":{"position":[[5302,69]]}}}],["3",{"_index":542,"t":{"56":{"position":[[28,1]]},"90":{"position":[[1186,2],[1349,2]]},"142":{"position":[[700,1]]},"158":{"position":[[1283,1]]},"180":{"position":[[1626,1],[2113,1]]},"182":{"position":[[1075,2]]},"204":{"position":[[1346,1]]},"214":{"position":[[488,1],[809,1]]},"216":{"position":[[4929,1]]},"227":{"position":[[47,1]]},"239":{"position":[[3366,2]]},"308":{"position":[[3219,2]]},"350":{"position":[[574,4]]},"540":{"position":[[171,2]]},"544":{"position":[[164,3]]},"546":{"position":[[136,2]]},"552":{"position":[[105,3]]},"554":{"position":[[116,3]]},"556":{"position":[[174,2]]},"558":{"position":[[213,2]]},"560":{"position":[[251,2]]},"562":{"position":[[161,2]]},"564":{"position":[[135,2]]},"566":{"position":[[112,2]]},"568":{"position":[[161,2]]},"574":{"position":[[197,3]]},"586":{"position":[[127,2]]},"590":{"position":[[137,3]]},"602":{"position":[[366,2]]},"604":{"position":[[280,2]]},"606":{"position":[[463,2]]},"614":{"position":[[334,2]]},"616":{"position":[[268,2]]},"618":{"position":[[271,2]]},"626":{"position":[[163,2],[306,2]]},"638":{"position":[[195,2]]},"642":{"position":[[153,2],[212,3]]},"646":{"position":[[176,2]]},"668":{"position":[[130,2]]},"676":{"position":[[171,2]]},"686":{"position":[[156,2]]},"692":{"position":[[134,2]]},"694":{"position":[[144,2]]},"696":{"position":[[591,2]]},"700":{"position":[[202,3]]},"702":{"position":[[280,2]]},"704":{"position":[[152,2]]},"708":{"position":[[177,2]]},"724":{"position":[[217,3]]}}}],["3.0",{"_index":2829,"t":{"803":{"position":[[1779,3]]}}}],["3.7",{"_index":1672,"t":{"220":{"position":[[203,3]]},"814":{"position":[[312,4]]}}}],["3.9",{"_index":1673,"t":{"220":{"position":[[207,4]]}}}],["30",{"_index":1866,"t":{"245":{"position":[[393,2]]},"413":{"position":[[908,2]]},"801":{"position":[[819,2]]},"803":{"position":[[1115,2]]}}}],["300m",{"_index":1857,"t":{"245":{"position":[[140,8]]},"413":{"position":[[655,8]]}}}],["30t22:24:08z",{"_index":2019,"t":{"306":{"position":[[774,12],[821,12],[892,12],[939,12],[1017,12],[1103,12],[1151,12]]}}}],["30t22:24:09z",{"_index":2029,"t":{"306":{"position":[[1235,12]]}}}],["30t22:24:12z",{"_index":2032,"t":{"306":{"position":[[1308,12],[1386,12],[1443,12]]}}}],["32",{"_index":2316,"t":{"419":{"position":[[1016,2]]}}}],["3;}messag",{"_index":828,"t":{"90":{"position":[[1102,10]]},"654":{"position":[[145,10]]}}}],["3d",{"_index":261,"t":{"18":{"position":[[854,2]]},"40":{"position":[[400,2]]}}}],["4",{"_index":830,"t":{"90":{"position":[[1213,2],[1376,3]]},"154":{"position":[[44,2],[139,1]]},"239":{"position":[[4313,2]]},"540":{"position":[[204,2]]},"546":{"position":[[163,2]]},"556":{"position":[[207,3]]},"558":{"position":[[248,3]]},"560":{"position":[[286,3]]},"562":{"position":[[192,3]]},"564":{"position":[[175,3]]},"566":{"position":[[129,2]]},"568":{"position":[[175,2]]},"574":{"position":[[144,2]]},"586":{"position":[[147,2]]},"602":{"position":[[385,2]]},"604":{"position":[[299,2]]},"606":{"position":[[484,2]]},"614":{"position":[[355,2]]},"616":{"position":[[287,2]]},"618":{"position":[[312,2]]},"626":{"position":[[335,2]]},"638":{"position":[[220,2]]},"646":{"position":[[195,3]]},"668":{"position":[[155,3]]},"676":{"position":[[198,3]]},"686":{"position":[[175,2]]},"692":{"position":[[160,2]]},"694":{"position":[[167,2]]},"696":{"position":[[618,2]]},"698":{"position":[[198,2]]},"702":{"position":[[328,2]]},"704":{"position":[[177,3]]},"708":{"position":[[220,2]]}}}],["42",{"_index":2096,"t":{"308":{"position":[[2075,2],[2182,4],[3115,2],[3286,4],[3381,2]]}}}],["4;}messag",{"_index":2586,"t":{"626":{"position":[[199,10]]}}}],["5",{"_index":621,"t":{"62":{"position":[[837,1]]},"138":{"position":[[1622,1]]},"148":{"position":[[8,1]]},"158":{"position":[[1667,1]]},"160":{"position":[[44,2],[139,1]]},"212":{"position":[[1437,2]]},"214":{"position":[[697,2]]},"216":{"position":[[72,1],[4615,2],[6162,1]]},"239":{"position":[[6315,2]]},"263":{"position":[[485,3]]},"540":{"position":[[226,2]]},"546":{"position":[[193,2]]},"566":{"position":[[140,3]]},"568":{"position":[[184,3]]},"586":{"position":[[175,2]]},"602":{"position":[[406,2]]},"604":{"position":[[320,2]]},"606":{"position":[[514,3]]},"614":{"position":[[375,2]]},"616":{"position":[[308,2]]},"618":{"position":[[342,3]]},"626":{"position":[[98,2],[366,2]]},"638":{"position":[[242,2]]},"686":{"position":[[197,2]]},"692":{"position":[[184,3]]},"694":{"position":[[189,2]]},"698":{"position":[[220,2]]},"702":{"position":[[372,2]]},"708":{"position":[[280,3]]},"803":{"position":[[1137,1]]}}}],["5.0",{"_index":619,"t":{"62":{"position":[[804,3]]},"803":{"position":[[1614,3]]}}}],["50",{"_index":1725,"t":{"239":{"position":[[640,5]]}}}],["5;}messag",{"_index":832,"t":{"90":{"position":[[1237,10]]}}}],["6",{"_index":1196,"t":{"148":{"position":[[14,1]]},"158":{"position":[[1927,2]]},"174":{"position":[[333,1]]},"239":{"position":[[6755,2]]},"540":{"position":[[253,3]]},"546":{"position":[[231,2]]},"586":{"position":[[214,2]]},"602":{"position":[[426,2]]},"604":{"position":[[340,2]]},"616":{"position":[[328,2]]},"626":{"position":[[402,2]]},"638":{"position":[[263,2]]},"686":{"position":[[220,2]]},"694":{"position":[[240,2]]},"696":{"position":[[678,2]]},"698":{"position":[[251,3]]},"702":{"position":[[421,2]]}}}],["60",{"_index":1950,"t":{"294":{"position":[[74,2]]}}}],["64",{"_index":1978,"t":{"298":{"position":[[93,3]]},"686":{"position":[[828,2]]},"811":{"position":[[3396,2]]},"1029":{"position":[[329,2]]}}}],["67",{"_index":2818,"t":{"803":{"position":[[1078,4]]}}}],["6b80c4",{"_index":1373,"t":{"178":{"position":[[526,10]]}}}],["7",{"_index":1810,"t":{"239":{"position":[[7031,2]]},"546":{"position":[[259,2]]},"586":{"position":[[255,3]]},"638":{"position":[[286,2]]},"686":{"position":[[255,3]]},"694":{"position":[[269,3]]},"696":{"position":[[734,2]]},"702":{"position":[[466,3]]}}}],["7722934920723",{"_index":1878,"t":{"251":{"position":[[261,15]]},"263":{"position":[[325,15]]}}}],["7;}messag",{"_index":2588,"t":{"626":{"position":[[442,10]]}}}],["8",{"_index":1208,"t":{"150":{"position":[[418,2]]},"152":{"position":[[672,2]]},"239":{"position":[[7615,2]]},"296":{"position":[[1208,2]]},"302":{"position":[[633,2],[674,2]]},"546":{"position":[[278,2]]},"638":{"position":[[314,2]]},"696":{"position":[[796,2]]}}}],["8080",{"_index":2357,"t":{"453":{"position":[[198,5]]}}}],["86400",{"_index":3084,"t":{"1110":{"position":[[766,5]]},"1112":{"position":[[736,5]]}}}],["9",{"_index":1712,"t":{"239":{"position":[[135,1],[8321,2]]},"310":{"position":[[516,6]]},"546":{"position":[[316,3]]},"638":{"position":[[337,2]]},"696":{"position":[[854,3]]},"811":{"position":[[5025,2]]}}}],["9000",{"_index":2040,"t":{"306":{"position":[[2141,4],[2170,4]]},"360":{"position":[[419,5]]},"362":{"position":[[441,5]]}}}],["9002",{"_index":2134,"t":{"318":{"position":[[328,5]]},"457":{"position":[[322,5]]}}}],["9003",{"_index":2336,"t":{"427":{"position":[[638,5]]}}}],["9005",{"_index":1916,"t":{"276":{"position":[[237,5]]}}}],["9010",{"_index":2112,"t":{"310":{"position":[[97,4]]}}}],["907957639",{"_index":2192,"t":{"348":{"position":[[433,12]]}}}],["_",{"_index":2850,"t":{"811":{"position":[[5039,4]]}}}],["__",{"_index":1991,"t":{"298":{"position":[[2456,5]]},"308":{"position":[[1243,5]]},"801":{"position":[[341,4]]},"811":{"position":[[5140,4]]}}}],["__1",{"_index":2090,"t":{"308":{"position":[[1700,4],[1802,9],[1832,3],[2131,11]]},"310":{"position":[[53,9]]}}}],["__10",{"_index":2095,"t":{"308":{"position":[[1954,6],[2282,9]]}}}],["__2",{"_index":2091,"t":{"308":{"position":[[1705,3],[1812,9],[2143,11],[2362,8]]},"310":{"position":[[878,11]]}}}],["__3",{"_index":2092,"t":{"308":{"position":[[1713,3],[1822,9],[2155,11],[2215,10]]}}}],["__42",{"_index":2100,"t":{"308":{"position":[[2292,11]]}}}],["__6",{"_index":2099,"t":{"308":{"position":[[2226,12]]}}}],["__9",{"_index":2093,"t":{"308":{"position":[[1839,3]]}}}],["__actor_class",{"_index":1909,"t":{"263":{"position":[[489,15]]},"811":{"position":[[2273,13],[5776,14]]}}}],["__all_arg",{"_index":2103,"t":{"308":{"position":[[2553,11],[2569,10],[2668,16],[3241,18],[3342,17]]}}}],["__authent",{"_index":2852,"t":{"811":{"position":[[5163,16],[6022,16]]}}}],["__id",{"_index":2855,"t":{"811":{"position":[[6335,5]]}}}],["__id=xxx",{"_index":2842,"t":{"811":{"position":[[3372,8]]}}}],["__implement",{"_index":1992,"t":{"298":{"position":[[2467,17]]},"811":{"position":[[2291,16],[2346,16],[6533,17]]}}}],["__nb_arg",{"_index":2102,"t":{"308":{"position":[[2475,10],[3181,17]]}}}],["__registration_sourc",{"_index":1905,"t":{"263":{"position":[[402,23]]}}}],["_load_dot_env",{"_index":1159,"t":{"144":{"position":[[1017,13]]},"152":{"position":[[774,13],[847,13]]},"170":{"position":[[1148,13],[1497,13],[2083,13]]}}}],["_pb.d.t",{"_index":504,"t":{"52":{"position":[[876,9]]}}}],["_pb.j",{"_index":503,"t":{"52":{"position":[[864,7]]}}}],["_pb.pi",{"_index":491,"t":{"52":{"position":[[516,7]]}}}],["_run_parallel",{"_index":1145,"t":{"142":{"position":[[702,13]]}}}],["_run_sequ",{"_index":1336,"t":{"170":{"position":[[2378,13]]}}}],["abil",{"_index":1033,"t":{"122":{"position":[[253,7]]},"298":{"position":[[1831,7]]}}}],["abov",{"_index":314,"t":{"26":{"position":[[42,5]]},"44":{"position":[[40,6]]},"56":{"position":[[202,6]]},"66":{"position":[[549,5]]},"71":{"position":[[469,5]]},"124":{"position":[[2013,5]]},"136":{"position":[[700,5]]},"158":{"position":[[1448,5]]},"188":{"position":[[1011,5]]},"192":{"position":[[206,5]]},"208":{"position":[[1840,6]]},"212":{"position":[[923,5]]},"214":{"position":[[494,5]]},"216":{"position":[[1387,5],[3453,6]]},"239":{"position":[[6597,6]]},"308":{"position":[[1965,5]]},"562":{"position":[[777,6]]},"803":{"position":[[421,6]]}}}],["absenc",{"_index":2494,"t":{"548":{"position":[[226,7]]}}}],["abstract",{"_index":2438,"t":{"522":{"position":[[155,9]]},"762":{"position":[[0,8]]},"907":{"position":[[0,8]]}}}],["accept",{"_index":1027,"t":{"120":{"position":[[825,8]]},"170":{"position":[[474,7]]},"239":{"position":[[8324,9],[8474,10],[8605,9],[8915,9]]},"292":{"position":[[538,10]]},"486":{"position":[[308,8]]},"488":{"position":[[621,6]]},"530":{"position":[[455,6]]},"811":{"position":[[4673,10]]},"991":{"position":[[144,7]]},"995":{"position":[[57,8],[318,8]]},"1003":{"position":[[314,7]]},"1011":{"position":[[58,8],[321,8]]}}}],["access",{"_index":83,"t":{"8":{"position":[[244,6],[308,6]]},"16":{"position":[[308,6]]},"18":{"position":[[488,8]]},"40":{"position":[[34,8]]},"42":{"position":[[128,8]]},"60":{"position":[[169,10]]},"82":{"position":[[121,8]]},"90":{"position":[[709,6],[805,8]]},"102":{"position":[[84,6]]},"229":{"position":[[817,9]]},"241":{"position":[[46,6]]},"255":{"position":[[282,6]]},"271":{"position":[[198,6],[628,6]]},"298":{"position":[[3019,6]]},"332":{"position":[[338,6]]},"368":{"position":[[494,6]]},"411":{"position":[[49,6]]},"439":{"position":[[341,6]]},"455":{"position":[[167,6]]},"469":{"position":[[177,6],[365,6]]},"492":{"position":[[180,6]]},"520":{"position":[[637,6]]},"522":{"position":[[334,8],[687,8]]},"638":{"position":[[506,8],[600,8],[673,8],[753,8],[829,8],[903,8],[976,8],[1061,8],[1140,8]]},"642":{"position":[[647,10]]},"690":{"position":[[46,6]]},"809":{"position":[[27,6]]},"831":{"position":[[728,6],[1077,6]]},"989":{"position":[[577,8],[984,8]]},"1001":{"position":[[630,8],[1132,8]]},"1100":{"position":[[327,6],[676,6]]}}}],["accord",{"_index":697,"t":{"71":{"position":[[1062,10]]},"710":{"position":[[208,9]]},"730":{"position":[[671,9]]},"785":{"position":[[106,9]]},"825":{"position":[[564,9]]},"857":{"position":[[408,9]]},"969":{"position":[[106,9]]},"1007":{"position":[[721,9]]},"1033":{"position":[[271,9]]}}}],["account",{"_index":701,"t":{"73":{"position":[[156,7]]}}}],["achiev",{"_index":767,"t":{"80":{"position":[[308,7]]}}}],["acknowledg",{"_index":2569,"t":{"604":{"position":[[605,11]]},"608":{"position":[[79,11],[170,11]]},"616":{"position":[[581,11]]},"620":{"position":[[95,11]]},"1007":{"position":[[170,12]]}}}],["act",{"_index":772,"t":{"80":{"position":[[723,3]]},"229":{"position":[[1741,4]]},"239":{"position":[[314,6],[7822,5],[8641,3]]},"480":{"position":[[329,4]]},"975":{"position":[[321,6]]}}}],["action",{"_index":147,"t":{"12":{"position":[[115,7],[480,7],[522,7],[578,7],[686,6]]},"14":{"position":[[307,8],[533,7],[673,7]]},"16":{"position":[[255,6]]},"18":{"position":[[392,6],[879,8]]},"20":{"position":[[52,7]]},"22":{"position":[[91,7],[126,7],[169,7],[314,6],[398,6]]},"24":{"position":[[458,6],[883,7]]},"26":{"position":[[21,7],[146,7],[239,8],[336,7],[649,6]]},"30":{"position":[[360,7],[397,7],[741,8],[1029,6]]},"40":{"position":[[425,8]]},"42":{"position":[[717,7],[852,7]]},"44":{"position":[[173,9]]},"50":{"position":[[275,6],[404,7],[609,7],[716,7],[798,7]]},"54":{"position":[[1251,7],[1278,7],[1410,7]]},"58":{"position":[[310,6],[1016,6],[1968,6]]},"62":{"position":[[555,6],[618,6],[700,6]]},"71":{"position":[[892,6],[958,7],[989,8]]},"86":{"position":[[209,6],[326,8]]},"88":{"position":[[708,6],[775,7]]},"122":{"position":[[286,7]]},"124":{"position":[[493,7],[1786,6],[1912,8],[2255,6],[2325,6]]},"128":{"position":[[772,7],[900,6]]},"130":{"position":[[4,6],[44,7],[194,7],[689,7],[751,6],[773,6]]},"132":{"position":[[257,7],[357,7],[413,8]]},"134":{"position":[[80,8],[457,7],[535,7],[846,6],[968,7],[1014,6]]},"136":{"position":[[117,7],[1120,6],[1323,8]]},"138":{"position":[[2217,6],[2580,7],[2931,6]]},"156":{"position":[[688,8]]},"180":{"position":[[1997,9],[2706,6],[2821,6]]},"182":{"position":[[72,8],[384,8],[903,8]]},"186":{"position":[[521,6]]},"188":{"position":[[118,7]]},"190":{"position":[[233,6],[1791,6]]},"196":{"position":[[203,7]]},"198":{"position":[[245,7],[639,8],[1221,7]]},"202":{"position":[[433,7],[580,8]]},"204":{"position":[[155,6]]},"208":{"position":[[109,8],[152,6],[326,7],[514,6]]},"212":{"position":[[342,6]]},"216":{"position":[[6209,7],[6283,7],[6486,7]]},"227":{"position":[[306,7],[362,9],[519,6]]},"235":{"position":[[1112,6],[1872,8],[2041,8]]},"447":{"position":[[479,7]]},"459":{"position":[[143,8]]},"480":{"position":[[391,6],[445,6]]},"500":{"position":[[681,8]]},"520":{"position":[[346,7],[443,7],[490,6],[819,6],[892,7],[1034,7],[1172,7]]},"526":{"position":[[358,6],[423,6],[543,6],[596,6]]},"530":{"position":[[341,8],[512,8]]},"554":{"position":[[32,7],[48,6],[170,6],[214,7],[279,6],[364,6]]},"564":{"position":[[9,7],[125,7],[210,7],[258,6],[302,6],[339,8],[358,8],[433,6],[520,6],[890,7]]},"598":{"position":[[92,7]]},"604":{"position":[[264,6],[271,6],[640,7],[651,6]]},"612":{"position":[[258,7]]},"614":{"position":[[698,7]]},"626":{"position":[[289,6],[296,7],[1311,8],[1320,7],[1676,7],[1729,7],[1847,7],[1900,7]]},"694":{"position":[[582,8]]},"696":{"position":[[328,7],[582,6],[1029,7],[1037,6],[1107,6]]},"730":{"position":[[228,6],[345,7]]},"752":{"position":[[220,6],[346,7]]},"775":{"position":[[584,8]]},"777":{"position":[[15,7],[55,7],[92,6],[216,6],[308,6]]},"785":{"position":[[360,8],[379,6]]},"787":{"position":[[332,7],[463,6]]},"791":{"position":[[34,6]]},"801":{"position":[[3462,6],[4090,6],[4279,8]]},"803":{"position":[[151,8],[1207,8]]},"821":{"position":[[241,6],[358,7]]},"859":{"position":[[238,6],[375,7]]},"921":{"position":[[469,7]]},"923":{"position":[[44,9],[662,7],[727,7]]},"937":{"position":[[589,8]]},"939":{"position":[[15,7],[55,7],[108,6],[228,6],[320,6]]},"969":{"position":[[372,8],[409,6]]},"971":{"position":[[566,6]]},"975":{"position":[[368,6]]},"977":{"position":[[35,6],[95,6],[395,7],[450,7],[484,6],[565,6],[586,6]]},"1001":{"position":[[1073,6]]},"1019":{"position":[[14,6],[140,7],[270,6]]},"1043":{"position":[[127,7],[139,7]]},"1049":{"position":[[376,7]]},"1053":{"position":[[589,7],[623,6],[663,6],[684,6],[872,6]]},"1089":{"position":[[680,6],[739,6],[760,6]]}}}],["action/observ",{"_index":895,"t":{"96":{"position":[[208,18]]}}}],["action_seri",{"_index":3036,"t":{"1053":{"position":[[845,18]]}}}],["action_set",{"_index":2575,"t":{"614":{"position":[[321,10],[686,11]]}}}],["actions.import",{"_index":1395,"t":{"180":{"position":[[555,14]]}}}],["actions/messag",{"_index":2976,"t":{"971":{"position":[[398,17]]}}}],["actionset",{"_index":2461,"t":{"528":{"position":[[85,9]]},"564":{"position":[[55,9]]},"614":{"position":[[311,9]]}}}],["actionspac",{"_index":2796,"t":{"789":{"position":[[100,11]]},"791":{"position":[[101,11]]}}}],["actiont",{"_index":2784,"t":{"777":{"position":[[63,7]]},"785":{"position":[[369,7]]}}}],["activ",{"_index":360,"t":{"30":{"position":[[700,8]]},"44":{"position":[[149,8]]},"54":{"position":[[1360,7]]},"58":{"position":[[973,7],[1925,7]]},"86":{"position":[[125,6],[291,6]]},"156":{"position":[[1985,6]]},"208":{"position":[[1698,6],[2040,6]]},"216":{"position":[[3653,6]]},"447":{"position":[[32,6]]},"478":{"position":[[45,6]]},"508":{"position":[[245,6]]},"572":{"position":[[785,6]]},"584":{"position":[[309,6]]},"586":{"position":[[835,6]]},"598":{"position":[[48,6]]},"612":{"position":[[214,6]]},"690":{"position":[[853,8],[1053,8],[1228,8]]},"732":{"position":[[267,6]]},"750":{"position":[[532,6]]},"787":{"position":[[153,6],[553,6]]},"801":{"position":[[661,10]]},"823":{"position":[[309,6]]},"835":{"position":[[152,8]]},"843":{"position":[[435,6],[737,6]]},"857":{"position":[[756,6]]},"929":{"position":[[26,6],[114,6]]},"971":{"position":[[153,6],[314,6]]},"975":{"position":[[132,6],[489,6]]},"1118":{"position":[[148,6]]}}}],["actor",{"_index":142,"t":{"12":{"position":[[66,8],[367,6],[397,6],[779,6]]},"14":{"position":[[290,7]]},"16":{"position":[[143,5],[283,5],[466,5]]},"18":{"position":[[1030,6]]},"20":{"position":[[0,6],[40,6],[119,6]]},"22":{"position":[[0,6],[190,5],[349,5],[421,5]]},"24":{"position":[[70,7],[96,6],[226,5],[271,5],[376,5],[390,5],[431,5],[543,6],[653,5],[757,7],[768,5],[978,6],[1029,7],[1116,8],[1133,6],[1194,5]]},"26":{"position":[[100,6],[191,6],[318,5],[461,6],[670,6],[870,6],[1031,6]]},"28":{"position":[[77,6],[147,6]]},"30":{"position":[[294,7],[333,5],[464,6],[508,7],[630,6],[1005,5]]},"40":{"position":[[576,6]]},"42":{"position":[[16,6],[66,5],[87,6],[102,5],[185,5],[282,6],[426,7],[491,6],[581,5]]},"44":{"position":[[461,7]]},"46":{"position":[[231,5],[375,5],[402,5],[436,5],[446,5],[472,5],[502,5],[534,5]]},"50":{"position":[[104,5],[213,5]]},"54":{"position":[[345,6],[740,6],[929,6],[963,6],[1069,6],[1271,6]]},"56":{"position":[[245,6],[422,7],[513,5],[761,5]]},"58":{"position":[[0,6],[68,5],[188,7],[351,6],[446,6],[528,5],[669,5],[1158,5],[1305,5],[1604,5],[2126,5],[2286,5]]},"60":{"position":[[35,7],[158,6],[672,5],[708,7],[736,7],[1401,6],[1453,5],[1538,6],[1599,7]]},"62":{"position":[[15,5],[65,5],[198,5],[376,5],[442,5],[504,7],[521,5],[671,5],[739,5]]},"66":{"position":[[1362,8]]},"71":{"position":[[20,6],[40,5],[321,5],[585,5],[732,7],[748,6],[786,6]]},"73":{"position":[[60,5],[136,5]]},"76":{"position":[[41,6],[291,6],[933,6]]},"78":{"position":[[62,5],[114,5],[136,6],[418,5],[725,5]]},"80":{"position":[[519,6],[860,5]]},"84":{"position":[[311,6],[377,6],[509,5]]},"86":{"position":[[74,6],[220,6]]},"88":{"position":[[224,6],[728,7],[1295,7],[1332,5],[1410,5],[1469,7],[1670,5],[1757,5],[1794,5]]},"90":{"position":[[467,6],[758,5],[1318,6]]},"96":{"position":[[184,5]]},"104":{"position":[[100,6],[264,6],[414,6]]},"106":{"position":[[291,6]]},"108":{"position":[[131,5],[785,5]]},"114":{"position":[[14,7],[189,6]]},"116":{"position":[[447,5],[569,6],[598,7],[666,5],[745,5],[847,6],[909,6]]},"118":{"position":[[171,5]]},"122":{"position":[[172,6],[269,6]]},"124":{"position":[[38,5],[164,5],[241,7],[319,5],[410,6],[615,7],[680,5],[737,5],[788,5],[822,5],[875,5],[989,5],[1063,5],[1115,5],[1208,6],[1318,5],[1407,5],[1436,5],[1452,5],[1614,5],[1753,5],[1866,5],[1898,5],[1955,5],[2068,5],[2135,5],[2217,5],[2379,5],[2409,5]]},"126":{"position":[[76,5],[91,5],[108,5],[294,6],[341,6],[374,5],[551,6],[678,6],[776,5],[811,5]]},"128":{"position":[[4,5],[61,5],[114,5],[158,5],[486,6],[530,8],[609,5],[676,5],[835,5]]},"130":{"position":[[77,5],[173,5],[798,5]]},"132":{"position":[[62,5],[128,6],[486,5]]},"134":{"position":[[31,5],[93,5],[147,5],[237,5],[294,6],[519,5],[557,5],[813,5],[1189,5],[1249,5]]},"136":{"position":[[79,5],[1232,5],[1291,5],[1443,6],[1515,6]]},"138":{"position":[[366,6],[446,6],[564,5],[596,5],[744,5],[786,5],[2312,6],[2426,6],[2467,5],[2482,5],[2499,5],[2549,5],[3201,6],[3272,6]]},"146":{"position":[[2641,8],[2784,9],[2830,7],[2918,6],[2959,7],[2971,5],[3167,6],[3267,7],[3364,6],[4059,7]]},"148":{"position":[[48,6],[62,6],[322,5]]},"154":{"position":[[244,5]]},"156":{"position":[[64,5],[127,5],[244,5],[555,5],[974,5],[1656,5],[1971,5],[2431,5]]},"158":{"position":[[673,5],[1720,5]]},"172":{"position":[[207,7]]},"180":{"position":[[819,5],[1927,6],[2313,5],[2455,5]]},"182":{"position":[[604,5],[1328,6]]},"186":{"position":[[105,5],[203,6],[325,6],[348,6],[562,5],[598,5],[722,5],[830,7]]},"188":{"position":[[92,7],[1256,5]]},"190":{"position":[[38,5],[283,5],[500,5],[612,6]]},"192":{"position":[[27,6],[269,5],[351,5],[448,5]]},"194":{"position":[[73,5],[145,6],[265,5]]},"196":{"position":[[96,6],[262,7]]},"198":{"position":[[38,6],[421,7],[815,8],[1512,7]]},"200":{"position":[[137,5]]},"202":{"position":[[128,5],[572,7],[809,5],[1143,6]]},"204":{"position":[[217,6]]},"206":{"position":[[629,6],[787,7],[800,5]]},"208":{"position":[[1669,6]]},"210":{"position":[[773,7],[891,5],[1191,6]]},"212":{"position":[[248,5],[840,5]]},"214":{"position":[[1359,6]]},"216":{"position":[[2393,6],[2704,6],[3397,6],[5271,6],[6201,7],[6269,6]]},"224":{"position":[[660,6]]},"227":{"position":[[372,7],[577,6]]},"229":{"position":[[783,6]]},"235":{"position":[[204,7],[1192,6],[1628,6],[1964,7]]},"255":{"position":[[349,6]]},"263":{"position":[[394,7]]},"267":{"position":[[151,6]]},"298":{"position":[[1306,5],[1340,5],[1427,6],[1443,5]]},"312":{"position":[[95,7]]},"362":{"position":[[39,5],[80,6],[110,7]]},"364":{"position":[[38,5],[117,6]]},"407":{"position":[[338,6]]},"415":{"position":[[1074,7],[1096,6]]},"427":{"position":[[343,6]]},"447":{"position":[[404,6]]},"457":{"position":[[44,5]]},"461":{"position":[[29,5]]},"463":{"position":[[38,5]]},"469":{"position":[[124,5]]},"480":{"position":[[72,5],[131,5],[261,5],[301,5],[543,5],[583,5]]},"486":{"position":[[293,6]]},"488":{"position":[[100,6],[172,6],[201,7],[267,5],[344,5],[446,6],[506,6]]},"490":{"position":[[150,5]]},"500":{"position":[[716,5],[813,7]]},"502":{"position":[[244,5],[308,5],[460,5],[542,7]]},"506":{"position":[[174,7]]},"510":{"position":[[677,5],[713,5]]},"520":{"position":[[58,5],[94,5],[192,5],[261,5],[325,5],[461,5],[621,5],[752,5],[769,5]]},"524":{"position":[[856,5],[899,5],[1144,5],[1260,6]]},"526":{"position":[[319,6]]},"540":{"position":[[195,6],[439,7],[470,6],[573,6]]},"546":{"position":[[25,5],[406,5],[490,5]]},"550":{"position":[[14,5],[131,6],[176,6],[220,5]]},"552":{"position":[[268,6],[385,5],[464,5]]},"554":{"position":[[302,6],[414,5],[488,5]]},"556":{"position":[[63,5]]},"558":{"position":[[411,7],[616,6]]},"560":{"position":[[539,5]]},"562":{"position":[[42,6],[469,5],[593,5],[672,5],[850,6]]},"564":{"position":[[26,6],[456,6],[570,5],[676,6],[795,6],[812,7],[845,6]]},"568":{"position":[[54,6]]},"586":{"position":[[733,7],[842,6]]},"592":{"position":[[23,7]]},"594":{"position":[[69,5],[159,5],[232,6],[381,6],[470,5]]},"596":{"position":[[230,6],[313,6],[338,6],[392,6],[567,5]]},"598":{"position":[[86,5],[308,5],[363,7],[402,7]]},"602":{"position":[[20,6],[714,5]]},"604":{"position":[[16,6],[667,6]]},"606":{"position":[[103,5],[142,7],[291,7],[546,5],[597,5],[616,5],[719,5],[859,5],[925,6]]},"608":{"position":[[126,7],[191,5],[237,7],[531,5],[614,5],[751,5]]},"612":{"position":[[252,5]]},"614":{"position":[[715,6]]},"616":{"position":[[780,6]]},"618":{"position":[[657,6],[747,6]]},"626":{"position":[[1337,7],[1400,6],[1514,7],[1558,6],[1609,6],[1626,7],[1684,6],[1771,6],[1788,7],[1855,6]]},"694":{"position":[[517,6],[561,6]]},"696":{"position":[[36,5],[121,6],[229,5],[522,5],[858,6],[882,6],[930,5],[1061,5],[1210,5],[1292,5],[1366,5],[1450,5],[1543,5]]},"698":{"position":[[43,6],[276,6],[356,6]]},"700":{"position":[[44,6],[227,6],[308,6]]},"708":{"position":[[386,5],[412,5],[475,5],[501,5],[572,5],[600,5]]},"710":{"position":[[233,6]]},"730":{"position":[[167,5]]},"732":{"position":[[274,6],[322,5],[343,5]]},"736":{"position":[[31,5]]},"744":{"position":[[14,5],[287,5]]},"746":{"position":[[71,5],[217,5],[305,5],[503,5]]},"758":{"position":[[37,6],[133,7],[171,6]]},"773":{"position":[[20,6]]},"779":{"position":[[220,5],[327,5],[430,6],[464,6],[530,6],[581,6]]},"785":{"position":[[58,8],[326,7],[396,7],[557,7]]},"787":{"position":[[349,7],[412,7]]},"791":{"position":[[49,6]]},"795":{"position":[[206,6]]},"799":{"position":[[420,7]]},"801":{"position":[[2150,7],[2166,5],[2235,5],[2365,5],[2418,5],[2520,5],[2670,6],[2734,6],[2870,6],[3097,5],[3437,5],[3743,5],[3774,5],[3828,5],[3902,5],[3993,6],[4032,5],[4144,5],[4221,5],[4386,5]]},"803":{"position":[[137,5],[746,7],[762,5],[821,6],[1290,7]]},"805":{"position":[[900,6]]},"811":{"position":[[159,5],[181,7],[265,6],[313,5],[433,5],[827,6],[1742,7],[2242,5],[2506,5],[3627,6],[3645,5],[3896,5],[4044,6]]},"821":{"position":[[180,5]]},"823":{"position":[[316,6],[364,5],[385,5]]},"835":{"position":[[93,6]]},"843":{"position":[[14,5],[326,5],[397,5],[442,5],[628,5],[698,5],[744,5]]},"847":{"position":[[71,5],[210,5],[304,5],[515,5],[631,6]]},"865":{"position":[[37,6],[131,7],[182,6]]},"879":{"position":[[350,6],[409,6],[463,5],[493,5],[540,6],[615,5],[653,5],[700,6]]},"917":{"position":[[39,7],[158,6],[346,5],[397,7],[414,6],[480,6],[532,6],[931,5]]},"925":{"position":[[31,7],[286,7],[349,5],[371,8],[396,6],[521,6]]},"927":{"position":[[245,7]]},"929":{"position":[[33,6],[121,6]]},"931":{"position":[[372,5],[423,6],[457,6],[523,6],[575,6]]},"933":{"position":[[86,5],[160,5],[272,5],[405,5],[512,5],[701,5],[796,5]]},"935":{"position":[[20,6]]},"941":{"position":[[224,5],[366,5],[470,6],[504,6],[570,6],[622,6]]},"967":{"position":[[34,6],[75,6]]},"969":{"position":[[58,8],[343,7],[426,7],[604,7]]},"971":{"position":[[471,7]]},"973":{"position":[[54,6],[234,5],[426,5],[547,5],[573,5]]},"975":{"position":[[32,7],[123,5],[220,5],[312,5],[390,5],[451,5],[477,5]]},"977":{"position":[[50,6],[146,5],[177,6],[283,6],[500,5],[616,5],[701,5]]},"979":{"position":[[160,6],[257,6]]},"981":{"position":[[203,6]]},"987":{"position":[[245,6]]},"989":{"position":[[1111,7],[1174,7],[1270,7],[1379,6]]},"1001":{"position":[[49,5],[518,5],[537,6],[1031,6]]},"1003":{"position":[[168,5],[188,6]]},"1017":{"position":[[37,6],[206,6]]},"1019":{"position":[[30,5],[63,6],[108,5],[178,6],[284,5]]},"1021":{"position":[[42,5],[127,6],[172,5],[247,6],[363,5]]},"1043":{"position":[[239,5],[328,5],[412,5],[493,5]]},"1049":{"position":[[713,6],[760,5]]},"1053":{"position":[[40,5],[83,6],[157,6],[233,5],[344,5],[450,5],[639,6],[714,5],[799,5],[888,5],[1081,5]]},"1057":{"position":[[76,5],[239,5]]},"1059":{"position":[[72,5],[187,5]]},"1061":{"position":[[66,5]]},"1063":{"position":[[62,5]]},"1089":{"position":[[438,5],[695,5],[790,5]]},"1091":{"position":[[438,5],[699,5],[804,5]]},"1093":{"position":[[438,5],[694,5],[788,5]]},"1110":{"position":[[471,6],[518,6]]},"1112":{"position":[[441,6],[488,6]]}}}],["actor'",{"_index":1092,"t":{"134":{"position":[[593,7],[671,7],[1277,7],[1366,7]]},"202":{"position":[[89,7]]},"208":{"position":[[101,7]]},"554":{"position":[[24,7]]},"789":{"position":[[34,7]]},"967":{"position":[[122,7]]}}}],["actor(",{"_index":250,"t":{"18":{"position":[[444,9]]},"227":{"position":[[404,8]]},"229":{"position":[[1484,8]]}}}],["actor/:actor_name/:trial_id",{"_index":2373,"t":{"480":{"position":[[19,29],[174,29]]}}}],["actor/:actor_name/:trial_id/:tick_id",{"_index":2376,"t":{"480":{"position":[[343,38]]}}}],["actor/environ",{"_index":2506,"t":{"556":{"position":[[291,18],[433,18],[481,18]]}}}],["actor_1_param",{"_index":641,"t":{"66":{"position":[[812,14],[1371,15]]},"138":{"position":[[950,14],[3328,14]]},"146":{"position":[[2650,15],[3434,14]]},"156":{"position":[[1829,14]]},"194":{"position":[[288,14]]}}}],["actor_2_param",{"_index":656,"t":{"66":{"position":[[1387,15]]},"138":{"position":[[1108,14]]},"146":{"position":[[2666,15],[3557,14]]}}}],["actor_alpha",{"_index":2042,"t":{"306":{"position":[[2520,12]]}}}],["actor_class",{"_index":784,"t":{"80":{"position":[[1305,14],[1454,14]]},"90":{"position":[[1151,11],[2225,14]]},"128":{"position":[[440,13]]},"172":{"position":[[232,12],[296,12]]},"510":{"position":[[655,14]]},"520":{"position":[[859,14]]},"546":{"position":[[101,11],[325,11]]},"550":{"position":[[91,11],[138,12]]},"606":{"position":[[427,11],[580,12]]},"608":{"position":[[438,11],[562,12]]},"708":{"position":[[161,13],[444,14]]},"801":{"position":[[2491,12]]},"803":{"position":[[867,11],[1312,12],[1392,12],[1509,12],[1646,12],[1813,12]]},"843":{"position":[[360,11],[596,12]]},"847":{"position":[[273,14]]},"879":{"position":[[436,14]]},"917":{"position":[[508,15],[564,11]]},"931":{"position":[[551,15],[607,11]]},"933":{"position":[[232,12]]},"941":{"position":[[598,15],[654,11]]},"1089":{"position":[[394,12],[709,12]]},"1091":{"position":[[394,12],[713,12]]},"1093":{"position":[[394,12],[708,12]]}}}],["actor_class_nam",{"_index":2972,"t":{"967":{"position":[[82,17]]}}}],["actor_classes::observation::delta",{"_index":948,"t":{"108":{"position":[[253,33]]},"486":{"position":[[181,33]]}}}],["actor_classes::observation::delta_apply_fn",{"_index":949,"t":{"108":{"position":[[287,42]]},"486":{"position":[[215,42]]}}}],["actor_classes:action:spac",{"_index":2503,"t":{"554":{"position":[[437,27]]},"564":{"position":[[593,27]]},"801":{"position":[[4339,26]]},"939":{"position":[[166,26]]},"977":{"position":[[637,26]]},"1001":{"position":[[974,26]]},"1053":{"position":[[735,26]]},"1089":{"position":[[817,26]]}}}],["actor_classes:config_typ",{"_index":2497,"t":{"548":{"position":[[565,26]]},"801":{"position":[[2319,25]]},"933":{"position":[[650,26]]},"1001":{"position":[[475,25]]},"1093":{"position":[[815,25]]}}}],["actor_classes:nam",{"_index":2499,"t":{"550":{"position":[[274,18]]},"801":{"position":[[2588,19]]},"847":{"position":[[436,19]]},"933":{"position":[[334,19]]},"1003":{"position":[[284,19]]}}}],["actor_classes:observation:spac",{"_index":2502,"t":{"552":{"position":[[408,32]]},"562":{"position":[[616,32]]},"925":{"position":[[580,32]]},"973":{"position":[[468,31]]},"1053":{"position":[[275,31]]},"1091":{"position":[[831,31]]}}}],["actor_classes=[\"driver\"])await",{"_index":582,"t":{"60":{"position":[[475,30]]}}}],["actor_classes=[\"driver\"])context.register_actor(impl=actor_slow",{"_index":580,"t":{"60":{"position":[[379,64]]}}}],["actor_classes=[\"pedestrian\"])await",{"_index":589,"t":{"60":{"position":[[1017,34]]}}}],["actor_classes=[\"play",{"_index":1242,"t":{"156":{"position":[[1589,25]]},"192":{"position":[[241,25]]}}}],["actor_dir",{"_index":966,"t":{"110":{"position":[[572,9]]}}}],["actor_implement",{"_index":2745,"t":{"708":{"position":[[196,21],[533,22]]},"879":{"position":[[580,22]]}}}],["actor_index",{"_index":2986,"t":{"977":{"position":[[114,12],[522,11]]}}}],["actor_nam",{"_index":2374,"t":{"480":{"position":[[78,11]]},"606":{"position":[[404,10],[518,11]]},"608":{"position":[[462,10],[481,11]]},"708":{"position":[[128,11],[357,12]]},"843":{"position":[[296,11],[662,10]]},"879":{"position":[[316,12]]},"967":{"position":[[41,11]]},"1110":{"position":[[437,12]]},"1112":{"position":[[407,12]]}}}],["actor_name=\"alic",{"_index":593,"t":{"60":{"position":[[1141,19]]}}}],["actor_name=\"player_1",{"_index":1201,"t":{"148":{"position":[[509,22],[677,22]]}}}],["actor_name=\"player_1\")print(f\"tri",{"_index":1251,"t":{"156":{"position":[[2545,35]]}}}],["actor_param",{"_index":854,"t":{"90":{"position":[[2385,12]]}}}],["actor_params.actor_class",{"_index":850,"t":{"90":{"position":[[2240,25]]}}}],["actor_params.config",{"_index":853,"t":{"90":{"position":[[2358,20]]}}}],["actor_params.endpoint",{"_index":851,"t":{"90":{"position":[[2278,22]]}}}],["actor_params.implement",{"_index":852,"t":{"90":{"position":[[2319,28]]}}}],["actor_params.nam",{"_index":849,"t":{"90":{"position":[[2206,18]]}}}],["actor_port",{"_index":2213,"t":{"360":{"position":[[130,11]]},"380":{"position":[[90,11]]}}}],["actor_port=\"${orchestrator_port",{"_index":1332,"t":{"170":{"position":[[2131,33]]}}}],["actor_port=12000",{"_index":2218,"t":{"362":{"position":[[346,17]]}}}],["actor_port=9001",{"_index":2211,"t":{"356":{"position":[[99,15]]}}}],["actor_sampl",{"_index":2719,"t":{"694":{"position":[[224,13],[474,14]]}}}],["actor_servic",{"_index":2610,"t":{"638":{"position":[[179,13],[642,14]]}}}],["actor_session.all_ev",{"_index":560,"t":{"58":{"position":[[749,27]]},"73":{"position":[[298,27]]},"78":{"position":[[308,27]]},"138":{"position":[[2758,27]]},"156":{"position":[[1265,27]]},"190":{"position":[[767,27]]}}}],["actor_session.do_action(act",{"_index":1101,"t":{"136":{"position":[[1186,31]]},"138":{"position":[[2996,31]]}}}],["actor_session.do_action(driveract",{"_index":562,"t":{"58":{"position":[[1023,42]]}}}],["actor_session.do_action(next_act",{"_index":1238,"t":{"156":{"position":[[1474,36]]}}}],["actor_session.do_action(playeraction(move=defeats[observation.observation.them.last_mov",{"_index":1535,"t":{"190":{"position":[[1237,91]]}}}],["actor_session.do_action(playeraction(move=observation.observation.me.last_mov",{"_index":1534,"t":{"190":{"position":[[1056,80]]}}}],["actor_session.do_action(playeraction(move=random.choice(mov",{"_index":1536,"t":{"190":{"position":[[1380,64]]}}}],["actor_session.get_trial_id",{"_index":564,"t":{"58":{"position":[[1391,32]]}}}],["actor_session.start",{"_index":559,"t":{"58":{"position":[[708,21]]},"134":{"position":[[723,21]]},"156":{"position":[[1224,21]]},"190":{"position":[[713,21]]}}}],["actor_web_port=\"${orchestrator_http_port",{"_index":1334,"t":{"170":{"position":[[2211,42]]}}}],["actor_web_port=8080",{"_index":2222,"t":{"364":{"position":[[201,20]]}}}],["actorclass",{"_index":1417,"t":{"180":{"position":[[2420,11]]},"182":{"position":[[311,11],[1121,10],[1611,13]]},"746":{"position":[[280,11]]},"779":{"position":[[558,14],[613,10]]}}}],["actorclasses:action:spac",{"_index":2785,"t":{"777":{"position":[[150,25]]}}}],["actorclasses:nam",{"_index":2767,"t":{"746":{"position":[[430,18]]}}}],["actorconfig",{"_index":831,"t":{"90":{"position":[[1216,11]]}}}],["actorinfo",{"_index":2774,"t":{"758":{"position":[[149,11]]}}}],["actorinitialinput",{"_index":2564,"t":{"602":{"position":[[306,17]]},"606":{"position":[[377,17]]}}}],["actorinitialoutput",{"_index":2567,"t":{"604":{"position":[[228,18]]},"608":{"position":[[387,18]]}}}],["actornam",{"_index":741,"t":{"76":{"position":[[637,10]]},"180":{"position":[[2280,10]]},"182":{"position":[[300,10],[707,11],[1110,10],[1567,11],[1600,10]]},"744":{"position":[[255,10]]},"746":{"position":[[184,10]]}}}],["actorparam",{"_index":829,"t":{"90":{"position":[[1113,11],[1306,11]]},"540":{"position":[[183,11]]},"546":{"position":[[63,11]]}}}],["actorparamet",{"_index":1543,"t":{"194":{"position":[[184,15],[241,15]]},"1001":{"position":[[254,16]]}}}],["actorparameters(set",{"_index":3006,"t":{"1003":{"position":[[416,25]]}}}],["actorruntrialinput",{"_index":2559,"t":{"594":{"position":[[627,19]]},"596":{"position":[[697,19]]},"602":{"position":[[242,18]]}}}],["actorruntrialoutput",{"_index":2560,"t":{"594":{"position":[[663,20]]},"596":{"position":[[660,20]]},"604":{"position":[[163,19]]}}}],["actors/alpha",{"_index":2043,"t":{"306":{"position":[[2541,14]]}}}],["actors/main.pi",{"_index":1043,"t":{"124":{"position":[[904,14],[1990,15]]},"126":{"position":[[14,14]]},"134":{"position":[[390,14]]},"136":{"position":[[50,14]]},"138":{"position":[[613,14]]},"190":{"position":[[62,14],[572,14]]},"192":{"position":[[100,15]]}}}],["actors_data",{"_index":3033,"t":{"1049":{"position":[[642,12]]}}}],["actors_in_tri",{"_index":2452,"t":{"524":{"position":[[1110,16]]},"540":{"position":[[626,16]]},"562":{"position":[[903,17]]},"564":{"position":[[729,17]]},"586":{"position":[[237,15],[806,16]]},"590":{"position":[[344,18]]},"618":{"position":[[294,15],[624,16]]}}}],["actors_map",{"_index":2453,"t":{"524":{"position":[[1127,12]]},"562":{"position":[[179,10],[364,11],[708,11],[720,11]]}}}],["actors_port",{"_index":1046,"t":{"124":{"position":[[946,11]]}}}],["actorsess",{"_index":568,"t":{"58":{"position":[[1541,14],[2470,12]]},"182":{"position":[[748,14]]},"508":{"position":[[545,12]]},"770":{"position":[[180,14]]},"915":{"position":[[203,14]]}}}],["actorsession.doaction(act",{"_index":1476,"t":{"182":{"position":[[917,30]]}}}],["actorsession.env_nam",{"_index":2400,"t":{"502":{"position":[[185,23]]}}}],["actorsession.eventloop",{"_index":571,"t":{"58":{"position":[[1691,25]]},"73":{"position":[[799,25]]},"78":{"position":[[604,25]]},"182":{"position":[[978,25]]}}}],["actorsession.gettrialid",{"_index":575,"t":{"58":{"position":[[2383,30]]}}}],["actorsession.send_messag",{"_index":980,"t":{"114":{"position":[[321,28]]},"502":{"position":[[4,27]]}}}],["actorsession.sendaction(new",{"_index":572,"t":{"58":{"position":[[1975,27]]}}}],["actorsession.sendmessag",{"_index":744,"t":{"76":{"position":[[725,24]]}}}],["actorsession.start",{"_index":569,"t":{"58":{"position":[[1643,21]]},"182":{"position":[[768,21]]}}}],["actorstatu",{"_index":2987,"t":{"977":{"position":[[233,11]]}}}],["actorstatus.act",{"_index":2984,"t":{"975":{"position":[[99,19]]},"977":{"position":[[430,19],[741,19]]}}}],["actorstatus.default",{"_index":2985,"t":{"975":{"position":[[276,20]]}}}],["actorstatus.unavail",{"_index":2981,"t":{"973":{"position":[[250,24],[589,24]]},"975":{"position":[[180,24]]}}}],["actorstatus.unknown",{"_index":2983,"t":{"975":{"position":[[40,20]]}}}],["actor’",{"_index":357,"t":{"30":{"position":[[544,7]]}}}],["actservic",{"_index":1889,"t":{"255":{"position":[[398,11]]},"267":{"position":[[200,11]]},"407":{"position":[[387,11]]},"811":{"position":[[3850,11]]}}}],["actual",{"_index":1106,"t":{"138":{"position":[[222,8]]},"178":{"position":[[880,6]]},"194":{"position":[[590,8]]},"208":{"position":[[433,8]]},"210":{"position":[[616,8],[1204,8]]},"548":{"position":[[442,6]]},"552":{"position":[[302,6]]},"554":{"position":[[336,6]]},"562":{"position":[[510,6]]},"564":{"position":[[492,6]]},"811":{"position":[[719,6]]},"829":{"position":[[362,6]]},"1163":{"position":[[172,6]]},"1165":{"position":[[153,6]]}}}],["actual_callback",{"_index":3123,"t":{"1157":{"position":[[1393,19],[1491,16]]}}}],["ad",{"_index":1156,"t":{"144":{"position":[[719,6]]},"146":{"position":[[4020,5],[4148,5]]},"212":{"position":[[522,6]]},"216":{"position":[[2148,5]]},"302":{"position":[[302,6]]},"308":{"position":[[2522,5],[2719,5]]},"382":{"position":[[452,5]]},"403":{"position":[[199,6]]},"690":{"position":[[892,6],[1105,5]]},"712":{"position":[[154,6]]},"811":{"position":[[2998,5]]},"857":{"position":[[262,5]]},"1108":{"position":[[222,5]]},"1116":{"position":[[113,5]]},"1159":{"position":[[1152,6],[1301,5]]}}}],["adapt",{"_index":139,"t":{"12":{"position":[[33,7]]}}}],["add",{"_index":995,"t":{"116":{"position":[[882,3]]},"122":{"position":[[245,3]]},"136":{"position":[[443,3],[606,3]]},"140":{"position":[[254,3]]},"142":{"position":[[31,3]]},"150":{"position":[[311,3]]},"152":{"position":[[107,3]]},"156":{"position":[[49,3]]},"158":{"position":[[6,3],[765,3]]},"168":{"position":[[100,3]]},"170":{"position":[[25,3],[793,3],[1062,3],[2312,3]]},"174":{"position":[[19,3]]},"180":{"position":[[1131,3]]},"182":{"position":[[1719,3]]},"188":{"position":[[188,3],[588,3],[793,3]]},"190":{"position":[[368,3],[587,3]]},"192":{"position":[[116,3]]},"198":{"position":[[1780,3]]},"204":{"position":[[881,3],[1148,3],[1784,3]]},"206":{"position":[[250,3]]},"208":{"position":[[713,3],[1749,3]]},"210":{"position":[[17,3],[537,3]]},"214":{"position":[[280,3]]},"235":{"position":[[1253,3]]},"239":{"position":[[5715,3],[5959,3]]},"251":{"position":[[33,5]]},"488":{"position":[[479,3]]},"500":{"position":[[215,3]]},"636":{"position":[[316,5]]},"690":{"position":[[834,3],[1023,3],[1217,3]]},"1118":{"position":[[373,3]]}}}],["addendum",{"_index":1799,"t":{"239":{"position":[[5812,8]]}}}],["addit",{"_index":417,"t":{"44":{"position":[[86,10]]},"80":{"position":[[609,10]]},"158":{"position":[[1454,10]]},"170":{"position":[[767,10],[1792,10]]},"188":{"position":[[1017,10]]},"229":{"position":[[2541,10]]},"239":{"position":[[2038,9],[5874,10],[6030,10],[6545,10],[8346,10],[8946,10]]},"290":{"position":[[85,8]]},"415":{"position":[[199,8]]},"419":{"position":[[209,8]]},"421":{"position":[[228,8]]},"504":{"position":[[27,10]]},"558":{"position":[[563,10]]},"582":{"position":[[213,8]]},"658":{"position":[[104,10]]},"805":{"position":[[841,8]]}}}],["addition",{"_index":1671,"t":{"220":{"position":[[132,13]]}}}],["additionali",{"_index":934,"t":{"106":{"position":[[121,12]]}}}],["address",{"_index":907,"t":{"98":{"position":[[267,9]]},"114":{"position":[[128,7]]},"140":{"position":[[360,9],[503,8]]},"144":{"position":[[261,7]]},"146":{"position":[[231,11]]},"271":{"position":[[170,7]]},"298":{"position":[[795,8]]},"332":{"position":[[310,7]]},"336":{"position":[[152,7],[229,7],[354,8],[619,7]]},"368":{"position":[[466,7]]},"374":{"position":[[149,7],[226,7],[351,8],[614,7]]},"439":{"position":[[313,7]]},"443":{"position":[[155,7],[232,7],[357,8],[623,7]]},"469":{"position":[[337,7]]},"473":{"position":[[142,7],[219,7],[344,8],[609,7]]},"642":{"position":[[673,8]]},"809":{"position":[[230,7]]},"835":{"position":[[724,8],[900,7],[953,7]]},"851":{"position":[[169,9]]}}}],["addsampl",{"_index":2711,"t":{"690":{"position":[[1010,12]]}}}],["addsample(stream",{"_index":2700,"t":{"690":{"position":[[326,16]]}}}],["addsamplerequest",{"_index":2701,"t":{"690":{"position":[[343,17],[1264,16]]},"716":{"position":[[68,16]]}}}],["addsamplesrepli",{"_index":2702,"t":{"690":{"position":[[369,17],[1288,15]]},"718":{"position":[[48,15]]}}}],["addtrial",{"_index":2709,"t":{"690":{"position":[[822,11]]}}}],["addtrial(addtrialrequest",{"_index":2698,"t":{"690":{"position":[[269,25]]}}}],["addtrialrepli",{"_index":2699,"t":{"690":{"position":[[303,15],[996,13]]},"714":{"position":[[47,13]]}}}],["addtrialrequest",{"_index":2710,"t":{"690":{"position":[[973,15]]},"712":{"position":[[49,15]]}}}],["advanc",{"_index":1545,"t":{"194":{"position":[[844,8],[879,8]]}}}],["advantag",{"_index":1281,"t":{"160":{"position":[[320,9]]}}}],["advis",{"_index":1838,"t":{"239":{"position":[[8277,7]]}}}],["affect",{"_index":276,"t":{"20":{"position":[[70,6]]},"306":{"position":[[4181,8],[4312,6]]},"308":{"position":[[1367,7]]},"482":{"position":[[283,6],[327,6]]}}}],["afterward",{"_index":1938,"t":{"286":{"position":[[78,10]]},"756":{"position":[[187,11]]},"863":{"position":[[187,11]]}}}],["ag",{"_index":1960,"t":{"296":{"position":[[113,3]]}}}],["again",{"_index":1064,"t":{"128":{"position":[[423,5]]},"146":{"position":[[3333,5]]},"148":{"position":[[541,6]]},"182":{"position":[[1349,8]]},"190":{"position":[[1680,6]]}}}],["against",{"_index":1513,"t":{"186":{"position":[[951,7]]},"194":{"position":[[739,7]]},"216":{"position":[[6518,7]]},"239":{"position":[[3983,7],[8871,8]]},"821":{"position":[[662,7]]}}}],["agenc",{"_index":1034,"t":{"124":{"position":[[63,7]]}}}],["agent",{"_index":141,"t":{"12":{"position":[[52,5]]},"14":{"position":[[279,5]]},"20":{"position":[[165,6]]},"24":{"position":[[815,6]]},"42":{"position":[[597,5]]},"44":{"position":[[290,7]]},"58":{"position":[[1001,5],[1953,5]]},"180":{"position":[[520,6]]},"514":{"position":[[642,5]]},"558":{"position":[[122,7]]},"560":{"position":[[91,7]]}}}],["agent.proto",{"_index":2556,"t":{"594":{"position":[[23,12]]}}}],["aggreg",{"_index":706,"t":{"73":{"position":[[475,10],[992,10]]},"558":{"position":[[531,12]]},"560":{"position":[[110,9],[582,10],[788,10]]},"696":{"position":[[1162,10]]},"698":{"position":[[527,12]]},"795":{"position":[[269,11]]},"917":{"position":[[108,10],[238,10]]},"981":{"position":[[266,11]]},"1043":{"position":[[159,10]]},"1053":{"position":[[1047,10]]},"1057":{"position":[[101,10]]}}}],["agre",{"_index":1814,"t":{"239":{"position":[[7095,6],[7831,6],[8758,5]]}}}],["agreement",{"_index":108,"t":{"10":{"position":[[203,9]]},"239":{"position":[[6679,9]]}}}],["ahead",{"_index":1645,"t":{"216":{"position":[[565,5]]}}}],["ai",{"_index":113,"t":{"10":{"position":[[278,2]]},"44":{"position":[[287,2],[414,2]]},"158":{"position":[[76,3],[1616,2]]},"312":{"position":[[63,2]]},"1071":{"position":[[59,2]]}}}],["aim",{"_index":154,"t":{"12":{"position":[[202,4]]},"447":{"position":[[518,4]]}}}],["alic",{"_index":600,"t":{"60":{"position":[[1344,9]]},"138":{"position":[[843,5],[3772,5]]},"210":{"position":[[1313,5]]},"216":{"position":[[1699,5],[6526,6]]},"803":{"position":[[1306,5]]}}}],["alice'",{"_index":1514,"t":{"186":{"position":[[959,7]]}}}],["align",{"_index":1416,"t":{"180":{"position":[[2376,7],[2518,7]]}}}],["all_arg",{"_index":2104,"t":{"308":{"position":[[2880,15],[2973,14]]}}}],["all_received_messag",{"_index":3029,"t":{"1043":{"position":[[418,22],[499,22]]}}}],["all_received_reward",{"_index":3027,"t":{"1043":{"position":[[245,21]]}}}],["all_sampl",{"_index":3098,"t":{"1138":{"position":[[149,10]]}}}],["all_sent_reward",{"_index":3028,"t":{"1043":{"position":[[334,17]]}}}],["all_trial",{"_index":2919,"t":{"873":{"position":[[116,13]]}}}],["alleg",{"_index":1780,"t":{"239":{"position":[[4057,8]]}}}],["alloc",{"_index":291,"t":{"24":{"position":[[8,9]]}}}],["allow",{"_index":695,"t":{"71":{"position":[[974,9]]},"134":{"position":[[1300,6]]},"146":{"position":[[3996,6]]},"170":{"position":[[236,5]]},"180":{"position":[[418,5],[538,5],[3237,5]]},"186":{"position":[[785,5]]},"202":{"position":[[914,6]]},"227":{"position":[[318,8]]},"290":{"position":[[248,5]]},"292":{"position":[[670,8]]},"502":{"position":[[402,5]]},"799":{"position":[[664,5]]}}}],["alon",{"_index":1775,"t":{"239":{"position":[[3840,5]]}}}],["along",{"_index":246,"t":{"18":{"position":[[328,5]]},"184":{"position":[[125,5]]},"208":{"position":[[1656,5]]},"239":{"position":[[5461,5]]}}}],["alongsid",{"_index":1798,"t":{"239":{"position":[[5793,9]]},"415":{"position":[[595,9]]},"522":{"position":[[634,9]]}}}],["alpha",{"_index":2817,"t":{"803":{"position":[[1071,6]]}}}],["alreadi",{"_index":55,"t":{"6":{"position":[[169,7]]},"140":{"position":[[478,7]]},"204":{"position":[[290,7]]},"220":{"position":[[85,8]]},"222":{"position":[[81,7]]},"235":{"position":[[459,7]]},"286":{"position":[[129,7]]},"556":{"position":[[369,7]]},"819":{"position":[[1465,7]]},"885":{"position":[[159,7]]},"887":{"position":[[320,7]]},"899":{"position":[[279,7]]},"1007":{"position":[[670,7]]},"1136":{"position":[[1154,7]]},"1142":{"position":[[80,7]]}}}],["altern",{"_index":528,"t":{"54":{"position":[[1485,13]]},"154":{"position":[[106,13]]},"160":{"position":[[106,13]]}}}],["although",{"_index":1980,"t":{"298":{"position":[[262,8]]},"1157":{"position":[[1079,8]]}}}],["alway",{"_index":233,"t":{"16":{"position":[[297,6]]},"56":{"position":[[723,6]]},"88":{"position":[[1075,6]]},"150":{"position":[[262,6]]},"158":{"position":[[1012,6]]},"168":{"position":[[490,6]]},"296":{"position":[[155,6],[947,6],[1015,6]]},"300":{"position":[[453,6]]},"308":{"position":[[1847,6]]},"536":{"position":[[510,6]]},"560":{"position":[[442,6]]},"568":{"position":[[330,6]]},"602":{"position":[[614,6]]},"604":{"position":[[529,6]]},"614":{"position":[[563,6]]},"616":{"position":[[517,6]]},"785":{"position":[[169,6]]},"855":{"position":[[32,6]]},"883":{"position":[[32,6]]},"969":{"position":[[169,6]]},"1150":{"position":[[255,6]]}}}],["amount",{"_index":2273,"t":{"403":{"position":[[160,6]]},"482":{"position":[[260,6]]},"526":{"position":[[710,6],[1102,6]]},"801":{"position":[[3054,6],[3394,6]]}}}],["ampersand",{"_index":2847,"t":{"811":{"position":[[4860,9]]}}}],["and/or",{"_index":1842,"t":{"239":{"position":[[8549,6]]},"378":{"position":[[469,6]]},"811":{"position":[[6211,6]]}}}],["annot",{"_index":1459,"t":{"182":{"position":[[150,9]]},"239":{"position":[[1618,12]]}}}],["anoth",{"_index":671,"t":{"71":{"position":[[32,7]]},"154":{"position":[[236,7]]},"170":{"position":[[405,8]]},"182":{"position":[[1942,7]]},"508":{"position":[[237,7]]},"799":{"position":[[755,7]]},"811":{"position":[[918,7]]}}}],["answer",{"_index":63,"t":{"6":{"position":[[241,6]]},"8":{"position":[[368,6],[493,6]]}}}],["anymor",{"_index":917,"t":{"102":{"position":[[128,7],[199,8]]},"120":{"position":[[834,7]]},"146":{"position":[[1956,8]]},"486":{"position":[[73,8],[343,8]]},"488":{"position":[[131,7],[655,7]]},"494":{"position":[[351,8]]},"498":{"position":[[46,8],[177,7]]},"502":{"position":[[83,8]]}}}],["anypb",{"_index":738,"t":{"76":{"position":[[505,5],[657,6]]}}}],["anyth",{"_index":1170,"t":{"146":{"position":[[1186,8]]},"271":{"position":[[205,8]]},"1136":{"position":[[404,8]]}}}],["anyway",{"_index":2386,"t":{"488":{"position":[[693,8]]}}}],["anywher",{"_index":2071,"t":{"308":{"position":[[62,8]]}}}],["api",{"_index":431,"t":{"46":{"position":[[149,3],[218,3],[237,3],[300,3],[371,3],[442,3],[540,3],[657,3],[679,3],[777,3],[857,3],[925,3],[991,3],[1072,3],[1152,3]]},"48":{"position":[[337,3]]},"82":{"position":[[298,4]]},"94":{"position":[[325,4],[454,3]]},"102":{"position":[[645,3]]},"298":{"position":[[1351,3],[1415,3],[1454,3],[1505,3],[1550,3],[1593,3],[1640,3],[1697,3],[1761,3]]},"318":{"position":[[51,4]]},"411":{"position":[[157,4]]},"423":{"position":[[47,4]]},"427":{"position":[[117,3],[145,4],[162,3],[260,3]]},"447":{"position":[[215,3],[562,3]]},"453":{"position":[[47,4]]},"455":{"position":[[191,4]]},"457":{"position":[[50,4]]},"482":{"position":[[198,3]]},"490":{"position":[[233,3]]},"492":{"position":[[75,3],[364,3],[494,3]]},"522":{"position":[[36,3],[460,3],[606,3]]},"524":{"position":[[8,4],[553,4],[566,4],[834,4]]},"526":{"position":[[955,4]]},"530":{"position":[[77,4]]},"532":{"position":[[117,5]]},"534":{"position":[[85,5],[182,4],[247,4],[292,3],[711,5]]},"536":{"position":[[90,5]]},"538":{"position":[[84,5]]},"540":{"position":[[616,3]]},"562":{"position":[[893,3]]},"564":{"position":[[719,3]]},"570":{"position":[[5,3],[166,4],[176,3]]},"594":{"position":[[5,3],[109,4],[199,4],[209,3]]},"596":{"position":[[5,3],[103,4],[198,4],[208,3]]},"610":{"position":[[5,3],[113,4],[201,4],[211,3]]},"618":{"position":[[790,4]]},"622":{"position":[[5,3],[109,4]]},"630":{"position":[[5,3],[110,4]]},"634":{"position":[[5,3],[109,4]]},"656":{"position":[[5,3]]},"658":{"position":[[10,3]]},"688":{"position":[[5,3]]},"690":{"position":[[10,3]]},"734":{"position":[[4,3]]},"807":{"position":[[234,3],[364,3]]},"809":{"position":[[83,3]]},"825":{"position":[[692,3]]},"995":{"position":[[163,4]]},"1011":{"position":[[166,4]]}}}],["app",{"_index":456,"t":{"50":{"position":[[99,4]]},"60":{"position":[[10,3]]},"122":{"position":[[45,4]]},"164":{"position":[[200,4]]},"166":{"position":[[34,4],[122,3],[188,3]]},"168":{"position":[[416,3]]},"174":{"position":[[74,4]]},"178":{"position":[[26,4],[348,3],[741,4]]},"180":{"position":[[2575,3]]},"182":{"position":[[1830,3]]},"235":{"position":[[545,3],[1365,4],[1545,3]]},"306":{"position":[[5252,5]]}}}],["app\";import",{"_index":1364,"t":{"178":{"position":[[359,14]]}}}],["app'",{"_index":576,"t":{"60":{"position":[[130,5]]}}}],["app.j",{"_index":1489,"t":{"184":{"position":[[199,7],[246,6]]}}}],["app/sb/2023",{"_index":2033,"t":{"306":{"position":[[1370,12]]}}}],["appear",{"_index":1797,"t":{"239":{"position":[[5600,7]]},"626":{"position":[[1110,6]]},"754":{"position":[[217,6]]},"861":{"position":[[219,6]]},"1136":{"position":[[1099,6]]}}}],["appendix",{"_index":1737,"t":{"239":{"position":[[1444,8]]}}}],["appli",{"_index":262,"t":{"18":{"position":[[869,5]]},"22":{"position":[[435,7]]},"40":{"position":[[415,5]]},"71":{"position":[[684,7]]},"108":{"position":[[858,5]]},"188":{"position":[[477,8]]},"239":{"position":[[3717,7]]},"421":{"position":[[608,5]]},"795":{"position":[[122,8]]},"917":{"position":[[703,8],[737,7]]},"981":{"position":[[121,8]]}}}],["applic",{"_index":438,"t":{"48":{"position":[[79,11]]},"90":{"position":[[176,10]]},"122":{"position":[[224,12]]},"126":{"position":[[140,12],[502,12],[738,12]]},"138":{"position":[[2122,12]]},"156":{"position":[[2683,12]]},"158":{"position":[[1495,12]]},"168":{"position":[[118,12]]},"170":{"position":[[283,13],[301,12]]},"176":{"position":[[173,12]]},"180":{"position":[[1271,12],[1561,12]]},"188":{"position":[[1129,11]]},"194":{"position":[[470,11]]},"210":{"position":[[1087,11]]},"216":{"position":[[1643,11]]},"224":{"position":[[326,11],[639,11]]},"227":{"position":[[752,12]]},"229":{"position":[[105,11],[637,11],[1192,11],[2067,12]]},"233":{"position":[[440,11],[512,12]]},"235":{"position":[[78,11],[962,11]]},"239":{"position":[[7077,10],[7765,10]]},"447":{"position":[[254,12]]},"463":{"position":[[100,11]]},"570":{"position":[[101,12]]},"594":{"position":[[75,11],[165,11],[424,11]]},"596":{"position":[[119,12]]},"610":{"position":[[79,11],[167,11],[400,11]]},"622":{"position":[[75,11]]},"630":{"position":[[76,11],[152,12]]},"634":{"position":[[75,11]]},"819":{"position":[[784,11],[935,11],[1029,11]]}}}],["appreci",{"_index":1523,"t":{"188":{"position":[[443,13]]}}}],["approach",{"_index":688,"t":{"71":{"position":[[503,11]]}}}],["appropri",{"_index":1058,"t":{"126":{"position":[[848,11]]},"200":{"position":[[570,11]]},"206":{"position":[[819,11]]},"239":{"position":[[7477,15]]},"292":{"position":[[1162,11]]},"730":{"position":[[385,11]]},"777":{"position":[[328,11]]},"801":{"position":[[2353,11],[4374,11]]},"821":{"position":[[398,11]]},"939":{"position":[[340,11]]},"977":{"position":[[689,11]]},"1053":{"position":[[332,11],[787,11]]},"1159":{"position":[[1770,11]]}}}],["appropriate/receiv",{"_index":2982,"t":{"973":{"position":[[525,21]]}}}],["appscript",{"_index":2114,"t":{"310":{"position":[[168,12]]}}}],["arbitrari",{"_index":678,"t":{"71":{"position":[[247,9],[651,9]]},"76":{"position":[[792,9]]},"606":{"position":[[760,9]]},"618":{"position":[[524,9]]},"801":{"position":[[2097,9],[2965,9]]}}}],["architectur",{"_index":69,"t":{"6":{"position":[[375,12]]},"658":{"position":[[74,13]]}}}],["archiv",{"_index":2126,"t":{"312":{"position":[[165,9]]},"322":{"position":[[31,8]]},"348":{"position":[[446,11]]},"350":{"position":[[266,11],[453,11],[879,11],[1314,11]]},"686":{"position":[[164,8],[513,9],[550,8],[636,8],[683,8]]}}}],["archive_dir=./model",{"_index":2131,"t":{"314":{"position":[[93,21]]}}}],["archive_dir=./path/to/model",{"_index":2138,"t":{"322":{"position":[[128,30]]}}}],["archived\\\":tru",{"_index":2180,"t":{"348":{"position":[[68,19]]}}}],["aren't",{"_index":442,"t":{"48":{"position":[[196,6]]}}}],["arena",{"_index":203,"t":{"14":{"position":[[386,5]]},"803":{"position":[[1235,5]]}}}],["arg",{"_index":1999,"t":{"302":{"position":[[34,9],[375,5]]},"308":{"position":[[2122,8],[2174,7],[2276,5],[2315,5],[3175,5],[3213,5],[3335,6],[3374,6]]}}}],["arg1",{"_index":2087,"t":{"308":{"position":[[1673,4],[1747,5]]}}}],["arg2",{"_index":2088,"t":{"308":{"position":[[1678,4],[1753,4]]}}}],["arg3",{"_index":2089,"t":{"308":{"position":[[1683,4],[1762,5]]}}}],["args:.*{{.__2",{"_index":2108,"t":{"308":{"position":[[3409,17]]}}}],["args_out",{"_index":2098,"t":{"308":{"position":[[2091,9],[3137,9]]}}}],["arguabl",{"_index":2426,"t":{"520":{"position":[[0,8]]}}}],["argument",{"_index":979,"t":{"114":{"position":[[308,9]]},"116":{"position":[[1067,9]]},"130":{"position":[[613,8]]},"134":{"position":[[1226,8]]},"180":{"position":[[1854,10],[1980,8],[2115,10]]},"202":{"position":[[874,8]]},"212":{"position":[[947,8]]},"216":{"position":[[650,9]]},"302":{"position":[[391,9],[476,9]]},"308":{"position":[[1518,9],[1551,9],[1901,8],[1941,9],[2378,9],[2421,9],[2505,9],[2641,8],[2701,9],[2834,10],[2871,8],[2920,9],[3005,8],[3049,9]]},"833":{"position":[[118,8]]},"919":{"position":[[147,8]]},"933":{"position":[[144,8]]},"943":{"position":[[109,8]]},"949":{"position":[[135,8]]},"993":{"position":[[175,8]]},"1005":{"position":[[175,8]]},"1152":{"position":[[286,8]]},"1159":{"position":[[1617,8]]},"1163":{"position":[[701,8]]}}}],["argumentmy_controller.get_trial_info(\"my_trial_id",{"_index":987,"t":{"116":{"position":[[271,51]]}}}],["argumentmy_controller.terminate_trial(trial_id=\"my_trial_id",{"_index":985,"t":{"116":{"position":[[191,62]]}}}],["aris",{"_index":1831,"t":{"239":{"position":[[8000,7]]},"526":{"position":[[184,6]]}}}],["around",{"_index":137,"t":{"12":{"position":[[17,6]]},"108":{"position":[[848,6]]},"156":{"position":[[471,7]]},"210":{"position":[[1289,6]]}}}],["array",{"_index":1410,"t":{"180":{"position":[[1615,5]]},"415":{"position":[[809,5]]}}}],["arriv",{"_index":2514,"t":{"564":{"position":[[309,7]]},"730":{"position":[[610,6]]},"756":{"position":[[502,7]]},"775":{"position":[[506,7]]},"787":{"position":[[594,8]]},"923":{"position":[[583,7]]},"927":{"position":[[107,6]]},"937":{"position":[[511,7]]},"1007":{"position":[[69,7]]},"1154":{"position":[[157,7]]}}}],["arrow",{"_index":1472,"t":{"182":{"position":[[799,5],[1365,5]]}}}],["artifici",{"_index":1850,"t":{"239":{"position":[[8983,10]]}}}],["ask",{"_index":23,"t":{"2":{"position":[[308,3]]},"8":{"position":[[204,3]]}}}],["aspect",{"_index":391,"t":{"36":{"position":[[177,6]]},"738":{"position":[[41,7]]},"762":{"position":[[28,7]]},"829":{"position":[[41,7]]},"907":{"position":[[28,7]]}}}],["assert",{"_index":1848,"t":{"239":{"position":[[8862,8]]}}}],["assign",{"_index":1979,"t":{"298":{"position":[[157,8]]},"560":{"position":[[408,6]]},"686":{"position":[[377,8]]}}}],["associ",{"_index":584,"t":{"60":{"position":[[644,10]]},"126":{"position":[[817,10]]},"128":{"position":[[260,10]]},"134":{"position":[[1347,9]]},"202":{"position":[[961,9]]},"239":{"position":[[7550,10]]},"255":{"position":[[839,10]]},"267":{"position":[[407,10]]},"292":{"position":[[796,10]]},"536":{"position":[[864,10]]},"554":{"position":[[5,10]]},"556":{"position":[[5,10],[225,10]]},"560":{"position":[[308,10]]},"640":{"position":[[188,10]]},"684":{"position":[[31,10],[196,10]]},"686":{"position":[[30,10],[1025,10]]},"740":{"position":[[121,10]]},"801":{"position":[[270,10]]},"811":{"position":[[4892,10]]},"831":{"position":[[104,10]]},"845":{"position":[[319,10]]},"847":{"position":[[495,10]]},"849":{"position":[[610,10]]},"851":{"position":[[357,10]]},"899":{"position":[[37,10]]},"901":{"position":[[31,10],[169,10]]},"991":{"position":[[48,10]]},"1003":{"position":[[48,10]]},"1027":{"position":[[152,10]]},"1029":{"position":[[588,10]]},"1089":{"position":[[591,10]]},"1091":{"position":[[591,10]]},"1093":{"position":[[591,10]]},"1095":{"position":[[438,10]]},"1097":{"position":[[438,10]]},"1100":{"position":[[107,10]]}}}],["assum",{"_index":439,"t":{"48":{"position":[[114,7],[538,8]]},"239":{"position":[[7533,6]]},"296":{"position":[[1303,7]]},"526":{"position":[[739,6],[839,6]]},"999":{"position":[[292,7]]},"1074":{"position":[[159,7]]}}}],["async",{"_index":518,"t":{"54":{"position":[[847,5],[1145,5]]},"58":{"position":[[589,5],[730,5],[1535,5]]},"68":{"position":[[193,5]]},"73":{"position":[[279,5]]},"78":{"position":[[289,5]]},"80":{"position":[[922,5]]},"90":{"position":[[1801,5]]},"134":{"position":[[628,5]]},"138":{"position":[[2739,5]]},"156":{"position":[[1246,5]]},"182":{"position":[[742,5],[1463,5]]},"190":{"position":[[654,5],[748,5]]},"216":{"position":[[919,5],[5579,5]]},"746":{"position":[[108,5]]},"845":{"position":[[114,5]]},"847":{"position":[[108,5]]},"849":{"position":[[374,5]]},"851":{"position":[[245,5]]},"1108":{"position":[[523,5],[681,5]]},"1110":{"position":[[273,5]]},"1112":{"position":[[244,5]]},"1116":{"position":[[531,5],[951,5]]},"1157":{"position":[[393,5],[837,5]]},"1159":{"position":[[180,5]]},"1161":{"position":[[180,5]]},"1163":{"position":[[291,5]]},"1165":{"position":[[287,5],[325,5]]}}}],["asyncgeneratorrockpaperscissors=2.0.2",{"_index":889,"t":{"94":{"position":[[644,24]]}}}],["cogment_actor_port",{"_index":971,"t":{"112":{"position":[[144,20]]},"494":{"position":[[181,18]]}}}],["cogment_actor_port=12000",{"_index":2219,"t":{"362":{"position":[[394,25]]}}}],["cogment_app.messag",{"_index":762,"t":{"78":{"position":[[962,21]]}}}],["cogment_app.message\");actorsession.sendmessag",{"_index":740,"t":{"76":{"position":[[581,49]]}}}],["cogment_client_console_output=text",{"_index":2299,"t":{"413":{"position":[[1318,35]]}}}],["cogment_client_timeout=90",{"_index":1865,"t":{"245":{"position":[[344,27]]},"413":{"position":[[859,27]]}}}],["cogment_default_params_file=./path/to/params.yaml",{"_index":2228,"t":{"366":{"position":[[566,50]]}}}],["cogment_directory_authentication_token",{"_index":2891,"t":{"831":{"position":[[1276,38]]},"1100":{"position":[[875,38]]}}}],["cogment_directory_authentication_token=\"project",{"_index":1207,"t":{"150":{"position":[[361,47]]}}}],["cogment_directory_authentication_token=gh670plot",{"_index":1872,"t":{"249":{"position":[[352,49]]},"334":{"position":[[352,49]]},"370":{"position":[[352,49]]},"401":{"position":[[311,49]]},"441":{"position":[[352,49]]},"471":{"position":[[352,49]]}}}],["cogment_directory_check_on_inquire=1",{"_index":1948,"t":{"290":{"position":[[497,37]]}}}],["cogment_directory_endpoint",{"_index":1155,"t":{"144":{"position":[[658,27]]},"306":{"position":[[4711,27]]},"310":{"position":[[102,27]]},"831":{"position":[[918,26]]},"1100":{"position":[[517,26]]}}}],["cogment_directory_endpoint=grpc://foo:9005",{"_index":1868,"t":{"247":{"position":[[188,43]]},"332":{"position":[[482,43]]},"368":{"position":[[636,43]]},"399":{"position":[[270,43]]},"439":{"position":[[502,43]]},"469":{"position":[[504,43]]}}}],["cogment_directory_grpc_reflection=1",{"_index":1919,"t":{"278":{"position":[[173,36]]}}}],["cogment_directory_load_balancing=1",{"_index":1942,"t":{"288":{"position":[[165,35]]}}}],["cogment_directory_persistence_fil",{"_index":1940,"t":{"286":{"position":[[300,35]]}}}],["cogment_directory_port",{"_index":1915,"t":{"276":{"position":[[196,23]]},"310":{"position":[[373,23]]}}}],["cogment_directory_port=9005cogment_lifecycle_port=9000cogment_actor_port=9000",{"_index":1210,"t":{"152":{"position":[[159,77]]}}}],["cogment_directory_registration_lag",{"_index":1934,"t":{"284":{"position":[[473,35]]}}}],["cogment_enterprise.runn",{"_index":3052,"t":{"1080":{"position":[[37,26]]}}}],["cogment_enterprise.runner.batch_last_trial_properti",{"_index":3061,"t":{"1087":{"position":[[338,51]]}}}],["cogment_enterprise.runner.trialrunn",{"_index":3053,"t":{"1080":{"position":[[110,38]]}}}],["cogment_enterprise_log_level",{"_index":3048,"t":{"1076":{"position":[[261,28]]}}}],["cogment_enterpriseimport",{"_index":3046,"t":{"1076":{"position":[[131,24]]}}}],["cogment_gc_frequency=5",{"_index":2269,"t":{"390":{"position":[[337,23]]}}}],["cogment_lifecycle_port",{"_index":969,"t":{"112":{"position":[[91,24]]},"306":{"position":[[2146,23]]},"310":{"position":[[638,23]]},"494":{"position":[[133,22]]}}}],["cogment_lifecycle_port=12000",{"_index":2215,"t":{"360":{"position":[[368,29]]}}}],["cogment_log_file=./path/to/cogment.log",{"_index":1929,"t":{"282":{"position":[[269,39]]},"330":{"position":[[268,39]]},"394":{"position":[[268,39]]},"437":{"position":[[268,39]]},"467":{"position":[[268,39]]}}}],["cogment_log_level",{"_index":2063,"t":{"306":{"position":[[4687,18]]},"310":{"position":[[63,18]]},"819":{"position":[[239,17]]}}}],["cogment_log_level=5",{"_index":2150,"t":{"328":{"position":[[335,20]]},"435":{"position":[[335,20]]},"465":{"position":[[335,20]]}}}],["cogment_log_level=debug",{"_index":2270,"t":{"392":{"position":[[335,24]]}}}],["cogment_log_level=info",{"_index":1924,"t":{"280":{"position":[[205,23]]}}}],["cogment_model_registry_archive_dir=./path/to/model",{"_index":2139,"t":{"322":{"position":[[189,53]]}}}],["cogment_model_registry_directory_registration_host=foo.bar",{"_index":2155,"t":{"336":{"position":[[510,59]]},"473":{"position":[[500,59]]}}}],["cogment_model_registry_directory_registration_properties=\"sim=20,hpp,mem=high",{"_index":2159,"t":{"338":{"position":[[456,79]]},"475":{"position":[[451,79]]}}}],["cogment_model_registry_grpc_reflect",{"_index":2160,"t":{"340":{"position":[[39,38]]},"346":{"position":[[23,38]]}}}],["cogment_model_registry_grpc_reflection=1",{"_index":2136,"t":{"320":{"position":[[162,41]]}}}],["cogment_model_registry_port=12000",{"_index":2133,"t":{"318":{"position":[[272,34]]}}}],["cogment_model_registry_sent_model_version_data_chunk_size=100000",{"_index":2147,"t":{"326":{"position":[[205,65]]}}}],["cogment_model_registry_version_cache_max_items=500",{"_index":2143,"t":{"324":{"position":[[197,51]]}}}],["cogment_orchestrator_actor_port",{"_index":2039,"t":{"306":{"position":[[2108,32]]},"310":{"position":[[603,32]]}}}],["cogment_orchestrator_directory_auto_register=0",{"_index":2231,"t":{"372":{"position":[[395,47]]}}}],["cogment_orchestrator_directory_registration_host=foo.bar",{"_index":2232,"t":{"374":{"position":[[507,57]]}}}],["cogment_orchestrator_directory_registration_properties=\"sim=20,hpp,mem=high",{"_index":2233,"t":{"376":{"position":[[455,77]]}}}],["cogment_orchestrator_endpoint=grpc://foo:9005",{"_index":2361,"t":{"455":{"position":[[316,46]]}}}],["cogment_orchestrator_prometheus_port",{"_index":973,"t":{"112":{"position":[[192,38]]},"494":{"position":[[224,36]]}}}],["cogment_orchestrator_prometheus_port=8000",{"_index":2245,"t":{"380":{"position":[[258,42]]}}}],["cogment_pre_trial_hooks=\"grpc://foo:9000",{"_index":2240,"t":{"378":{"position":[[664,40]]}}}],["cogment_private_key_file=./path/to/key.pem",{"_index":2257,"t":{"384":{"position":[[186,43]]}}}],["cogment_root_cert_file=./path/to/cert.pem",{"_index":2260,"t":{"386":{"position":[[172,42]]}}}],["cogment_spec_file=./path/to/cogment.yaml",{"_index":2364,"t":{"459":{"position":[[301,41]]}}}],["cogment_status_file=./path/to/statu",{"_index":2252,"t":{"382":{"position":[[785,37]]}}}],["cogment_trial_datastore_directory_registration_host=foo.bar",{"_index":2347,"t":{"443":{"position":[[513,60]]}}}],["cogment_trial_datastore_directory_registration_properties=\"sim=20,hpp,mem=high",{"_index":2348,"t":{"445":{"position":[[458,80]]}}}],["cogment_trial_datastore_endpoint=grpc://trial_datastore:9003",{"_index":2292,"t":{"413":{"position":[[321,61]]}}}],["cogment_trial_datastore_file_storage_path=./path/to/trial_datastore.db",{"_index":2346,"t":{"433":{"position":[[332,71]]}}}],["cogment_trial_datastore_grpc_reflection=1",{"_index":2337,"t":{"429":{"position":[[162,42]]}}}],["cogment_trial_datastore_memory_storage_max_sample_size=100000000",{"_index":2340,"t":{"431":{"position":[[276,65]]}}}],["cogment_trial_datastore_port=12000",{"_index":2335,"t":{"427":{"position":[[581,35]]}}}],["cogment_trust_chain_file=./path/to/chain.pem",{"_index":2263,"t":{"388":{"position":[[162,45]]}}}],["cogment_web_proxy_implementation=my_implement",{"_index":2366,"t":{"461":{"position":[[187,51]]}}}],["cogment_web_proxy_port=12000",{"_index":2223,"t":{"364":{"position":[[252,29]]},"457":{"position":[[271,29]]}}}],["cogment_web_proxy_secret=rosebud",{"_index":2368,"t":{"463":{"position":[[223,33]]}}}],["cogment_web_proxy_web_port=8",{"_index":2356,"t":{"453":{"position":[[146,30]]}}}],["cogmentapi.modelregistrysp/createorupdatemodel",{"_index":2166,"t":{"342":{"position":[[138,48]]}}}],["cogmentapi.modelregistrysp/createvers",{"_index":2188,"t":{"348":{"position":[[310,41]]}}}],["cogmentapi.modelregistrysp/deletemodel",{"_index":2168,"t":{"344":{"position":[[78,40]]}}}],["cogmentapi.modelregistrysp/retrievemodel",{"_index":2169,"t":{"346":{"position":[[165,42],[507,42]]}}}],["cogmentapi.modelregistrysp/retrieveversioninfo",{"_index":2196,"t":{"350":{"position":[[110,48],[723,48],[1158,48]]}}}],["cogmentapi.retrievetrialsrepli",{"_index":2303,"t":{"415":{"position":[[1251,30]]}}}],["cogmentapi.storedtrialsampl",{"_index":2315,"t":{"419":{"position":[[856,28]]}}}],["cogmentapi.trialparam",{"_index":2755,"t":{"724":{"position":[[459,24]]}}}],["cogmentapi.trialsamplesfilehead",{"_index":2314,"t":{"419":{"position":[[710,33]]}}}],["cogmentapi.trialst",{"_index":792,"t":{"82":{"position":[[264,21]]}}}],["cogmentapi.versioninfo",{"_index":2754,"t":{"724":{"position":[[235,24]]}}}],["cogmentimport",{"_index":2861,"t":{"819":{"position":[[127,13],[1148,13]]}}}],["cogmenttrials001",{"_index":2313,"t":{"419":{"position":[[690,17]]}}}],["cogrun",{"_index":2110,"t":{"310":{"position":[[31,7]]}}}],["cogset",{"_index":1397,"t":{"180":{"position":[[625,14],[842,11],[2126,12],[2641,12]]},"182":{"position":[[286,13],[1586,13]]},"736":{"position":[[139,11],[226,11]]},"740":{"position":[[70,12],[161,12]]}}}],["cogsettings\";//thes",{"_index":1401,"t":{"180":{"position":[[861,23]]}}}],["cogsettings';import",{"_index":2760,"t":{"736":{"position":[[245,22]]}}}],["cogsettings.d.t",{"_index":500,"t":{"52":{"position":[[790,17]]}}}],["cogsettings.d.ts.map",{"_index":501,"t":{"52":{"position":[[808,20]]}}}],["cogsettings.j",{"_index":499,"t":{"52":{"position":[[774,15]]},"180":{"position":[[2168,15]]},"734":{"position":[[285,14]]}}}],["cogtypes.d.t",{"_index":502,"t":{"52":{"position":[[833,13]]}}}],["collat",{"_index":689,"t":{"71":{"position":[[550,7]]},"73":{"position":[[96,8]]}}}],["collect",{"_index":2265,"t":{"390":{"position":[[49,11],[191,10]]},"522":{"position":[[95,11]]}}}],["color",{"_index":1357,"t":{"178":{"position":[[226,6]]},"306":{"position":[[3974,6]]}}}],["color={theme.palette.primary.main",{"_index":1496,"t":{"184":{"position":[[407,34]]}}}],["color={theme.palette.secondary.main",{"_index":1501,"t":{"184":{"position":[[522,36]]}}}],["coma",{"_index":911,"t":{"98":{"position":[[411,6]]}}}],["combin",{"_index":1548,"t":{"198":{"position":[[370,12]]},"239":{"position":[[3852,11]]},"292":{"position":[[352,11]]},"318":{"position":[[149,11]]},"360":{"position":[[235,11]]},"362":{"position":[[265,11]]},"427":{"position":[[458,11]]},"457":{"position":[[148,11]]},"500":{"position":[[1151,8]]},"785":{"position":[[86,11]]},"969":{"position":[[86,11]]}}}],["come",{"_index":18,"t":{"2":{"position":[[268,4]]},"28":{"position":[[280,4]]},"732":{"position":[[25,4]]},"823":{"position":[[25,4]]},"1116":{"position":[[717,4]]}}}],["comma",{"_index":2236,"t":{"378":{"position":[[405,7]]}}}],["command",{"_index":904,"t":{"96":{"position":[[1061,7]]},"98":{"position":[[115,7]]},"110":{"position":[[454,8]]},"124":{"position":[[1600,9]]},"142":{"position":[[39,7],[407,7],[629,7]]},"144":{"position":[[506,7],[969,7]]},"152":{"position":[[696,8]]},"158":{"position":[[1878,7]]},"166":{"position":[[232,9]]},"168":{"position":[[242,8],[449,8]]},"170":{"position":[[1074,8],[2350,8]]},"174":{"position":[[440,7]]},"182":{"position":[[1873,8]]},"224":{"position":[[381,8]]},"229":{"position":[[1758,7],[2355,7]]},"235":{"position":[[567,8],[605,7],[753,8]]},"241":{"position":[[66,7]]},"245":{"position":[[274,7]]},"247":{"position":[[94,7]]},"249":{"position":[[252,7]]},"251":{"position":[[5,7]]},"257":{"position":[[5,7]]},"263":{"position":[[5,7]]},"271":{"position":[[658,7]]},"276":{"position":[[132,7]]},"278":{"position":[[98,7]]},"280":{"position":[[130,7]]},"282":{"position":[[179,7]]},"284":{"position":[[397,7]]},"286":{"position":[[224,7]]},"288":{"position":[[91,7]]},"290":{"position":[[421,7]]},"300":{"position":[[20,7]]},"306":{"position":[[274,8],[315,7],[364,7],[446,7],[555,9],[668,9],[1821,7],[2042,8],[2175,9],[2374,7],[2602,9],[2955,9],[3636,9],[3770,9],[4905,7]]},"308":{"position":[[78,9],[817,9],[1425,7],[1570,7],[1927,7],[2021,7],[2101,9],[2438,7],[2540,7],[2633,7],[2733,8],[2863,7],[2938,8],[3147,9]]},"310":{"position":[[187,9],[432,9],[688,9],[804,9],[900,9]]},"316":{"position":[[69,7]]},"318":{"position":[[202,7]]},"320":{"position":[[89,7]]},"322":{"position":[[100,7]]},"324":{"position":[[118,7]]},"326":{"position":[[115,7]]},"328":{"position":[[260,7]]},"330":{"position":[[178,7]]},"332":{"position":[[388,7]]},"334":{"position":[[252,7]]},"336":{"position":[[415,7]]},"338":{"position":[[341,7]]},"358":{"position":[[67,7]]},"360":{"position":[[288,7]]},"362":{"position":[[318,7]]},"364":{"position":[[173,7]]},"366":{"position":[[478,7]]},"368":{"position":[[542,7]]},"370":{"position":[[252,7]]},"372":{"position":[[310,7]]},"374":{"position":[[412,7]]},"376":{"position":[[340,7]]},"378":{"position":[[347,7]]},"380":{"position":[[178,7]]},"382":{"position":[[697,7]]},"384":{"position":[[97,7]]},"386":{"position":[[84,7]]},"388":{"position":[[71,7]]},"390":{"position":[[263,7]]},"392":{"position":[[260,7]]},"394":{"position":[[178,7]]},"396":{"position":[[20,7]]},"399":{"position":[[176,7]]},"401":{"position":[[211,7]]},"403":{"position":[[302,9],[335,7]]},"405":{"position":[[284,7]]},"407":{"position":[[531,7]]},"409":{"position":[[237,7],[347,7]]},"411":{"position":[[36,7],[259,9],[314,9]]},"413":{"position":[[56,9],[107,7],[228,7],[789,7],[960,7],[1239,7]]},"415":{"position":[[367,7],[647,7],[756,7]]},"417":{"position":[[203,7]]},"419":{"position":[[472,7],[1091,7],[1491,7]]},"421":{"position":[[452,7],[761,7],[919,7],[1003,7]]},"425":{"position":[[70,7]]},"427":{"position":[[511,7]]},"429":{"position":[[89,7]]},"431":{"position":[[175,7]]},"433":{"position":[[135,7],[231,7]]},"435":{"position":[[260,7]]},"437":{"position":[[178,7]]},"439":{"position":[[408,7]]},"441":{"position":[[252,7]]},"443":{"position":[[418,7]]},"445":{"position":[[343,7]]},"451":{"position":[[64,7]]},"453":{"position":[[75,7]]},"455":{"position":[[219,7]]},"457":{"position":[[201,7]]},"459":{"position":[[209,7]]},"461":{"position":[[95,7]]},"463":{"position":[[149,7]]},"465":{"position":[[260,7]]},"467":{"position":[[178,7]]},"469":{"position":[[410,7]]},"471":{"position":[[252,7]]},"473":{"position":[[405,7]]},"475":{"position":[[336,7]]},"494":{"position":[[403,7]]},"498":{"position":[[451,7]]},"500":{"position":[[143,8],[885,7]]},"510":{"position":[[208,8],[487,9],[519,8]]},"514":{"position":[[37,8],[98,8],[111,8],[178,8],[191,8],[255,9],[274,8],[368,9],[727,9],[753,7],[925,8],[956,7],[1011,7],[1042,8]]},"630":{"position":[[249,7]]},"805":{"position":[[955,7]]},"811":{"position":[[4276,7]]},"823":{"position":[[62,8]]}}}],["command_lin",{"_index":1906,"t":{"263":{"position":[[437,13]]}}}],["comment",{"_index":131,"t":{"10":{"position":[[689,7]]}}}],["commerci",{"_index":1837,"t":{"239":{"position":[[8212,10]]},"1071":{"position":[[74,10]]}}}],["common",{"_index":462,"t":{"50":{"position":[[520,6]]},"54":{"position":[[718,6]]},"239":{"position":[[397,6]]},"243":{"position":[[44,7]]},"528":{"position":[[12,6]]},"762":{"position":[[74,6]]},"907":{"position":[[74,6]]},"1152":{"position":[[213,6]]},"1163":{"position":[[628,6]]}}}],["common.proto",{"_index":2459,"t":{"528":{"position":[[47,12]]},"602":{"position":[[215,12]]},"604":{"position":[[136,12]]}}}],["commun",{"_index":17,"t":{"2":{"position":[[254,9]]},"10":{"position":[[463,10]]},"32":{"position":[[435,11],[476,11]]},"38":{"position":[[60,13]]},"42":{"position":[[238,13]]},"146":{"position":[[1385,11]]},"150":{"position":[[14,14]]},"170":{"position":[[384,11]]},"229":{"position":[[897,13]]},"239":{"position":[[2372,13],[2460,13],[2678,13]]},"384":{"position":[[59,14]]},"512":{"position":[[314,11]]},"522":{"position":[[22,13],[177,13]]},"526":{"position":[[114,13]]},"556":{"position":[[23,13]]},"568":{"position":[[31,13],[307,13],[1075,13]]},"602":{"position":[[457,13],[560,13]]},"604":{"position":[[371,13],[475,13]]},"606":{"position":[[12,13]]},"608":{"position":[[12,13]]},"614":{"position":[[406,13],[509,13]]},"616":{"position":[[359,13],[463,13]]},"618":{"position":[[12,13]]},"620":{"position":[[12,13]]},"642":{"position":[[230,13]]},"775":{"position":[[347,13]]},"835":{"position":[[28,13]]},"923":{"position":[[348,13]]},"937":{"position":[[348,13]]}}}],["communicationst",{"_index":2517,"t":{"568":{"position":[[83,18]]},"602":{"position":[[263,18]]},"604":{"position":[[185,18]]},"614":{"position":[[236,18]]},"616":{"position":[[158,18]]}}}],["compar",{"_index":1276,"t":{"158":{"position":[[1570,9]]},"186":{"position":[[163,7],[927,7]]},"208":{"position":[[1371,8]]},"596":{"position":[[543,8]]}}}],["compat",{"_index":878,"t":{"94":{"position":[[301,10]]},"508":{"position":[[850,15]]},"524":{"position":[[524,11]]}}}],["compil",{"_index":476,"t":{"52":{"position":[[85,9]]},"239":{"position":[[1139,8]]},"328":{"position":[[199,8]]},"392":{"position":[[199,8]]},"435":{"position":[[199,8]]},"465":{"position":[[199,8]]},"732":{"position":[[483,9],[607,8]]},"734":{"position":[[330,8]]},"825":{"position":[[84,8],[399,7],[612,8]]}}}],["complet",{"_index":1000,"t":{"118":{"position":[[17,8]]},"134":{"position":[[337,9],[427,8]]},"136":{"position":[[1222,9]]},"154":{"position":[[124,9]]},"156":{"position":[[2119,11]]},"160":{"position":[[124,9]]},"184":{"position":[[43,9]]},"212":{"position":[[444,8]]},"222":{"position":[[216,9],[423,9]]},"227":{"position":[[149,10]]},"682":{"position":[[231,12]]},"831":{"position":[[554,10]]}}}],["completed2023",{"_index":2034,"t":{"306":{"position":[[1426,13]]}}}],["complex",{"_index":933,"t":{"104":{"position":[[542,7]]},"140":{"position":[[571,7]]}}}],["compli",{"_index":1801,"t":{"239":{"position":[[6262,8]]}}}],["complic",{"_index":1135,"t":{"140":{"position":[[546,11]]},"905":{"position":[[612,11]]}}}],["compon",{"_index":179,"t":{"12":{"position":[[739,10]]},"22":{"position":[[538,10]]},"26":{"position":[[539,9]]},"32":{"position":[[104,10],[338,10],[424,10]]},"44":{"position":[[19,10]]},"46":{"position":[[40,9],[100,9]]},"84":{"position":[[299,11]]},"88":{"position":[[451,11],[1459,9],[1676,10],[1989,11]]},"94":{"position":[[14,10],[539,10],[593,10]]},"124":{"position":[[2120,10]]},"128":{"position":[[357,10]]},"140":{"position":[[418,10]]},"144":{"position":[[94,11],[225,10],[1156,10]]},"168":{"position":[[147,10]]},"178":{"position":[[840,11]]},"180":{"position":[[1485,10],[1517,9]]},"198":{"position":[[745,10]]},"210":{"position":[[913,10]]},"216":{"position":[[1947,10]]},"218":{"position":[[212,10]]},"235":{"position":[[41,11]]},"284":{"position":[[170,10],[228,10],[259,9]]},"382":{"position":[[146,11]]},"447":{"position":[[177,11]]},"498":{"position":[[82,11]]},"512":{"position":[[346,10],[474,11]]},"526":{"position":[[65,11],[307,11],[655,10]]},"566":{"position":[[357,10]]},"568":{"position":[[947,9],[972,10],[1171,10]]},"574":{"position":[[321,11]]},"622":{"position":[[143,9]]},"760":{"position":[[149,9]]},"801":{"position":[[737,10]]},"835":{"position":[[68,10],[387,11]]},"867":{"position":[[134,9]]},"963":{"position":[[196,10]]},"1007":{"position":[[154,10]]}}}],["component/send",{"_index":2508,"t":{"558":{"position":[[58,17]]}}}],["compos",{"_index":2309,"t":{"419":{"position":[[588,8]]},"514":{"position":[[618,7],[686,7]]},"811":{"position":[[4978,8]]}}}],["compose.yml",{"_index":881,"t":{"94":{"position":[[392,11]]}}}],["comput",{"_index":198,"t":{"14":{"position":[[270,8]]},"20":{"position":[[150,8]]},"24":{"position":[[54,12],[138,13],[445,7],[1164,13]]},"26":{"position":[[1102,13]]},"62":{"position":[[902,12]]},"124":{"position":[[557,13],[712,13],[849,12],[2347,12]]},"126":{"position":[[828,12]]},"180":{"position":[[1793,8],[4939,8]]},"198":{"position":[[608,8],[664,12],[892,12],[960,12]]},"208":{"position":[[767,7],[1296,8],[1830,9]]},"216":{"position":[[2784,7],[3443,9]]},"239":{"position":[[8158,8]]},"409":{"position":[[485,12]]},"558":{"position":[[511,9]]},"560":{"position":[[708,8]]},"672":{"position":[[429,8]]},"698":{"position":[[507,9]]}}}],["computer'",{"_index":1451,"t":{"180":{"position":[[4696,10]]}}}],["concaten",{"_index":2676,"t":{"672":{"position":[[634,13]]},"682":{"position":[[213,13]]}}}],["concept",{"_index":138,"t":{"12":{"position":[[24,8],[224,8]]},"28":{"position":[[185,8]]},"48":{"position":[[167,9]]},"124":{"position":[[24,7],[2054,9]]},"126":{"position":[[60,8]]},"138":{"position":[[2451,8]]},"186":{"position":[[431,7]]},"218":{"position":[[332,9]]},"229":{"position":[[490,7]]}}}],["concern",{"_index":704,"t":{"73":{"position":[[416,9],[927,9]]},"106":{"position":[[258,10]]},"308":{"position":[[382,9]]}}}],["conclud",{"_index":1279,"t":{"158":{"position":[[1648,9]]},"194":{"position":[[764,9]]}}}],["concurr",{"_index":1041,"t":{"124":{"position":[[804,13]]},"817":{"position":[[34,12]]}}}],["condit",{"_index":1659,"t":{"216":{"position":[[4696,10],[4986,9]]},"229":{"position":[[2552,9]]},"239":{"position":[[51,10],[3039,10],[3419,10],[4525,11],[6072,10],[6280,10],[6505,10],[6565,11],[7237,10],[7337,10]]}}}],["conduct",{"_index":122,"t":{"10":{"position":[[514,7]]}}}],["confid",{"_index":685,"t":{"71":{"position":[[395,10],[453,10],[492,10],[522,10]]},"188":{"position":[[345,11],[515,10]]},"558":{"position":[[200,10],[470,11]]},"698":{"position":[[207,10],[466,11]]},"797":{"position":[[85,11],[106,10]]},"917":{"position":[[165,11]]},"987":{"position":[[117,11],[137,10]]},"1065":{"position":[[105,11],[125,10]]}}}],["confidence=1",{"_index":675,"t":{"71":{"position":[[177,13]]},"188":{"position":[[647,13],[721,13],[853,13],[926,13]]}}}],["config",{"_index":766,"t":{"80":{"position":[[297,7],[981,6],[1398,9],[1516,9]]},"90":{"position":[[1066,6],[1228,6],[1453,7],[1597,8],[2348,9]]},"104":{"position":[[4,6],[208,7],[271,7],[370,6]]},"116":{"position":[[763,6]]},"120":{"position":[[537,6],[757,6]]},"486":{"position":[[258,6]]},"488":{"position":[[362,6]]},"544":{"position":[[128,6],[279,6]]},"546":{"position":[[184,6],[607,6]]},"548":{"position":[[60,7],[407,7]]},"574":{"position":[[111,6],[201,7],[219,6],[294,6]]},"606":{"position":[[505,6],[886,7]]},"618":{"position":[[333,6],[815,7]]},"750":{"position":[[171,7]]},"799":{"position":[[373,6],[438,6],[500,7],[580,6],[747,7]]},"801":{"position":[[0,7],[2188,7]]},"803":{"position":[[125,7]]},"805":{"position":[[547,6]]},"857":{"position":[[33,6],[247,6],[425,7],[469,6]]},"919":{"position":[[317,7]]},"933":{"position":[[441,7]]},"989":{"position":[[146,7],[381,7],[518,6],[925,6]]},"1001":{"position":[[156,8],[384,7],[571,6]]},"1093":{"position":[[680,6],[738,6],[759,6]]},"1095":{"position":[[527,6],[572,6],[593,6]]},"1097":{"position":[[527,6],[566,6],[587,6]]}}}],["config.yaml",{"_index":2759,"t":{"734":{"position":[[247,11]]}}}],["config=cogment.yaml",{"_index":901,"t":{"96":{"position":[[918,19]]},"494":{"position":[[424,20]]}}}],["config_seri",{"_index":2992,"t":{"989":{"position":[[491,18]]},"1001":{"position":[[544,18]]}}}],["config_typ",{"_index":2424,"t":{"516":{"position":[[98,12],[225,12]]},"518":{"position":[[83,12],[180,12]]},"520":{"position":[[671,12],[978,12],[1120,12],[1260,12]]}}}],["configur",{"_index":240,"t":{"18":{"position":[[91,10]]},"30":{"position":[[818,14]]},"50":{"position":[[149,13],[926,12]]},"66":{"position":[[606,13]]},"80":{"position":[[458,15],[583,14],[702,9]]},"90":{"position":[[320,13],[432,11],[568,9]]},"96":{"position":[[494,9]]},"100":{"position":[[51,13],[338,11]]},"104":{"position":[[58,13],[482,13]]},"128":{"position":[[335,9]]},"156":{"position":[[1629,13]]},"170":{"position":[[104,9]]},"212":{"position":[[149,10],[786,10],[1022,9]]},"214":{"position":[[568,13],[645,10],[754,13]]},"216":{"position":[[1908,14],[6105,10]]},"229":{"position":[[74,14],[587,14],[1281,13]]},"233":{"position":[[379,14]]},"239":{"position":[[981,13]]},"316":{"position":[[19,13]]},"358":{"position":[[17,13]]},"413":{"position":[[6,13]]},"415":{"position":[[222,14],[256,10]]},"419":{"position":[[232,14],[261,10]]},"421":{"position":[[251,14],[280,10]]},"425":{"position":[[20,13]]},"451":{"position":[[14,13]]},"455":{"position":[[127,14]]},"459":{"position":[[166,15]]},"510":{"position":[[352,9]]},"518":{"position":[[141,9]]},"520":{"position":[[737,9]]},"566":{"position":[[662,11]]},"606":{"position":[[898,13]]},"618":{"position":[[827,13]]},"750":{"position":[[226,13],[354,13]]},"758":{"position":[[26,10],[178,10]]},"781":{"position":[[459,11]]},"801":{"position":[[21,13],[1579,13],[2209,13]]},"803":{"position":[[183,13]]},"805":{"position":[[857,14]]},"857":{"position":[[138,13]]},"865":{"position":[[26,10],[189,10]]},"919":{"position":[[356,13],[428,13]]},"933":{"position":[[480,13],[546,13]]},"963":{"position":[[491,11]]}}}],["confirm",{"_index":1307,"t":{"168":{"position":[[691,7]]}}}],["conflict",{"_index":2086,"t":{"308":{"position":[[1276,11]]},"421":{"position":[[691,9]]},"508":{"position":[[222,9]]}}}],["confus",{"_index":1185,"t":{"146":{"position":[[3141,11]]}}}],["connect",{"_index":28,"t":{"2":{"position":[[363,10]]},"24":{"position":[[985,7],[1075,7]]},"30":{"position":[[30,10]]},"36":{"position":[[256,11]]},"60":{"position":[[785,7]]},"64":{"position":[[136,7]]},"68":{"position":[[105,8]]},"140":{"position":[[379,7]]},"156":{"position":[[195,8],[265,8],[1760,7]]},"170":{"position":[[459,11],[1716,7]]},"180":{"position":[[2928,9]]},"182":{"position":[[576,10],[1339,9]]},"235":{"position":[[337,8],[495,8]]},"269":{"position":[[27,10],[61,10]]},"276":{"position":[[97,7]]},"294":{"position":[[35,12],[355,10]]},"298":{"position":[[623,14],[1115,11],[1312,11],[1856,10],[2007,14]]},"360":{"position":[[91,8]]},"362":{"position":[[118,7]]},"480":{"position":[[231,11]]},"542":{"position":[[190,7]]},"544":{"position":[[214,7]]},"546":{"position":[[391,7],[517,7]]},"570":{"position":[[130,7]]},"594":{"position":[[135,8],[290,9],[510,7]]},"596":{"position":[[148,7],[351,9],[399,10]]},"604":{"position":[[617,10]]},"606":{"position":[[177,10],[328,10]]},"608":{"position":[[91,10],[281,7]]},"610":{"position":[[139,8],[483,7]]},"618":{"position":[[86,10]]},"622":{"position":[[228,7]]},"630":{"position":[[136,8],[218,7]]},"642":{"position":[[28,12],[382,10],[468,10],[801,7],[820,9],[874,7]]},"644":{"position":[[86,7],[183,10]]},"654":{"position":[[212,10]]},"742":{"position":[[124,10]]},"744":{"position":[[223,10]]},"801":{"position":[[3106,7]]},"807":{"position":[[262,7]]},"809":{"position":[[292,11]]},"811":{"position":[[346,7],[418,7],[3902,10],[4389,7]]},"835":{"position":[[361,10]]},"837":{"position":[[139,10]]},"839":{"position":[[132,10]]},"841":{"position":[[137,10]]},"843":{"position":[[236,10]]},"955":{"position":[[32,10],[91,7],[158,11],[265,10],[399,11],[529,11]]},"957":{"position":[[40,7]]},"959":{"position":[[32,10],[145,11],[242,12],[408,10]]},"961":{"position":[[92,11]]},"1100":{"position":[[1033,10],[1220,10],[1508,10]]},"1116":{"position":[[1188,10]]}}}],["connections.web_client_port=8000",{"_index":1317,"t":{"170":{"position":[[943,32]]}}}],["consequ",{"_index":168,"t":{"12":{"position":[[557,12]]},"14":{"position":[[650,11]]},"132":{"position":[[384,11]]},"198":{"position":[[213,12]]},"227":{"position":[[340,12]]}}}],["consequenti",{"_index":1829,"t":{"239":{"position":[[7961,13]]}}}],["consid",{"_index":1081,"t":{"132":{"position":[[642,9],[933,11]]},"146":{"position":[[905,8]]},"284":{"position":[[565,10]]},"292":{"position":[[499,10]]},"294":{"position":[[424,10]]},"296":{"position":[[609,10],[954,10]]},"298":{"position":[[542,10]]},"306":{"position":[[3453,10],[3557,10]]},"447":{"position":[[65,10]]},"801":{"position":[[3148,10],[3517,10]]},"875":{"position":[[762,10],[838,11]]},"879":{"position":[[360,8],[424,11],[568,11],[739,11]]},"925":{"position":[[124,10]]},"1120":{"position":[[173,10]]},"1126":{"position":[[129,10]]}}}],["consist",{"_index":506,"t":{"54":{"position":[[156,8]]},"71":{"position":[[233,7]]},"76":{"position":[[778,7]]},"239":{"position":[[8563,10]]},"298":{"position":[[403,8]]},"304":{"position":[[125,8]]},"803":{"position":[[210,8]]}}}],["console.log(`th",{"_index":669,"t":{"68":{"position":[[442,16]]}}}],["console.log(`tri",{"_index":574,"t":{"58":{"position":[[2364,18]]}}}],["console_output",{"_index":2294,"t":{"413":{"position":[[920,15]]}}}],["console_output=json",{"_index":2298,"t":{"413":{"position":[[1267,20]]}}}],["conspicu",{"_index":1754,"t":{"239":{"position":[[2700,13]]}}}],["const",{"_index":566,"t":{"58":{"position":[[1515,5],[1675,6],[2028,6],[2184,6]]},"60":{"position":[[1161,5]]},"64":{"position":[[355,5]]},"66":{"position":[[215,5]]},"68":{"position":[[361,6]]},"73":{"position":[[783,6],[840,6],[937,5],[1024,5],[1138,5],[1178,5],[1228,5],[1274,5]]},"76":{"position":[[392,5]]},"78":{"position":[[588,6],[645,6],[750,5],[854,5],[881,5]]},"180":{"position":[[2569,5],[2589,5],[2788,5],[2815,5],[3279,5],[3316,5],[3439,5],[3917,5],[3962,5],[3991,5],[4043,5],[4090,5],[4140,5]]},"182":{"position":[[267,5],[328,5],[459,5],[511,5],[666,5],[962,6],[1006,5],[1135,5],[1202,5],[1477,5]]}}}],["constant",{"_index":2448,"t":{"524":{"position":[[946,8]]}}}],["constitut",{"_index":1570,"t":{"204":{"position":[[1755,10]]},"239":{"position":[[4127,11]]},"526":{"position":[[1075,11]]}}}],["constru",{"_index":1800,"t":{"239":{"position":[[5915,9]]}}}],["construct",{"_index":1418,"t":{"180":{"position":[[2692,9]]},"206":{"position":[[843,11]]},"208":{"position":[[1570,9]]},"210":{"position":[[735,9]]},"216":{"position":[[2301,11],[3306,11],[6221,10]]},"991":{"position":[[207,13]]},"1003":{"position":[[397,13]]}}}],["constructor",{"_index":3004,"t":{"1001":{"position":[[744,13]]}}}],["consum",{"_index":702,"t":{"73":{"position":[[211,9]]},"78":{"position":[[226,9]]},"108":{"position":[[770,8]]},"558":{"position":[[590,8]]}}}],["consumpt",{"_index":2220,"t":{"364":{"position":[[61,11]]},"413":{"position":[[1025,12],[1125,11]]}}}],["conta",{"_index":2253,"t":{"384":{"position":[[10,8]]}}}],["contact",{"_index":389,"t":{"36":{"position":[[106,10]]}}}],["contain",{"_index":799,"t":{"86":{"position":[[138,10],[304,10]]},"96":{"position":[[685,10]]},"120":{"position":[[696,7]]},"134":{"position":[[1134,8]]},"138":{"position":[[3825,7]]},"146":{"position":[[1178,7]]},"180":{"position":[[1650,8],[3583,7],[3739,8]]},"184":{"position":[[338,10]]},"222":{"position":[[207,8]]},"224":{"position":[[295,8]]},"227":{"position":[[77,8],[139,9],[701,8]]},"229":{"position":[[35,8],[226,7],[1799,8]]},"239":{"position":[[5180,9]]},"292":{"position":[[33,8]]},"304":{"position":[[185,7]]},"306":{"position":[[26,8],[2303,10],[4260,8],[4834,10]]},"308":{"position":[[2812,10],[3029,8]]},"366":{"position":[[26,10]]},"382":{"position":[[5,10],[104,10],[233,7],[369,8],[499,7],[659,7]]},"386":{"position":[[10,10]]},"388":{"position":[[10,10]]},"421":{"position":[[1307,10]]},"510":{"position":[[190,7]]},"512":{"position":[[681,10]]},"520":{"position":[[212,10]]},"524":{"position":[[53,7],[252,7]]},"534":{"position":[[94,8]]},"536":{"position":[[99,8]]},"538":{"position":[[93,8]]},"548":{"position":[[5,8]]},"568":{"position":[[337,8],[396,8],[549,8],[671,8],[772,8]]},"584":{"position":[[147,8],[278,8]]},"586":{"position":[[8,10]]},"602":{"position":[[80,7]]},"604":{"position":[[76,7]]},"614":{"position":[[89,7]]},"616":{"position":[[85,7]]},"626":{"position":[[2123,8]]},"640":{"position":[[8,10]]},"642":{"position":[[8,10]]},"730":{"position":[[39,9]]},"748":{"position":[[6,10]]},"756":{"position":[[543,8]]},"762":{"position":[[48,8]]},"775":{"position":[[576,7]]},"785":{"position":[[74,7]]},"787":{"position":[[315,7],[723,7]]},"789":{"position":[[5,10],[138,8]]},"791":{"position":[[5,10],[139,8]]},"793":{"position":[[38,7]]},"795":{"position":[[5,10]]},"821":{"position":[[47,9],[629,9]]},"853":{"position":[[6,10]]},"869":{"position":[[6,10]]},"881":{"position":[[6,10]]},"907":{"position":[[48,8]]},"919":{"position":[[24,10]]},"923":{"position":[[654,7]]},"933":{"position":[[24,10]]},"937":{"position":[[581,7]]},"943":{"position":[[6,10]]},"949":{"position":[[6,10]]},"969":{"position":[[74,7]]},"971":{"position":[[289,7],[664,7]]},"973":{"position":[[6,10]]},"977":{"position":[[6,10]]},"979":{"position":[[6,10]]},"981":{"position":[[6,10]]},"987":{"position":[[6,10]]},"989":{"position":[[6,10]]},"1001":{"position":[[6,10]]},"1007":{"position":[[6,10],[1296,7]]},"1027":{"position":[[6,10]]},"1029":{"position":[[6,10]]},"1033":{"position":[[524,10]]},"1045":{"position":[[6,10]]},"1049":{"position":[[6,10]]},"1053":{"position":[[6,10]]},"1065":{"position":[[6,10],[280,7]]},"1067":{"position":[[6,10],[176,7]]},"1159":{"position":[[467,7]]}}}],["container>.proto",{"_index":2875,"t":{"825":{"position":[[596,12]]}}}],["name>_pb2.pi",{"_index":2876,"t":{"825":{"position":[[624,14]]}}}],["namespac",{"_index":976,"t":{"114":{"position":[[221,11]]},"128":{"position":[[1053,10]]},"512":{"position":[[653,10]]},"740":{"position":[[174,11]]},"1100":{"position":[[161,11]]}}}],["namespace.datatyp",{"_index":2425,"t":{"516":{"position":[[238,18]]},"518":{"position":[[193,18]]}}}],["namespace.playeract",{"_index":2428,"t":{"520":{"position":[[907,22],[1049,22]]}}}],["namespace.playerconfig",{"_index":2430,"t":{"520":{"position":[[991,22],[1133,22]]}}}],["namespace.playerobserv",{"_index":2429,"t":{"520":{"position":[[950,27],[1092,27]]}}}],["namespace.refereeact",{"_index":2433,"t":{"520":{"position":[[1187,23]]}}}],["namespace.refereeconfig",{"_index":2435,"t":{"520":{"position":[[1273,23]]}}}],["namespace.refereeobserv",{"_index":2434,"t":{"520":{"position":[[1231,28]]}}}],["nanosecond",{"_index":2469,"t":{"530":{"position":[[565,11]]},"586":{"position":[[479,12],[624,11]]},"686":{"position":[[485,10]]},"724":{"position":[[357,11]]},"783":{"position":[[365,12]]},"965":{"position":[[458,12]]},"973":{"position":[[170,11]]},"977":{"position":[[337,11]]},"1007":{"position":[[1001,11]]},"1029":{"position":[[258,12]]},"1049":{"position":[[597,11]]}}}],["nat",{"_index":401,"t":{"42":{"position":[[344,3]]}}}],["nativ",{"_index":1310,"t":{"170":{"position":[[321,8]]}}}],["natur",{"_index":1303,"t":{"168":{"position":[[393,6]]},"194":{"position":[[571,6]]},"210":{"position":[[1150,6]]},"216":{"position":[[378,6]]}}}],["navig",{"_index":1348,"t":{"174":{"position":[[385,8]]}}}],["nb",{"_index":2107,"t":{"308":{"position":[[3168,3],[3206,3]]},"801":{"position":[[553,2]]}}}],["nb_buffered_tick",{"_index":698,"t":{"71":{"position":[[1082,17]]},"801":{"position":[[831,18],[1221,18]]},"803":{"position":[[509,17],[1118,18]]},"989":{"position":[[685,18]]},"1007":{"position":[[754,18]]}}}],["nb_parallel_tri",{"_index":3072,"t":{"1108":{"position":[[93,19]]}}}],["nb_samples_process",{"_index":2287,"t":{"409":{"position":[[786,20]]}}}],["nb_session",{"_index":2286,"t":{"409":{"position":[[758,12]]}}}],["nb_trial",{"_index":3071,"t":{"1108":{"position":[[47,10],[171,10]]},"1116":{"position":[[469,10]]},"1118":{"position":[[238,10]]},"1148":{"position":[[69,10]]},"1150":{"position":[[162,12]]}}}],["necessari",{"_index":320,"t":{"26":{"position":[[409,9]]},"96":{"position":[[539,10]]},"104":{"position":[[135,10]]},"110":{"position":[[735,9],[872,9]]},"140":{"position":[[15,9]]},"194":{"position":[[678,9]]},"198":{"position":[[1788,9]]},"204":{"position":[[1075,9]]},"210":{"position":[[838,9]]},"216":{"position":[[1937,9]]},"229":{"position":[[64,9],[252,9],[1829,9]]},"235":{"position":[[31,9],[1515,9]]},"253":{"position":[[121,9]]},"484":{"position":[[157,9]]},"520":{"position":[[227,9]]},"638":{"position":[[1348,9]]},"801":{"position":[[3787,9]]},"811":{"position":[[2863,9]]},"919":{"position":[[60,9]]},"933":{"position":[[66,9]]},"949":{"position":[[42,9]]},"1089":{"position":[[492,9]]},"1091":{"position":[[492,9]]},"1093":{"position":[[492,9]]},"1100":{"position":[[1300,10],[1593,10]]},"1116":{"position":[[887,9]]}}}],["necessarili",{"_index":1772,"t":{"239":{"position":[[3793,11]]},"905":{"position":[[1474,11]]},"923":{"position":[[467,11]]}}}],["need",{"_index":45,"t":{"6":{"position":[[10,4]]},"10":{"position":[[168,4],[746,4]]},"16":{"position":[[149,5]]},"26":{"position":[[1212,7]]},"36":{"position":[[135,6]]},"52":{"position":[[73,5]]},"54":{"position":[[2099,5]]},"78":{"position":[[531,5],[833,5]]},"90":{"position":[[929,6],[1429,4],[1690,5]]},"94":{"position":[[25,5]]},"102":{"position":[[438,4]]},"108":{"position":[[810,4]]},"110":{"position":[[463,5]]},"116":{"position":[[157,4],[576,4]]},"124":{"position":[[432,4],[2146,4]]},"136":{"position":[[172,4],[286,4],[778,4]]},"140":{"position":[[452,4]]},"142":{"position":[[221,5]]},"144":{"position":[[33,4],[236,4],[1132,4]]},"146":{"position":[[100,4],[1916,4],[2034,4]]},"156":{"position":[[408,5],[638,4],[673,6],[1789,4],[2023,4],[2086,4]]},"158":{"position":[[641,5]]},"162":{"position":[[33,4]]},"164":{"position":[[260,4]]},"170":{"position":[[96,4],[528,4],[1779,4],[1937,6]]},"180":{"position":[[951,4],[3613,4]]},"182":{"position":[[1254,6],[1675,4]]},"188":{"position":[[126,4]]},"190":{"position":[[299,4]]},"192":{"position":[[42,4]]},"194":{"position":[[33,4],[159,4]]},"196":{"position":[[54,6]]},"198":{"position":[[535,4]]},"204":{"position":[[14,4],[644,4],[727,4]]},"206":{"position":[[40,4]]},"208":{"position":[[121,4],[1562,4]]},"212":{"position":[[1284,4],[1519,4]]},"214":{"position":[[7,4]]},"216":{"position":[[157,4],[420,4],[539,4]]},"218":{"position":[[143,6]]},"220":{"position":[[22,4],[153,5]]},"229":{"position":[[1965,4],[2213,4]]},"231":{"position":[[47,4]]},"235":{"position":[[107,4],[425,4]]},"271":{"position":[[152,5]]},"409":{"position":[[264,4]]},"421":{"position":[[718,5]]},"488":{"position":[[179,4]]},"498":{"position":[[170,6]]},"500":{"position":[[1202,5]]},"508":{"position":[[876,5]]},"512":{"position":[[383,4],[611,4]]},"536":{"position":[[687,4]]},"558":{"position":[[318,6]]},"682":{"position":[[202,4]]},"732":{"position":[[595,5]]},"785":{"position":[[132,6]]},"787":{"position":[[830,5]]},"805":{"position":[[911,8]]},"809":{"position":[[109,4]]},"811":{"position":[[566,5],[2827,5],[3098,4],[6165,5]]},"814":{"position":[[218,7]]},"825":{"position":[[72,5]]},"827":{"position":[[71,4],[229,5]]},"849":{"position":[[509,6]]},"923":{"position":[[479,4]]},"969":{"position":[[132,6]]},"971":{"position":[[771,5]]},"1100":{"position":[[1119,6],[1609,6]]}}}],["neg",{"_index":1518,"t":{"188":{"position":[[254,8]]}}}],["neglig",{"_index":1823,"t":{"239":{"position":[[7709,12],[7812,9]]}}}],["network",{"_index":395,"t":{"36":{"position":[[248,7]]},"42":{"position":[[812,7],[919,8]]},"60":{"position":[[1509,7]]},"140":{"position":[[352,7],[495,7]]},"144":{"position":[[253,7]]},"146":{"position":[[223,7]]},"156":{"position":[[367,7]]},"271":{"position":[[274,7],[332,7]]},"298":{"position":[[555,9],[614,8],[739,7],[769,7],[917,7],[1998,8]]},"522":{"position":[[169,7]]},"526":{"position":[[14,7]]},"642":{"position":[[639,7]]},"658":{"position":[[66,7]]},"787":{"position":[[524,7]]},"809":{"position":[[36,7]]}}}],["neural",{"_index":410,"t":{"42":{"position":[[805,6],[912,6]]},"658":{"position":[[59,6]]}}}],["never",{"_index":814,"t":{"88":{"position":[[1763,5]]},"302":{"position":[[232,5]]},"787":{"position":[[95,5]]},"971":{"position":[[95,5]]},"975":{"position":[[80,5]]}}}],["new",{"_index":58,"t":{"6":{"position":[[197,3]]},"60":{"position":[[1177,3]]},"62":{"position":[[863,3]]},"76":{"position":[[408,3],[513,3]]},"90":{"position":[[220,3]]},"110":{"position":[[450,3]]},"118":{"position":[[336,3]]},"120":{"position":[[284,3]]},"136":{"position":[[1172,3]]},"138":{"position":[[1515,3],[2982,3]]},"156":{"position":[[2236,3]]},"170":{"position":[[31,3],[1070,3]]},"180":{"position":[[1418,3],[1901,3],[2830,3]]},"182":{"position":[[682,3]]},"190":{"position":[[34,3],[131,3],[496,3]]},"192":{"position":[[23,3]]},"194":{"position":[[141,3]]},"196":{"position":[[237,3]]},"208":{"position":[[1584,3],[1611,3]]},"216":{"position":[[1120,3],[3318,3],[5780,3],[6232,3]]},"224":{"position":[[20,3]]},"235":{"position":[[1446,3]]},"282":{"position":[[83,3]]},"292":{"position":[[278,3],[421,3],[618,3],[888,3]]},"296":{"position":[[1748,3]]},"298":{"position":[[2161,3],[2698,3],[2967,3]]},"308":{"position":[[233,3]]},"330":{"position":[[83,3]]},"366":{"position":[[64,3]]},"368":{"position":[[166,3]]},"378":{"position":[[79,3],[179,3],[313,3]]},"394":{"position":[[83,3]]},"437":{"position":[[83,3]]},"467":{"position":[[83,3]]},"482":{"position":[[407,3]]},"490":{"position":[[218,3]]},"500":{"position":[[76,3],[412,3],[566,3]]},"502":{"position":[[610,3]]},"506":{"position":[[40,3]]},"508":{"position":[[52,3],[366,3],[588,3],[751,3],[985,3],[1029,3],[1067,3],[1164,3]]},"572":{"position":[[373,3]]},"574":{"position":[[378,3],[679,3]]},"594":{"position":[[269,3]]},"606":{"position":[[201,3]]},"618":{"position":[[110,3]]},"632":{"position":[[268,3]]},"658":{"position":[[1259,3]]},"750":{"position":[[18,3],[493,3]]},"801":{"position":[[3119,3]]},"805":{"position":[[294,3],[667,3]]},"811":{"position":[[4138,3]]},"849":{"position":[[345,3],[524,3]]},"857":{"position":[[18,3],[717,3],[1065,3]]},"875":{"position":[[344,3]]},"885":{"position":[[204,3],[348,3]]},"887":{"position":[[364,3],[508,3]]},"903":{"position":[[205,3]]},"905":{"position":[[450,3]]},"989":{"position":[[301,3]]},"1001":{"position":[[304,3]]},"1007":{"position":[[80,3]]},"1033":{"position":[[304,3]]},"1108":{"position":[[638,3]]},"1110":{"position":[[603,3]]},"1112":{"position":[[573,3]]},"1116":{"position":[[646,3]]},"1118":{"position":[[213,3],[319,3]]},"1120":{"position":[[55,3]]},"1122":{"position":[[70,3]]},"1124":{"position":[[35,3]]},"1126":{"position":[[40,3]]},"1136":{"position":[[924,3],[1000,3]]},"1159":{"position":[[807,3],[937,3]]}}}],["newer",{"_index":3025,"t":{"1041":{"position":[[21,5],[84,5],[260,6]]}}}],["newli",{"_index":1881,"t":{"253":{"position":[[51,5]]},"576":{"position":[[112,5]]},"750":{"position":[[779,5]]},"857":{"position":[[1246,5]]},"885":{"position":[[710,5]]},"887":{"position":[[784,5]]}}}],["newmessag",{"_index":757,"t":{"78":{"position":[[887,10]]}}}],["next",{"_index":170,"t":{"12":{"position":[[598,4]]},"88":{"position":[[703,4],[1021,4]]},"136":{"position":[[1468,5]]},"138":{"position":[[2076,4],[3628,4]]},"178":{"position":[[942,5]]},"180":{"position":[[4309,4]]},"192":{"position":[[424,5]]},"204":{"position":[[956,4]]},"208":{"position":[[64,4]]},"216":{"position":[[6386,4]]},"227":{"position":[[534,4]]},"235":{"position":[[1217,4],[1888,4]]},"306":{"position":[[310,4]]},"415":{"position":[[567,4],[1166,4]]},"480":{"position":[[474,4]]},"508":{"position":[[510,4]]},"668":{"position":[[526,4],[553,4]]},"670":{"position":[[264,4]]},"676":{"position":[[719,4],[746,4]]},"678":{"position":[[304,4]]},"696":{"position":[[1489,5],[1582,5]]},"704":{"position":[[591,4],[618,4]]},"706":{"position":[[286,4]]},"752":{"position":[[281,4],[329,4]]},"801":{"position":[[521,4]]},"805":{"position":[[444,6]]},"859":{"position":[[310,4],[358,4]]},"943":{"position":[[639,4]]},"1163":{"position":[[1053,4]]}}}],["next_act",{"_index":1236,"t":{"156":{"position":[[1435,11]]}}}],["next_model_handl",{"_index":2666,"t":{"670":{"position":[[116,17],[204,18]]}}}],["next_trial_handl",{"_index":2743,"t":{"706":{"position":[[124,17]]}}}],["next_version_handl",{"_index":2682,"t":{"678":{"position":[[138,19],[242,20]]},"706":{"position":[[224,20]]}}}],["nextmodelhandl",{"_index":2176,"t":{"346":{"position":[[368,18],[642,18]]}}}],["nextversionhandl",{"_index":2199,"t":{"350":{"position":[[553,20],[979,20],[1414,20]]}}}],["nice",{"_index":1294,"t":{"168":{"position":[[78,4]]},"508":{"position":[[533,7]]}}}],["nobodi",{"_index":1587,"t":{"208":{"position":[[649,6],[823,6]]},"216":{"position":[[2840,6]]}}}],["node",{"_index":294,"t":{"24":{"position":[[152,4],[1178,4]]},"26":{"position":[[1116,6]]},"124":{"position":[[726,4]]},"198":{"position":[[864,4]]},"304":{"position":[[166,5],[212,5]]},"306":{"position":[[21,4],[77,4],[141,4],[1976,4],[2446,4],[3104,5],[3140,4],[3315,4],[4255,4],[4505,4],[4527,5],[4655,5],[4963,4],[4985,5],[5097,5]]},"308":{"position":[[116,5]]}}}],["node.j",{"_index":1282,"t":{"162":{"position":[[64,8]]}}}],["non",{"_index":613,"t":{"62":{"position":[[361,4]]},"84":{"position":[[364,3],[496,3]]},"88":{"position":[[1317,4]]},"229":{"position":[[2027,3]]},"239":{"position":[[3129,3],[3509,3],[7358,3]]},"271":{"position":[[260,3]]},"292":{"position":[[553,3]]},"294":{"position":[[320,3]]},"296":{"position":[[890,3]]},"312":{"position":[[160,4]]},"409":{"position":[[498,3]]},"536":{"position":[[665,3]]},"686":{"position":[[679,3]]},"857":{"position":[[1324,3]]},"993":{"position":[[166,3]]},"1005":{"position":[[166,3]]}}}],["none",{"_index":1635,"t":{"214":{"position":[[358,4]]},"216":{"position":[[4721,4],[4799,4]]},"409":{"position":[[41,4]]},"419":{"position":[[359,4]]},"421":{"position":[[383,4]]},"500":{"position":[[294,4]]},"502":{"position":[[903,6]]},"572":{"position":[[394,4],[859,4],[907,4]]},"600":{"position":[[32,4]]},"612":{"position":[[560,4]]},"624":{"position":[[595,4]]},"632":{"position":[[409,4]]},"636":{"position":[[1011,4]]},"658":{"position":[[847,4],[1008,4],[1170,4],[1387,4],[1571,4],[1807,4]]},"686":{"position":[[1205,4]]},"690":{"position":[[592,4],[748,4],[959,4],[1408,4]]},"724":{"position":[[607,4]]},"760":{"position":[[69,4]]},"764":{"position":[[73,4]]},"766":{"position":[[77,4]]},"768":{"position":[[62,4]]},"770":{"position":[[359,4]]},"775":{"position":[[433,4]]},"801":{"position":[[2464,4],[2617,4]]},"831":{"position":[[209,4],[346,5],[546,4]]},"833":{"position":[[12,4],[148,5]]},"835":{"position":[[626,4],[851,5],[1099,4]]},"843":{"position":[[354,5],[656,5],[913,4]]},"845":{"position":[[482,4]]},"847":{"position":[[646,4]]},"849":{"position":[[759,4]]},"851":{"position":[[512,4]]},"855":{"position":[[12,4]]},"859":{"position":[[514,4]]},"867":{"position":[[69,4]]},"871":{"position":[[12,4]]},"877":{"position":[[143,4]]},"883":{"position":[[12,4]]},"889":{"position":[[407,4]]},"891":{"position":[[182,4]]},"893":{"position":[[84,4]]},"897":{"position":[[309,4]]},"899":{"position":[[337,4]]},"901":{"position":[[231,4]]},"909":{"position":[[73,4]]},"911":{"position":[[77,4]]},"913":{"position":[[62,4]]},"915":{"position":[[384,4],[397,4]]},"917":{"position":[[1009,4]]},"919":{"position":[[417,4]]},"921":{"position":[[800,4]]},"923":{"position":[[506,4]]},"925":{"position":[[621,4]]},"927":{"position":[[326,4]]},"929":{"position":[[66,4]]},"931":{"position":[[747,4]]},"933":{"position":[[535,4]]},"935":{"position":[[381,4]]},"937":{"position":[[434,4]]},"939":{"position":[[214,5],[366,4]]},"941":{"position":[[794,4]]},"945":{"position":[[52,4]]},"947":{"position":[[82,4]]},"951":{"position":[[47,4],[60,4]]},"953":{"position":[[106,4]]},"955":{"position":[[305,6]]},"959":{"position":[[468,6]]},"969":{"position":[[351,4]]},"983":{"position":[[75,4]]},"985":{"position":[[80,4]]},"987":{"position":[[362,4]]},"989":{"position":[[97,4],[364,4]]},"993":{"position":[[12,4],[170,4]]},"995":{"position":[[180,4]]},"997":{"position":[[65,4]]},"999":{"position":[[266,5]]},"1001":{"position":[[107,4],[367,4]]},"1005":{"position":[[12,4],[170,4]]},"1007":{"position":[[310,6]]},"1011":{"position":[[183,4]]},"1013":{"position":[[62,4]]},"1017":{"position":[[143,4]]},"1021":{"position":[[70,4],[391,4]]},"1023":{"position":[[76,4]]},"1025":{"position":[[77,4]]},"1033":{"position":[[326,4]]},"1035":{"position":[[82,4]]},"1037":{"position":[[58,4]]},"1039":{"position":[[61,4],[75,4]]},"1041":{"position":[[300,4]]},"1047":{"position":[[12,4]]},"1049":{"position":[[347,4]]},"1051":{"position":[[12,4]]},"1053":{"position":[[364,4],[563,4],[819,4],[1001,4]]},"1055":{"position":[[12,4]]},"1057":{"position":[[157,4]]},"1059":{"position":[[105,4]]},"1061":{"position":[[99,4]]},"1063":{"position":[[95,4]]},"1065":{"position":[[453,4]]},"1067":{"position":[[528,4]]},"1089":{"position":[[882,4],[909,5]]},"1091":{"position":[[901,4],[928,5]]},"1093":{"position":[[879,4],[906,5]]},"1095":{"position":[[682,4],[709,5]]},"1097":{"position":[[670,4],[697,5]]},"1102":{"position":[[60,4]]},"1104":{"position":[[59,4]]},"1106":{"position":[[64,4]]},"1108":{"position":[[461,5]]},"1110":{"position":[[508,5],[755,5]]},"1112":{"position":[[478,5],[725,5]]},"1116":{"position":[[352,5],[671,5],[1074,5]]},"1118":{"position":[[430,4]]},"1120":{"position":[[245,4],[258,4]]},"1122":{"position":[[107,4],[120,4]]},"1124":{"position":[[179,4],[192,4]]},"1126":{"position":[[327,4]]},"1128":{"position":[[64,4]]},"1130":{"position":[[63,4]]},"1132":{"position":[[349,4]]},"1138":{"position":[[176,4]]},"1140":{"position":[[80,4],[93,4]]},"1142":{"position":[[132,4],[145,4]]},"1144":{"position":[[67,4]]},"1148":{"position":[[133,5],[303,4]]},"1154":{"position":[[59,4]]},"1157":{"position":[[569,5],[1042,5],[1485,5]]},"1159":{"position":[[504,4],[633,5],[841,4],[1063,4],[1721,5]]},"1161":{"position":[[361,4]]},"1163":{"position":[[792,4],[810,4]]},"1165":{"position":[[494,4],[512,4]]}}}],["normal",{"_index":801,"t":{"88":{"position":[[44,6]]},"239":{"position":[[5591,8]]},"294":{"position":[[14,8]]},"296":{"position":[[1354,6]]},"318":{"position":[[132,8]]},"360":{"position":[[218,8]]},"362":{"position":[[248,8]]},"382":{"position":[[490,8],[633,6]]},"427":{"position":[[441,8]]},"457":{"position":[[131,8]]},"524":{"position":[[36,8],[235,8],[467,8],[588,8]]},"526":{"position":[[7,6]]},"568":{"position":[[127,6],[292,7],[300,6],[540,8],[820,6],[924,6],[1028,6]]},"602":{"position":[[117,6],[634,6]]},"604":{"position":[[113,7],[549,6]]},"614":{"position":[[126,6],[583,6]]},"616":{"position":[[122,7],[537,6]]},"626":{"position":[[591,6],[755,6]]},"744":{"position":[[77,8]]},"775":{"position":[[665,8]]},"787":{"position":[[132,6]]},"801":{"position":[[1122,6]]},"811":{"position":[[4086,8]]},"843":{"position":[[77,8]]},"923":{"position":[[788,8]]},"937":{"position":[[671,8]]},"971":{"position":[[132,6]]},"975":{"position":[[170,9]]},"1007":{"position":[[557,6]]},"1078":{"position":[[474,8]]},"1124":{"position":[[108,6]]},"1132":{"position":[[60,8],[287,8]]},"1146":{"position":[[66,8]]},"1161":{"position":[[110,8]]},"1163":{"position":[[851,9]]}}}],["normal/ful",{"_index":3011,"t":{"1007":{"position":[[454,11]]}}}],["note",{"_index":93,"t":{"8":{"position":[[471,4]]},"42":{"position":[[981,4]]},"48":{"position":[[177,4]]},"56":{"position":[[690,4]]},"60":{"position":[[570,4],[1354,4]]},"88":{"position":[[926,4]]},"90":{"position":[[0,4]]},"126":{"position":[[909,4]]},"128":{"position":[[914,4]]},"132":{"position":[[767,4]]},"140":{"position":[[0,4]]},"144":{"position":[[1086,4]]},"146":{"position":[[2127,4],[3012,5],[3896,4]]},"154":{"position":[[0,4]]},"158":{"position":[[1213,4]]},"160":{"position":[[0,4]]},"168":{"position":[[377,4]]},"170":{"position":[[591,4]]},"176":{"position":[[0,5]]},"178":{"position":[[119,5]]},"188":{"position":[[100,4]]},"200":{"position":[[631,4]]},"202":{"position":[[1019,4]]},"210":{"position":[[529,4]]},"212":{"position":[[896,4],[1440,4],[1445,4]]},"218":{"position":[[342,4]]},"229":{"position":[[377,5]]},"263":{"position":[[66,4]]},"284":{"position":[[529,4]]},"296":{"position":[[200,4],[885,4]]},"306":{"position":[[1515,6],[3821,6]]},"308":{"position":[[1347,4]]},"328":{"position":[[107,4]]},"392":{"position":[[107,4]]},"409":{"position":[[219,5]]},"419":{"position":[[925,4],[1402,4]]},"435":{"position":[[107,4]]},"465":{"position":[[107,4]]},"526":{"position":[[1060,4]]},"552":{"position":[[441,4]]},"554":{"position":[[465,4]]},"562":{"position":[[649,4]]},"596":{"position":[[492,4]]},"616":{"position":[[641,4]]},"754":{"position":[[185,4]]},"779":{"position":[[687,4]]},"787":{"position":[[503,4]]},"803":{"position":[[784,4]]},"819":{"position":[[1191,4]]},"829":{"position":[[347,5]]},"861":{"position":[[187,4]]},"921":{"position":[[455,5]]},"931":{"position":[[682,4]]},"941":{"position":[[729,4]]},"1007":{"position":[[262,4]]},"1049":{"position":[[273,4]]},"1087":{"position":[[233,4]]}}}],["noth",{"_index":1638,"t":{"214":{"position":[[615,7]]},"239":{"position":[[6604,7]]},"787":{"position":[[822,7]]},"819":{"position":[[1430,7]]},"971":{"position":[[763,7]]}}}],["notic",{"_index":1554,"t":{"198":{"position":[[1424,6]]},"239":{"position":[[1362,6],[4693,7],[4876,7],[4934,7],[5030,8],[5172,7],[5202,6],[5231,7],[5346,6],[5583,7],[5628,6],[5740,7],[5828,6],[5897,7],[7018,6]]}}}],["notif",{"_index":2776,"t":{"773":{"position":[[254,12]]},"921":{"position":[[677,12]]},"935":{"position":[[253,12]]}}}],["notifi",{"_index":557,"t":{"58":{"position":[[653,6],[1588,6]]},"134":{"position":[[748,6]]},"770":{"position":[[10,6]]},"773":{"position":[[152,6]]},"915":{"position":[[10,6]]},"921":{"position":[[575,6]]},"935":{"position":[[151,6]]}}}],["notion",{"_index":1520,"t":{"188":{"position":[[335,6]]}}}],["notwithstand",{"_index":1803,"t":{"239":{"position":[[6577,15]]}}}],["now",{"_index":735,"t":{"76":{"position":[[453,3]]},"84":{"position":[[234,3]]},"90":{"position":[[82,3]]},"96":{"position":[[83,3],[553,3]]},"98":{"position":[[80,3]]},"102":{"position":[[353,3]]},"114":{"position":[[53,3]]},"122":{"position":[[0,3]]},"124":{"position":[[201,4]]},"134":{"position":[[307,4]]},"136":{"position":[[1279,3]]},"138":{"position":[[2110,3]]},"144":{"position":[[0,3]]},"146":{"position":[[2312,3]]},"156":{"position":[[2661,3]]},"158":{"position":[[1473,3]]},"174":{"position":[[526,3]]},"182":{"position":[[1818,3]]},"186":{"position":[[422,4]]},"188":{"position":[[1079,3],[1107,3]]},"190":{"position":[[475,3]]},"194":{"position":[[446,3],[648,3]]},"210":{"position":[[677,3]]},"214":{"position":[[3,3]]},"216":{"position":[[83,3],[1619,3],[6052,3]]},"222":{"position":[[165,3]]},"224":{"position":[[504,3]]},"227":{"position":[[135,3]]},"229":{"position":[[2180,4]]},"233":{"position":[[474,3]]},"235":{"position":[[0,3],[1274,3]]},"486":{"position":[[134,3]]},"492":{"position":[[136,3]]},"498":{"position":[[413,3]]},"500":{"position":[[508,3],[745,3],[1366,3]]},"502":{"position":[[280,3],[713,3],[837,3],[953,3]]},"508":{"position":[[672,3]]}}}],["npm",{"_index":492,"t":{"52":{"position":[[604,3]]},"168":{"position":[[289,3]]},"170":{"position":[[1359,3],[1755,3]]},"174":{"position":[[163,3]]},"727":{"position":[[75,4],[80,3]]}}}],["npx",{"_index":495,"t":{"52":{"position":[[683,3]]},"110":{"position":[[893,3]]},"166":{"position":[[105,3]]},"168":{"position":[[445,3]]},"170":{"position":[[1394,3]]},"180":{"position":[[1034,4]]},"734":{"position":[[219,3]]}}}],["ns",{"_index":1860,"t":{"245":{"position":[[208,5]]},"413":{"position":[[723,5]]}}}],["null",{"_index":1463,"t":{"182":{"position":[[378,5],[393,5],[409,5],[424,5],[436,5]]}}}],["number",{"_index":394,"t":{"36":{"position":[[238,6]]},"80":{"position":[[478,6]]},"88":{"position":[[600,6]]},"158":{"position":[[1262,6]]},"204":{"position":[[1437,6]]},"210":{"position":[[1037,6]]},"214":{"position":[[76,6]]},"216":{"position":[[1789,6],[2206,6],[4315,6]]},"245":{"position":[[105,7]]},"265":{"position":[[19,6]]},"284":{"position":[[12,6]]},"308":{"position":[[2411,6]]},"324":{"position":[[25,6]]},"390":{"position":[[0,6]]},"413":{"position":[[620,7]]},"415":{"position":[[314,6],[1031,6],[1086,6],[1131,6]]},"421":{"position":[[1073,6],[1128,6],[1262,6],[1400,6]]},"522":{"position":[[269,6]]},"530":{"position":[[130,6]]},"566":{"position":[[616,6]]},"668":{"position":[[290,6]]},"676":{"position":[[316,6],[461,6]]},"680":{"position":[[223,6]]},"686":{"position":[[369,7]]},"692":{"position":[[341,6]]},"704":{"position":[[386,6]]},"766":{"position":[[90,6]]},"781":{"position":[[423,6]]},"783":{"position":[[234,6],[343,6]]},"795":{"position":[[58,6]]},"797":{"position":[[55,6],[97,6]]},"801":{"position":[[424,6],[584,6],[854,6]]},"803":{"position":[[811,6]]},"835":{"position":[[596,6]]},"875":{"position":[[128,6],[314,6]]},"885":{"position":[[256,7]]},"887":{"position":[[416,7]]},"889":{"position":[[216,6]]},"897":{"position":[[136,7]]},"905":{"position":[[1161,6]]},"963":{"position":[[455,6]]},"983":{"position":[[11,6],[94,6]]},"1019":{"position":[[152,7]]},"1021":{"position":[[221,7]]},"1029":{"position":[[161,7]]},"1045":{"position":[[343,6]]},"1108":{"position":[[68,6],[123,6]]},"1110":{"position":[[573,6]]},"1112":{"position":[[543,6]]},"1116":{"position":[[486,6]]},"1118":{"position":[[159,6],[255,6],[384,6]]},"1130":{"position":[[22,6],[82,6]]},"1136":{"position":[[892,6]]},"1148":{"position":[[18,6],[86,6]]},"1157":{"position":[[248,6]]}}}],["numer",{"_index":172,"t":{"12":{"position":[[634,9]]},"26":{"position":[[361,9]]},"71":{"position":[[257,9]]},"298":{"position":[[83,9]]},"558":{"position":[[430,9]]},"698":{"position":[[426,9]]}}}],["ob",{"_index":954,"t":{"108":{"position":[[645,3]]}}}],["object",{"_index":260,"t":{"18":{"position":[[839,7]]},"40":{"position":[[385,7]]},"102":{"position":[[59,7],[278,6],[385,7]]},"118":{"position":[[237,7]]},"180":{"position":[[3164,6]]},"188":{"position":[[486,9]]},"208":{"position":[[705,7],[1506,6]]},"239":{"position":[[1002,8],[1148,6],[1287,6],[1522,6],[3353,6],[4475,6]]},"417":{"position":[[337,6]]},"419":{"position":[[1211,6]]},"421":{"position":[[1188,6],[1321,6]]},"490":{"position":[[104,6]]},"734":{"position":[[53,7],[80,6]]},"760":{"position":[[123,6]]},"821":{"position":[[567,6]]},"833":{"position":[[234,7]]},"905":{"position":[[847,6],[979,6],[1133,7]]},"989":{"position":[[1203,6]]},"1033":{"position":[[430,6]]},"1035":{"position":[[220,7],[238,6]]},"1078":{"position":[[197,6],[423,7],[466,7],[553,6]]}}}],["oblig",{"_index":1841,"t":{"239":{"position":[[8537,11],[8620,12]]}}}],["observ",{"_index":148,"t":{"12":{"position":[[127,11],[412,12],[603,11]]},"16":{"position":[[391,12],[450,12],[492,12],[554,12]]},"18":{"position":[[423,12],[754,12]]},"22":{"position":[[12,12],[216,11],[381,12]]},"24":{"position":[[900,12]]},"26":{"position":[[4,12],[177,13],[203,12],[633,11]]},"30":{"position":[[237,12],[314,13],[726,14],[1038,11]]},"40":{"position":[[300,12]]},"42":{"position":[[697,12],[776,12]]},"44":{"position":[[183,13]]},"50":{"position":[[253,11],[387,12],[571,11],[679,12],[761,12]]},"54":{"position":[[325,12],[486,12],[777,12],[1050,11],[1109,16],[1379,11],[1466,16],[1599,16],[1683,11],[1726,16]]},"56":{"position":[[61,13],[173,12],[226,11],[338,19],[396,12],[457,12],[538,13],[619,18],[663,19],[735,12]]},"58":{"position":[[248,11],[843,11],[883,11],[1789,11],[1829,11]]},"62":{"position":[[867,11]]},"84":{"position":[[436,11]]},"86":{"position":[[153,12],[385,12]]},"88":{"position":[[107,11],[195,12],[1033,12]]},"108":{"position":[[30,12],[421,12],[500,11],[541,11],[562,12],[583,11],[749,13],[836,11],[957,11]]},"116":{"position":[[916,11],[1114,12]]},"118":{"position":[[225,11]]},"120":{"position":[[369,13]]},"124":{"position":[[466,12],[2288,11]]},"128":{"position":[[700,12],[878,11]]},"132":{"position":[[4,11],[106,12],[507,12],[532,11],[583,11]]},"134":{"position":[[56,12],[881,11]]},"136":{"position":[[1040,12]]},"138":{"position":[[2358,13],[2851,12],[3778,12]]},"156":{"position":[[1315,11]]},"158":{"position":[[691,12],[798,11],[882,11]]},"180":{"position":[[496,12],[1689,12],[3034,11],[3082,13],[3287,12],[3551,11],[3594,12],[3631,11],[3666,14],[3701,11],[3905,11],[4350,15],[4853,12],[4969,12]]},"182":{"position":[[365,12]]},"186":{"position":[[505,11]]},"190":{"position":[[253,11],[817,11],[892,12],[905,17]]},"196":{"position":[[241,12]]},"198":{"position":[[468,7],[1252,12]]},"202":{"position":[[546,12],[1077,11],[1150,11],[1249,11]]},"204":{"position":[[311,11],[375,11],[609,11]]},"206":{"position":[[56,11],[94,11],[760,11],[831,11],[1008,11]]},"208":{"position":[[69,12],[268,12],[1588,11],[1801,11],[1847,12]]},"210":{"position":[[745,12],[1221,11]]},"212":{"position":[[318,12]]},"214":{"position":[[1343,12]]},"216":{"position":[[2321,13],[3322,12],[3414,11],[3460,12],[5255,12],[6236,13],[6332,11]]},"235":{"position":[[1163,12]]},"447":{"position":[[448,12]]},"459":{"position":[[152,13]]},"480":{"position":[[111,11],[479,11]]},"486":{"position":[[15,12]]},"488":{"position":[[513,11]]},"490":{"position":[[92,11]]},"502":{"position":[[624,11]]},"520":{"position":[[504,12],[652,11],[803,11],[930,12],[1072,12],[1211,12]]},"526":{"position":[[389,12],[434,11],[503,11],[576,11],[633,11]]},"530":{"position":[[268,12],[392,13]]},"552":{"position":[[11,12],[32,11],[131,12],[171,12],[241,11],[330,11]]},"554":{"position":[[145,11]]},"562":{"position":[[21,12],[146,12],[227,12],[280,11],[306,13],[330,13],[442,11],[538,11],[759,12]]},"566":{"position":[[395,12],[545,11]]},"582":{"position":[[173,11]]},"586":{"position":[[712,12]]},"598":{"position":[[176,12]]},"602":{"position":[[340,11],[352,11],[741,12],[757,11]]},"612":{"position":[[341,12]]},"616":{"position":[[728,13],[759,12]]},"626":{"position":[[262,12],[892,11],[1215,13],[1229,12],[1297,13]]},"694":{"position":[[568,13]]},"696":{"position":[[309,12],[549,11],[889,12],[902,11],[976,11]]},"730":{"position":[[206,11],[328,12]]},"752":{"position":[[230,12],[367,14]]},"773":{"position":[[292,12]]},"775":{"position":[[44,14],[611,11]]},"781":{"position":[[352,11]]},"785":{"position":[[251,12],[279,11]]},"787":{"position":[[391,12]]},"789":{"position":[[42,12]]},"801":{"position":[[3478,11]]},"821":{"position":[[219,11],[341,12]]},"831":{"position":[[145,8]]},"859":{"position":[[248,12],[396,14]]},"921":{"position":[[148,13],[218,12],[378,11],[510,11]]},"923":{"position":[[686,12]]},"925":{"position":[[15,12],[104,11],[145,11],[200,13],[262,12],[494,11]]},"927":{"position":[[217,12]]},"935":{"position":[[291,12]]},"937":{"position":[[44,14],[616,11]]},"963":{"position":[[234,12],[384,11]]},"969":{"position":[[256,12],[296,11]]},"971":{"position":[[450,12]]},"973":{"position":[[35,11],[99,11],[275,12],[314,11],[374,11],[400,11]]},"975":{"position":[[157,12]]},"1007":{"position":[[84,12]]},"1021":{"position":[[13,11],[204,12],[344,11]]},"1043":{"position":[[97,12],[114,12]]},"1049":{"position":[[363,12]]},"1053":{"position":[[90,12],[129,11],[181,11],[207,11],[422,11]]},"1091":{"position":[[680,11],[743,11],[769,11]]}}}],["observation(me=p1_st",{"_index":1580,"t":{"206":{"position":[[454,24]]},"208":{"position":[[1880,24]]},"216":{"position":[[2552,24],[3493,24]]}}}],["observation(me=p2_st",{"_index":1583,"t":{"206":{"position":[[512,24]]},"208":{"position":[[1938,24]]},"216":{"position":[[2610,24],[3551,24]]}}}],["observation.me.lastmov",{"_index":1437,"t":{"180":{"position":[[4065,24]]}}}],["observation.me.wonlast",{"_index":1441,"t":{"180":{"position":[[4161,23]]}}}],["observation.observation.me.won_last",{"_index":1260,"t":{"158":{"position":[[404,36]]},"190":{"position":[[969,36]]}}}],["observation.observation.them.won_last",{"_index":1263,"t":{"158":{"position":[[493,38]]},"190":{"position":[[1142,38]]}}}],["observation.them.lastmov",{"_index":1436,"t":{"180":{"position":[[4016,26]]}}}],["observation.them.wonlast",{"_index":1439,"t":{"180":{"position":[[4114,25]]}}}],["observation={observ",{"_index":1492,"t":{"184":{"position":[[287,25]]}}}],["observation_or_delta",{"_index":952,"t":{"108":{"position":[[603,20]]}}}],["observation_seri",{"_index":3035,"t":{"1053":{"position":[[390,23]]}}}],["observation_set",{"_index":2577,"t":{"616":{"position":[[250,15],[742,16]]}}}],["observationmessag",{"_index":953,"t":{"108":{"position":[[626,18]]}}}],["observations/rewards/messag",{"_index":2977,"t":{"971":{"position":[[528,30]]}}}],["observationset",{"_index":2460,"t":{"528":{"position":[[66,14]]},"562":{"position":[[71,14]]},"586":{"position":[[178,14]]},"616":{"position":[[235,14]]},"626":{"position":[[247,14]]}}}],["observationt",{"_index":2790,"t":{"785":{"position":[[264,12]]}}}],["obtain",{"_index":944,"t":{"108":{"position":[[89,8]]},"811":{"position":[[1193,8]]},"1049":{"position":[[509,9]]}}}],["occur",{"_index":512,"t":{"54":{"position":[[446,9],[703,7]]},"68":{"position":[[55,8]]},"202":{"position":[[656,9]]},"267":{"position":[[603,6]]}}}],["offer",{"_index":295,"t":{"24":{"position":[[204,6]]},"239":{"position":[[3636,5],[8445,6]]},"427":{"position":[[22,5],[63,6]]},"811":{"position":[[3813,8],[3880,8]]},"829":{"position":[[129,8],[204,7]]},"1071":{"position":[[85,9]]}}}],["offlin",{"_index":419,"t":{"44":{"position":[[267,7]]},"284":{"position":[[365,8]]},"423":{"position":[[138,7]]},"427":{"position":[[309,7]]}}}],["ok",{"_index":2624,"t":{"646":{"position":[[93,2],[320,3]]},"650":{"position":[[97,2],[282,3]]}}}],["old",{"_index":925,"t":{"102":{"position":[[480,3]]},"292":{"position":[[610,3],[705,3]]}}}],["older",{"_index":1023,"t":{"120":{"position":[[587,5]]}}}],["olivia",{"_index":2830,"t":{"803":{"position":[[1806,6]]}}}],["omit",{"_index":2395,"t":{"500":{"position":[[304,4]]}}}],["on",{"_index":59,"t":{"6":{"position":[[201,4]]},"18":{"position":[[561,3]]},"30":{"position":[[665,3]]},"32":{"position":[[353,3]]},"40":{"position":[[107,3]]},"42":{"position":[[469,3]]},"44":{"position":[[97,5]]},"56":{"position":[[789,4]]},"60":{"position":[[660,3],[1382,3]]},"76":{"position":[[916,4]]},"84":{"position":[[492,3]]},"86":{"position":[[205,3]]},"88":{"position":[[341,4],[1094,3]]},"96":{"position":[[68,3],[676,3]]},"104":{"position":[[550,3]]},"126":{"position":[[539,3]]},"130":{"position":[[379,3],[532,3],[816,3]]},"136":{"position":[[359,3],[740,3]]},"138":{"position":[[2244,4]]},"146":{"position":[[3109,3]]},"150":{"position":[[150,3]]},"154":{"position":[[101,4]]},"160":{"position":[[101,4]]},"170":{"position":[[401,3]]},"182":{"position":[[851,3],[1411,3]]},"204":{"position":[[475,3],[524,3]]},"206":{"position":[[902,3]]},"212":{"position":[[458,3]]},"216":{"position":[[1747,3],[4348,3],[4714,3],[6143,3]]},"235":{"position":[[1568,3]]},"239":{"position":[[5308,3]]},"271":{"position":[[513,4]]},"292":{"position":[[453,3],[1059,3]]},"296":{"position":[[781,4]]},"300":{"position":[[286,4]]},"306":{"position":[[442,3],[5145,3]]},"308":{"position":[[3001,3]]},"382":{"position":[[241,3]]},"407":{"position":[[230,3],[294,3]]},"415":{"position":[[547,5]]},"502":{"position":[[769,3],[893,3]]},"512":{"position":[[397,3]]},"514":{"position":[[714,3]]},"526":{"position":[[419,3],[572,3],[621,3]]},"560":{"position":[[168,5],[830,4]]},"572":{"position":[[493,4]]},"610":{"position":[[275,3]]},"710":{"position":[[145,3]]},"716":{"position":[[138,3]]},"752":{"position":[[135,3]]},"754":{"position":[[326,3]]},"779":{"position":[[635,3]]},"803":{"position":[[222,3]]},"805":{"position":[[415,3]]},"807":{"position":[[74,3]]},"809":{"position":[[59,3]]},"811":{"position":[[3205,3]]},"819":{"position":[[260,3]]},"827":{"position":[[225,3]]},"849":{"position":[[105,3]]},"851":{"position":[[116,3]]},"859":{"position":[[137,3]]},"861":{"position":[[341,3]]},"873":{"position":[[530,3]]},"917":{"position":[[27,3]]},"931":{"position":[[630,3]]},"941":{"position":[[677,3]]},"1076":{"position":[[293,3]]},"1087":{"position":[[188,3]]},"1089":{"position":[[171,3]]},"1091":{"position":[[171,3]]},"1093":{"position":[[171,3]]},"1095":{"position":[[171,3]]},"1097":{"position":[[171,3]]},"1118":{"position":[[36,3],[228,3]]},"1148":{"position":[[273,3]]}}}],["onc",{"_index":117,"t":{"10":{"position":[[333,4]]},"30":{"position":[[140,4]]},"54":{"position":[[113,4]]},"84":{"position":[[351,4]]},"88":{"position":[[356,4]]},"134":{"position":[[228,4]]},"156":{"position":[[1078,4]]},"166":{"position":[[137,4]]},"182":{"position":[[615,5]]},"214":{"position":[[141,4]]},"229":{"position":[[2567,4]]},"300":{"position":[[113,5],[236,4]]},"312":{"position":[[346,4]]},"905":{"position":[[1268,4]]},"1033":{"position":[[144,4]]},"1041":{"position":[[54,4]]},"1124":{"position":[[120,4]]},"1159":{"position":[[1082,4]]}}}],["onclick",{"_index":1455,"t":{"180":{"position":[[5049,11],[5097,11],[5146,11]]}}}],["oneof",{"_index":951,"t":{"108":{"position":[[597,5]]},"574":{"position":[[74,5]]},"602":{"position":[[293,5]]},"604":{"position":[[215,5]]},"608":{"position":[[408,5]]},"614":{"position":[[266,5]]},"616":{"position":[[188,5]]},"626":{"position":[[480,5]]},"652":{"position":[[130,5]]},"672":{"position":[[193,5]]}}}],["ongo",{"_index":2350,"t":{"447":{"position":[[349,7]]},"690":{"position":[[729,8],[1140,7]]},"873":{"position":[[47,8]]},"879":{"position":[[161,9]]},"1136":{"position":[[486,7]]},"1159":{"position":[[952,7]]}}}],["onlin",{"_index":2328,"t":{"423":{"position":[[127,6]]},"427":{"position":[[299,6]]}}}],["onpretri",{"_index":2594,"t":{"632":{"position":[[136,13]]}}}],["onpretrial(pretrialparam",{"_index":2592,"t":{"632":{"position":[[27,26]]}}}],["opaqu",{"_index":2668,"t":{"670":{"position":[[223,6]]},"678":{"position":[[263,6]]},"706":{"position":[[245,6]]}}}],["open",{"_index":8,"t":{"2":{"position":[[148,4]]},"8":{"position":[[45,4]]},"10":{"position":[[451,4]]},"166":{"position":[[175,4]]},"182":{"position":[[2012,7]]},"212":{"position":[[1069,4]]},"235":{"position":[[126,5]]},"308":{"position":[[412,4],[528,4]]},"382":{"position":[[170,4],[185,4]]}}}],["oper",{"_index":66,"t":{"6":{"position":[[344,9]]},"20":{"position":[[188,7]]},"124":{"position":[[134,8],[1664,9]]},"128":{"position":[[72,8]]},"134":{"position":[[1374,10]]},"196":{"position":[[103,8]]},"198":{"position":[[50,8],[1305,10]]},"202":{"position":[[994,10]]},"224":{"position":[[117,10]]},"229":{"position":[[432,9]]},"298":{"position":[[2340,10]]},"417":{"position":[[287,10]]},"419":{"position":[[1168,10]]},"831":{"position":[[334,8]]}}}],["oppon",{"_index":1083,"t":{"132":{"position":[[691,9],[977,9]]},"204":{"position":[[549,9],[1325,8]]},"208":{"position":[[1389,9]]}}}],["oppos",{"_index":2216,"t":{"362":{"position":[[91,7]]},"500":{"position":[[927,7]]},"508":{"position":[[454,7]]},"811":{"position":[[2760,7]]},"1029":{"position":[[482,7]]}}}],["option",{"_index":171,"t":{"12":{"position":[[620,11]]},"42":{"position":[[928,11]]},"50":{"position":[[939,7]]},"62":{"position":[[140,8],[366,9],[433,8],[495,8],[751,8]]},"66":{"position":[[435,8]]},"71":{"position":[[609,11]]},"84":{"position":[[368,8],[500,8]]},"88":{"position":[[1322,9]]},"96":{"position":[[1074,7]]},"98":{"position":[[128,6],[344,6]]},"126":{"position":[[413,7]]},"132":{"position":[[790,8]]},"136":{"position":[[201,7],[375,7],[552,7]]},"243":{"position":[[33,7]]},"245":{"position":[[287,7]]},"247":{"position":[[107,7]]},"249":{"position":[[265,7]]},"255":{"position":[[926,9]]},"267":{"position":[[88,7],[357,6],[502,9],[646,6]]},"276":{"position":[[145,7]]},"278":{"position":[[111,7]]},"280":{"position":[[143,7]]},"282":{"position":[[192,7]]},"284":{"position":[[410,7]]},"286":{"position":[[237,7]]},"288":{"position":[[104,7]]},"290":{"position":[[434,7]]},"302":{"position":[[15,9],[134,8],[255,7],[574,8]]},"306":{"position":[[4210,7]]},"318":{"position":[[215,7]]},"322":{"position":[[113,7]]},"324":{"position":[[131,7]]},"326":{"position":[[128,7]]},"328":{"position":[[273,7]]},"330":{"position":[[191,7]]},"332":{"position":[[401,7]]},"334":{"position":[[265,7]]},"336":{"position":[[428,7]]},"338":{"position":[[308,9],[354,7]]},"360":{"position":[[301,7]]},"362":{"position":[[331,7]]},"364":{"position":[[186,7]]},"366":{"position":[[491,7]]},"368":{"position":[[555,7]]},"370":{"position":[[265,7]]},"372":{"position":[[323,7]]},"374":{"position":[[425,7]]},"376":{"position":[[307,9],[353,7]]},"378":{"position":[[360,6],[485,6]]},"380":{"position":[[191,7]]},"382":{"position":[[710,7]]},"384":{"position":[[110,7]]},"386":{"position":[[97,7]]},"388":{"position":[[84,7]]},"390":{"position":[[276,7]]},"392":{"position":[[273,7]]},"394":{"position":[[191,7]]},"396":{"position":[[156,9]]},"399":{"position":[[189,7]]},"401":{"position":[[224,7]]},"403":{"position":[[348,7]]},"405":{"position":[[167,6],[297,7]]},"407":{"position":[[544,7]]},"413":{"position":[[20,7],[241,7],[802,7],[1252,7]]},"415":{"position":[[286,8],[380,7],[660,7]]},"419":{"position":[[291,8],[485,7],[1421,6]]},"421":{"position":[[310,8],[465,7],[660,6],[774,7],[932,7]]},"427":{"position":[[524,7]]},"431":{"position":[[188,7]]},"433":{"position":[[244,7]]},"435":{"position":[[273,7]]},"437":{"position":[[191,7]]},"439":{"position":[[421,7]]},"441":{"position":[[265,7]]},"443":{"position":[[431,7]]},"445":{"position":[[310,9],[356,7]]},"453":{"position":[[88,7]]},"455":{"position":[[232,7]]},"457":{"position":[[214,7]]},"459":{"position":[[222,7]]},"461":{"position":[[108,7]]},"463":{"position":[[162,7]]},"465":{"position":[[273,7]]},"467":{"position":[[191,7]]},"469":{"position":[[423,7]]},"471":{"position":[[265,7]]},"473":{"position":[[418,7]]},"475":{"position":[[303,9],[349,7]]},"496":{"position":[[27,8]]},"500":{"position":[[157,6]]},"510":{"position":[[497,9]]},"512":{"position":[[68,10]]},"514":{"position":[[16,8]]},"516":{"position":[[111,10]]},"518":{"position":[[96,10]]},"520":{"position":[[684,10]]},"540":{"position":[[279,10]]},"546":{"position":[[267,8],[658,8]]},"548":{"position":[[17,8]]},"556":{"position":[[318,8]]},"606":{"position":[[661,10]]},"608":{"position":[[677,8]]},"618":{"position":[[419,10]]},"636":{"position":[[381,10],[657,10],[863,10]]},"668":{"position":[[267,10],[409,10]]},"676":{"position":[[438,10],[594,10]]},"696":{"position":[[533,8],[566,8],[594,8]]},"698":{"position":[[223,8]]},"704":{"position":[[270,9],[363,10],[474,10]]},"708":{"position":[[656,10]]},"799":{"position":[[364,8]]},"801":{"position":[[3714,9],[3752,9],[3765,8],[3855,10],[3984,8],[4005,10]]},"803":{"position":[[947,8],[1618,9],[1783,9]]},"807":{"position":[[134,9]]},"811":{"position":[[1065,6],[4471,8],[5082,8]]},"857":{"position":[[54,7]]},"887":{"position":[[263,7]]},"975":{"position":[[209,10],[301,10]]},"1001":{"position":[[860,9]]}}}],["orang",{"_index":375,"t":{"32":{"position":[[313,7]]}}}],["orcehstr",{"_index":764,"t":{"80":{"position":[[191,12]]}}}],["orchestr",{"_index":251,"t":{"18":{"position":[[504,12]]},"22":{"position":[[505,11]]},"26":{"position":[[517,12],[1136,12]]},"36":{"position":[[4,12],[197,12]]},"38":{"position":[[83,12]]},"40":{"position":[[50,12]]},"42":{"position":[[144,12],[261,13]]},"46":{"position":[[153,12],[185,12]]},"54":{"position":[[2145,12]]},"60":{"position":[[136,13],[766,13],[811,12]]},"62":{"position":[[334,12]]},"64":{"position":[[37,12],[150,12]]},"68":{"position":[[89,12]]},"82":{"position":[[69,13]]},"84":{"position":[[57,13]]},"86":{"position":[[37,12],[85,12],[170,12],[251,12],[339,12]]},"88":{"position":[[399,12],[662,12],[1937,12]]},"90":{"position":[[723,12],[835,13],[1776,12]]},"96":{"position":[[401,13],[450,13],[958,13],[1019,12]]},"98":{"position":[[97,12],[327,12],[454,12]]},"120":{"position":[[517,12]]},"134":{"position":[[1311,12]]},"144":{"position":[[545,12]]},"146":{"position":[[1016,12],[1222,13],[1310,12],[1405,13],[1482,13]]},"152":{"position":[[878,13]]},"156":{"position":[[182,12],[281,12],[439,13],[1723,12]]},"170":{"position":[[118,12],[903,12],[1843,12],[2114,12]]},"180":{"position":[[2945,12]]},"182":{"position":[[115,13]]},"202":{"position":[[925,12]]},"206":{"position":[[728,12]]},"235":{"position":[[228,13],[1597,13]]},"306":{"position":[[703,15],[1190,12],[2081,13],[2211,15],[3805,15]]},"310":{"position":[[558,13],[724,15],[791,12]]},"328":{"position":[[223,13]]},"354":{"position":[[4,12]]},"356":{"position":[[4,12],[62,12]]},"358":{"position":[[4,12]]},"366":{"position":[[205,12]]},"368":{"position":[[114,12],[225,12],[336,12],[505,13]]},"372":{"position":[[15,12],[182,12]]},"374":{"position":[[66,12],[110,12]]},"376":{"position":[[74,12]]},"382":{"position":[[38,13],[84,12],[200,12],[295,12],[334,12],[414,12],[551,12]]},"390":{"position":[[65,12]]},"392":{"position":[[223,13]]},"427":{"position":[[226,13]]},"435":{"position":[[223,13]]},"447":{"position":[[593,13]]},"455":{"position":[[24,12]]},"465":{"position":[[223,13]]},"469":{"position":[[188,13]]},"494":{"position":[[38,12],[265,12],[483,12]]},"498":{"position":[[33,12],[196,12],[323,12],[431,12]]},"500":{"position":[[44,12],[416,12],[984,12],[1189,12],[1350,12],[1508,12]]},"506":{"position":[[62,13]]},"514":{"position":[[629,12]]},"526":{"position":[[137,12]]},"542":{"position":[[174,12]]},"544":{"position":[[198,12]]},"546":{"position":[[375,12],[532,12]]},"558":{"position":[[368,13]]},"560":{"position":[[376,12],[724,13]]},"564":{"position":[[324,14]]},"566":{"position":[[681,14]]},"568":{"position":[[873,12],[1009,12],[1051,12],[1137,12]]},"570":{"position":[[76,13]]},"574":{"position":[[727,12]]},"594":{"position":[[122,12],[494,12]]},"596":{"position":[[68,12],[163,12]]},"598":{"position":[[129,12],[218,12]]},"608":{"position":[[694,12]]},"610":{"position":[[126,12],[467,12]]},"612":{"position":[[295,12],[383,12]]},"622":{"position":[[212,12]]},"626":{"position":[[928,13]]},"630":{"position":[[123,12],[202,12],[269,12]]},"732":{"position":[[74,12],[155,12]]},"742":{"position":[[142,13]]},"744":{"position":[[241,13]]},"750":{"position":[[680,12]]},"760":{"position":[[43,13]]},"770":{"position":[[21,12]]},"773":{"position":[[163,12]]},"775":{"position":[[370,13]]},"781":{"position":[[478,14]]},"799":{"position":[[147,12]]},"801":{"position":[[712,12],[895,12]]},"803":{"position":[[44,12]]},"805":{"position":[[1015,13]]},"811":{"position":[[371,12],[1042,13],[4193,13],[4296,13],[4373,12]]},"823":{"position":[[115,12],[196,12]]},"837":{"position":[[157,13]]},"843":{"position":[[254,13]]},"849":{"position":[[189,13],[228,12],[283,12]]},"857":{"position":[[302,13],[633,13],[907,12]]},"867":{"position":[[43,13]]},"915":{"position":[[21,12]]},"921":{"position":[[586,12]]},"923":{"position":[[371,13]]},"935":{"position":[[162,12]]},"937":{"position":[[371,13]]},"943":{"position":[[300,13],[551,12],[660,12]]},"955":{"position":[[49,13],[106,13]]},"957":{"position":[[55,13]]},"959":{"position":[[51,13],[132,12],[509,12],[575,12]]},"961":{"position":[[79,12]]},"963":{"position":[[510,14]]},"1100":{"position":[[1051,13]]},"1116":{"position":[[731,12],[786,12]]},"1159":{"position":[[1978,12]]}}}],["orchestrator.proto",{"_index":2527,"t":{"570":{"position":[[23,19]]},"596":{"position":[[23,19]]}}}],["orchestrator]2023",{"_index":2025,"t":{"306":{"position":[[1082,17]]}}}],["orchestrator][../reference/cli/orchestrator.md",{"_index":2835,"t":{"811":{"position":[[451,49]]}}}],["orchestrator_endpoint",{"_index":1162,"t":{"146":{"position":[[381,21],[1925,21]]},"1100":{"position":[[975,22]]}}}],["orchestrator_endpoint=grpc://foo:9005",{"_index":2360,"t":{"455":{"position":[[247,38]]}}}],["orchestrator_host",{"_index":1178,"t":{"146":{"position":[[2043,17]]}}}],["orchestrator_http_port=9003",{"_index":1316,"t":{"170":{"position":[[851,27]]}}}],["orchestrator_port",{"_index":1179,"t":{"146":{"position":[[2163,17]]}}}],["orchestrator_port=9000environment_port=9001random_agent_port=9002dqn_agent_port=9003directory_port=9005cogment_directory_endpoint=\"grpc://localhost:${directory_port",{"_index":1191,"t":{"146":{"position":[[3729,166]]}}}],["orchestrator_start",{"_index":1146,"t":{"142":{"position":[[716,18]]},"152":{"position":[[824,20]]},"170":{"position":[[2060,20]]}}}],["order",{"_index":77,"t":{"8":{"position":[[138,5]]},"44":{"position":[[219,5]]},"52":{"position":[[3,5]]},"156":{"position":[[210,5]]},"158":{"position":[[49,5]]},"204":{"position":[[573,5]]},"235":{"position":[[365,5]]},"296":{"position":[[104,5],[341,5],[1049,6]]},"300":{"position":[[323,5],[417,5],[478,6],[528,5]]},"378":{"position":[[121,6]]},"524":{"position":[[966,5]]},"526":{"position":[[857,5]]},"538":{"position":[[406,6]]},"540":{"position":[[523,5],[551,5]]},"562":{"position":[[829,5]]},"564":{"position":[[655,5]]},"618":{"position":[[726,5]]},"626":{"position":[[1379,5]]},"732":{"position":[[511,5]]},"805":{"position":[[366,6]]},"825":{"position":[[3,5]]},"1150":{"position":[[102,5]]},"1157":{"position":[[676,5]]}}}],["origin",{"_index":1743,"t":{"239":{"position":[[1694,8],[1984,8],[6964,6]]},"730":{"position":[[581,11]]},"821":{"position":[[756,11]]}}}],["os",{"_index":1059,"t":{"126":{"position":[[1024,2]]},"200":{"position":[[746,2]]}}}],["other",{"_index":312,"t":{"24":{"position":[[1041,6]]},"229":{"position":[[2610,6]]},"306":{"position":[[478,8]]},"799":{"position":[[909,7]]},"811":{"position":[[4314,6]]}}}],["other_servic",{"_index":2617,"t":{"638":{"position":[[340,13],[1180,14]]}}}],["otheractornam",{"_index":743,"t":{"76":{"position":[[668,17]]}}}],["otherwis",{"_index":1679,"t":{"224":{"position":[[92,9]]},"239":{"position":[[594,10],[2724,9],[3669,9],[6252,9],[6375,10],[7735,10]]},"269":{"position":[[142,9]]},"308":{"position":[[2742,9]]},"574":{"position":[[771,10]]},"584":{"position":[[268,9]]},"750":{"position":[[723,10]]},"768":{"position":[[120,10]]},"811":{"position":[[2682,10]]},"833":{"position":[[67,10]]},"857":{"position":[[951,10]]},"863":{"position":[[524,9]]},"871":{"position":[[84,10]]},"879":{"position":[[838,10]]},"913":{"position":[[117,10]]},"993":{"position":[[84,10]]},"1005":{"position":[[84,10]]},"1037":{"position":[[148,10]]},"1047":{"position":[[84,10]]},"1051":{"position":[[84,10]]},"1055":{"position":[[84,10]]},"1108":{"position":[[331,9]]},"1116":{"position":[[222,9]]},"1126":{"position":[[219,9]]},"1128":{"position":[[179,10]]},"1132":{"position":[[338,10]]},"1136":{"position":[[1039,10]]},"1146":{"position":[[335,10]]}}}],["out",{"_index":35,"t":{"4":{"position":[[100,3]]},"10":{"position":[[793,3]]},"44":{"position":[[324,3]]},"46":{"position":[[84,3]]},"122":{"position":[[164,3],[212,3]]},"124":{"position":[[2094,3]]},"138":{"position":[[237,3],[2299,3]]},"180":{"position":[[3540,3]]},"194":{"position":[[871,3]]},"202":{"position":[[712,3]]},"204":{"position":[[1339,3]]},"210":{"position":[[80,3]]},"239":{"position":[[8039,3]]},"306":{"position":[[1829,3]]},"496":{"position":[[92,3]]},"622":{"position":[[128,3]]},"626":{"position":[[633,3],[1000,3],[1126,3],[1264,3],[1460,3],[2098,3]]},"801":{"position":[[1255,3]]},"975":{"position":[[270,5]]},"1007":{"position":[[491,3],[519,3],[684,3],[933,3],[1094,3],[1268,3]]},"1021":{"position":[[93,3],[414,3]]},"1132":{"position":[[363,4]]},"1146":{"position":[[325,4]]}}}],["out_of_sync",{"_index":2584,"t":{"626":{"position":[[84,11],[551,12]]},"1007":{"position":[[417,12]]}}}],["outcom",{"_index":1550,"t":{"198":{"position":[[621,7]]}}}],["outgo",{"_index":2522,"t":{"568":{"position":[[652,8]]}}}],["outlin",{"_index":237,"t":{"18":{"position":[[22,7]]}}}],["output",{"_index":167,"t":{"12":{"position":[[491,8],[545,7]]},"18":{"position":[[272,7]]},"22":{"position":[[102,8]]},"24":{"position":[[318,7],[627,8]]},"26":{"position":[[170,6],[232,6]]},"42":{"position":[[839,6]]},"124":{"position":[[1146,7],[1292,8],[1796,6],[2335,7]]},"128":{"position":[[102,7],[563,7]]},"134":{"position":[[73,6]]},"182":{"position":[[1264,6]]},"198":{"position":[[1268,8]]},"210":{"position":[[609,6],[830,7]]},"229":{"position":[[1554,8]]},"253":{"position":[[19,6]]},"259":{"position":[[18,6]]},"265":{"position":[[79,7]]},"282":{"position":[[29,7]]},"302":{"position":[[180,6],[222,6],[353,6]]},"306":{"position":[[224,7],[723,6],[1672,6],[2672,6],[2776,6],[2812,6],[2869,6],[2897,6],[3380,6],[3430,7],[4038,6],[4167,6]]},"328":{"position":[[171,6]]},"330":{"position":[[29,7]]},"392":{"position":[[171,6]]},"394":{"position":[[29,7]]},"413":{"position":[[968,7],[1043,6]]},"415":{"position":[[764,7],[781,6],[1211,6]]},"417":{"position":[[211,7],[228,6],[307,6]]},"419":{"position":[[428,6],[557,6],[1099,7],[1116,6],[1188,6],[1289,6],[1389,6],[1472,9],[1499,6]]},"421":{"position":[[1011,7],[1028,6],[1165,6]]},"435":{"position":[[171,6]]},"437":{"position":[[29,7]]},"465":{"position":[[171,6]]},"467":{"position":[[29,7]]},"596":{"position":[[527,6]]},"598":{"position":[[149,6]]},"612":{"position":[[403,6]]},"805":{"position":[[405,6],[602,6]]},"819":{"position":[[479,6],[986,6]]},"825":{"position":[[262,6],[363,6],[511,6]]}}}],["outsid",{"_index":348,"t":{"28":{"position":[[369,7]]}}}],["outstand",{"_index":128,"t":{"10":{"position":[[586,11]]},"239":{"position":[[661,11]]}}}],["over",{"_index":709,"t":{"73":{"position":[[581,4],[1106,4]]},"82":{"position":[[0,4]]},"128":{"position":[[46,4]]},"154":{"position":[[231,4]]},"160":{"position":[[231,4]]},"216":{"position":[[2199,4]]},"218":{"position":[[203,4]]},"364":{"position":[[73,4]]},"756":{"position":[[125,4],[228,4]]},"775":{"position":[[28,4]]},"799":{"position":[[900,4]]},"863":{"position":[[130,4]]},"923":{"position":[[28,4]]},"937":{"position":[[28,4]]},"953":{"position":[[28,4]]},"985":{"position":[[28,4]]},"1017":{"position":[[28,4]]},"1023":{"position":[[28,4]]},"1025":{"position":[[28,4]]},"1045":{"position":[[284,4],[411,4]]},"1057":{"position":[[28,4]]},"1059":{"position":[[28,4]]},"1061":{"position":[[28,4]]},"1063":{"position":[[28,4]]}}}],["overall_load",{"_index":1962,"t":{"296":{"position":[[437,14],[539,14],[1116,14]]},"409":{"position":[[745,12]]},"536":{"position":[[752,15]]}}}],["overridden",{"_index":2061,"t":{"306":{"position":[[4381,10],[4604,10]]}}}],["overwritten",{"_index":2939,"t":{"899":{"position":[[316,12]]},"1159":{"position":[[1176,11],[1416,12],[1578,12]]}}}],["owner",{"_index":1715,"t":{"239":{"position":[[191,5],[235,5],[2177,5],[2267,6],[2773,5]]},"308":{"position":[[846,11],[1063,13]]}}}],["owner=elvi",{"_index":2078,"t":{"308":{"position":[[702,12]]}}}],["ownership",{"_index":111,"t":{"10":{"position":[[242,9]]},"239":{"position":[[613,9],[701,9]]}}}],["p1",{"_index":1572,"t":{"204":{"position":[[1932,5]]},"214":{"position":[[1156,2]]},"216":{"position":[[2253,5],[5068,2]]}}}],["p1.actor_nam",{"_index":1579,"t":{"206":{"position":[[438,15]]},"208":{"position":[[1864,15]]},"210":{"position":[[311,15]]},"216":{"position":[[2536,15],[3477,15],[4026,15]]}}}],["p1_state",{"_index":1575,"t":{"206":{"position":[[302,8]]},"216":{"position":[[2400,8]]}}}],["p1_state.won_last",{"_index":1598,"t":{"208":{"position":[[1107,18]]},"216":{"position":[[3124,18]]}}}],["p2",{"_index":1574,"t":{"204":{"position":[[1954,5]]},"214":{"position":[[1245,2]]},"216":{"position":[[2275,5],[5157,2]]}}}],["p2.actor_nam",{"_index":1582,"t":{"206":{"position":[[496,15]]},"208":{"position":[[1922,15]]},"210":{"position":[[375,15]]},"216":{"position":[[2594,15],[3535,15],[4090,15]]}}}],["p2_state.won_last",{"_index":1602,"t":{"208":{"position":[[1188,18]]},"216":{"position":[[3205,18]]}}}],["pack",{"_index":2949,"t":{"917":{"position":[[966,7]]},"931":{"position":[[265,7]]},"941":{"position":[[259,7]]}}}],["packag",{"_index":483,"t":{"52":{"position":[[278,8]]},"126":{"position":[[1027,7]]},"128":{"position":[[1045,7]]},"136":{"position":[[312,7]]},"138":{"position":[[2697,8]]},"200":{"position":[[749,7]]},"229":{"position":[[1935,7],[1956,8],[2047,8],[2114,7]]},"233":{"position":[[218,8]]},"512":{"position":[[645,7]]}}}],["package.json",{"_index":893,"t":{"94":{"position":[[826,12]]}}}],["pad",{"_index":2692,"t":{"686":{"position":[[847,8]]},"1029":{"position":[[348,8]]}}}],["paddl",{"_index":206,"t":{"14":{"position":[[417,9],[570,7]]}}}],["page",{"_index":47,"t":{"6":{"position":[[60,4]]},"10":{"position":[[651,4]]},"12":{"position":[[197,4]]},"30":{"position":[[1133,5]]},"50":{"position":[[964,5]]},"128":{"position":[[1212,6]]},"180":{"position":[[4386,4]]},"229":{"position":[[1711,5],[2720,5]]},"415":{"position":[[515,4],[618,5],[739,4]]},"1069":{"position":[[9,4]]}}}],["pagin",{"_index":2650,"t":{"658":{"position":[[1140,9]]}}}],["pair",{"_index":1549,"t":{"198":{"position":[[481,5]]},"803":{"position":[[477,6]]}}}],["palett",{"_index":1370,"t":{"178":{"position":[[480,8]]}}}],["paper",{"_index":1072,"t":{"130":{"position":[[392,6]]},"136":{"position":[[489,6],[671,6]]},"138":{"position":[[2610,5]]},"156":{"position":[[738,6],[768,6],[811,7],[1009,5],[2778,6]]},"158":{"position":[[1027,5]]},"180":{"position":[[1367,8],[1441,6],[2769,6]]},"190":{"position":[[435,6],[458,6]]},"198":{"position":[[392,5]]},"204":{"position":[[940,6],[1185,6],[1208,6]]},"216":{"position":[[2058,6],[2091,6],[2114,6]]},"235":{"position":[[2004,6]]}}}],["parallel",{"_index":396,"t":{"36":{"position":[[271,8]]},"229":{"position":[[2521,8]]},"300":{"position":[[186,9]]},"304":{"position":[[77,8]]},"1108":{"position":[[150,9]]},"1118":{"position":[[114,9],[305,9],[412,9]]},"1148":{"position":[[47,9],[115,8],[255,12]]}}}],["param",{"_index":769,"t":{"80":{"position":[[356,6],[1099,6]]},"84":{"position":[[135,6]]},"104":{"position":[[430,6]]},"106":{"position":[[93,6]]},"110":{"position":[[221,6]]},"120":{"position":[[418,6],[549,7],[632,6]]},"156":{"position":[[2262,6]]},"216":{"position":[[1146,6],[5806,6]]},"500":{"position":[[166,7]]},"574":{"position":[[135,6],[333,7]]},"692":{"position":[[175,6],[388,7]]},"696":{"position":[[171,6]]},"1009":{"position":[[12,7]]}}}],["paramet",{"_index":241,"t":{"18":{"position":[[107,10]]},"62":{"position":[[21,10],[43,11]]},"66":{"position":[[449,10],[533,11],[717,11],[776,10]]},"71":{"position":[[1106,10]]},"80":{"position":[[378,10],[489,10],[620,10]]},"88":{"position":[[630,9],[1615,9]]},"90":{"position":[[121,10],[403,11]]},"96":{"position":[[243,10],[283,10],[419,10],[996,10]]},"100":{"position":[[108,11],[213,10]]},"116":{"position":[[1104,9]]},"120":{"position":[[616,10],[685,10],[869,11]]},"138":{"position":[[473,9],[1292,11],[1375,10],[1475,10],[1712,11],[2016,9],[3253,10]]},"146":{"position":[[1282,9],[1693,10],[4070,10]]},"148":{"position":[[561,9]]},"170":{"position":[[1803,10],[1911,11],[2030,10]]},"172":{"position":[[4,10],[69,10],[136,11]]},"212":{"position":[[165,11],[531,9]]},"229":{"position":[[1149,9]]},"366":{"position":[[49,10],[88,10],[294,10],[361,10],[391,10]]},"368":{"position":[[248,10]]},"378":{"position":[[162,10],[230,11],[294,10]]},"390":{"position":[[128,9]]},"419":{"position":[[799,10]]},"478":{"position":[[133,11],[209,10]]},"486":{"position":[[324,10]]},"488":{"position":[[645,9],[742,9],[828,9]]},"498":{"position":[[221,10],[336,10]]},"500":{"position":[[127,10],[246,10],[539,11],[570,10],[729,10],[1127,10],[1210,10],[1289,10],[1329,10],[1474,10]]},"502":{"position":[[73,9],[693,9],[817,9]]},"506":{"position":[[14,10]]},"508":{"position":[[75,9],[370,9],[391,9],[773,9]]},"524":{"position":[[1009,12]]},"526":{"position":[[766,11],[811,11]]},"540":{"position":[[7,10],[41,12],[294,10],[394,10],[451,10]]},"542":{"position":[[0,10],[49,12]]},"544":{"position":[[0,10],[48,12]]},"546":{"position":[[0,10],[42,12]]},"566":{"position":[[337,11]]},"574":{"position":[[359,10],[440,10]]},"594":{"position":[[546,11]]},"596":{"position":[[480,11]]},"610":{"position":[[519,11]]},"622":{"position":[[264,11]]},"624":{"position":[[268,11],[342,11]]},"626":{"position":[[1934,10]]},"632":{"position":[[204,10]]},"658":{"position":[[115,11]]},"692":{"position":[[396,10]]},"712":{"position":[[186,10]]},"716":{"position":[[177,10]]},"724":{"position":[[484,10]]},"732":{"position":[[10,10],[47,10],[185,10],[295,10],[415,11],[445,10]]},"740":{"position":[[0,11]]},"742":{"position":[[82,11]]},"744":{"position":[[132,11]]},"746":{"position":[[90,11]]},"750":{"position":[[33,10],[179,11]]},"752":{"position":[[38,11]]},"754":{"position":[[41,11]]},"756":{"position":[[269,11]]},"758":{"position":[[56,11]]},"760":{"position":[[57,11]]},"764":{"position":[[61,11]]},"766":{"position":[[65,11]]},"768":{"position":[[50,11]]},"770":{"position":[[218,9],[282,9],[347,11]]},"773":{"position":[[96,11]]},"775":{"position":[[421,11]]},"777":{"position":[[43,11]]},"779":{"position":[[69,11],[674,12]]},"781":{"position":[[176,11]]},"799":{"position":[[10,10],[34,10],[120,10],[165,9],[348,11],[678,9],[778,10],[851,10],[953,10]]},"801":{"position":[[2172,9],[2479,11],[2632,11]]},"803":{"position":[[4,9],[65,11],[99,10],[362,10],[399,9],[544,10],[686,10],[768,9]]},"805":{"position":[[6,10],[65,10],[157,10],[277,10],[512,10],[643,10],[806,9]]},"811":{"position":[[2111,12],[4116,10]]},"823":{"position":[[10,10],[88,10],[226,10],[337,10],[457,11],[487,10]]},"831":{"position":[[0,11]]},"833":{"position":[[0,11]]},"835":{"position":[[291,11]]},"837":{"position":[[82,11]]},"839":{"position":[[75,11]]},"841":{"position":[[80,11]]},"843":{"position":[[132,11],[483,10],[785,10]]},"845":{"position":[[96,11]]},"847":{"position":[[90,11]]},"849":{"position":[[356,11]]},"851":{"position":[[192,10],[227,11]]},"855":{"position":[[0,11]]},"857":{"position":[[44,9],[86,11],[283,10],[397,10],[503,10],[1041,10],[1107,10],[1136,10]]},"859":{"position":[[38,11]]},"861":{"position":[[41,11]]},"863":{"position":[[283,11]]},"865":{"position":[[56,11]]},"867":{"position":[[57,11]]},"871":{"position":[[0,11]]},"873":{"position":[[192,11],[446,12]]},"875":{"position":[[97,11],[681,12]]},"877":{"position":[[62,11]]},"879":{"position":[[171,11]]},"883":{"position":[[0,11]]},"885":{"position":[[425,11]]},"887":{"position":[[523,11]]},"889":{"position":[[139,11]]},"891":{"position":[[96,11]]},"893":{"position":[[72,11]]},"895":{"position":[[91,11]]},"897":{"position":[[65,11]]},"899":{"position":[[101,11]]},"901":{"position":[[95,11]]},"903":{"position":[[327,11]]},"905":{"position":[[675,11]]},"909":{"position":[[61,11]]},"911":{"position":[[65,11]]},"913":{"position":[[50,11]]},"915":{"position":[[243,9],[307,9],[372,11]]},"917":{"position":[[47,11]]},"921":{"position":[[136,11],[305,9]]},"923":{"position":[[494,11]]},"925":{"position":[[188,11],[425,10]]},"927":{"position":[[131,11],[277,9]]},"929":{"position":[[54,11]]},"931":{"position":[[69,11],[669,12]]},"935":{"position":[[96,11]]},"937":{"position":[[422,11]]},"939":{"position":[[43,11]]},"941":{"position":[[69,11],[716,12]]},"943":{"position":[[23,10],[278,10],[351,10],[435,10],[485,10],[531,10]]},"945":{"position":[[40,11]]},"947":{"position":[[70,11]]},"949":{"position":[[402,10]]},"951":{"position":[[35,11]]},"953":{"position":[[94,11]]},"957":{"position":[[0,11]]},"961":{"position":[[0,11]]},"963":{"position":[[176,11]]},"965":{"position":[[186,12]]},"975":{"position":[[396,12]]},"983":{"position":[[63,11]]},"985":{"position":[[68,11]]},"989":{"position":[[21,10],[56,12],[1155,10],[1319,12]]},"991":{"position":[[0,11],[92,10]]},"993":{"position":[[0,11]]},"995":{"position":[[168,11]]},"997":{"position":[[41,11],[53,11],[95,11]]},"999":{"position":[[19,9],[75,11]]},"1001":{"position":[[21,10],[66,12],[727,9]]},"1003":{"position":[[0,11],[92,10]]},"1005":{"position":[[0,11]]},"1007":{"position":[[365,10],[744,9]]},"1009":{"position":[[0,11],[45,10]]},"1011":{"position":[[171,11]]},"1013":{"position":[[50,11]]},"1015":{"position":[[66,11]]},"1017":{"position":[[106,10],[131,11]]},"1019":{"position":[[51,11],[211,10]]},"1021":{"position":[[115,11],[280,10]]},"1023":{"position":[[64,11]]},"1025":{"position":[[65,11]]},"1033":{"position":[[314,11]]},"1035":{"position":[[70,11],[284,10]]},"1037":{"position":[[46,11]]},"1039":{"position":[[49,11]]},"1041":{"position":[[127,11]]},"1045":{"position":[[465,11],[516,10]]},"1047":{"position":[[0,11]]},"1051":{"position":[[0,11]]},"1055":{"position":[[0,11]]},"1057":{"position":[[145,11]]},"1059":{"position":[[93,11]]},"1061":{"position":[[87,11]]},"1063":{"position":[[83,11]]},"1089":{"position":[[338,11]]},"1091":{"position":[[338,11]]},"1093":{"position":[[338,11]]},"1095":{"position":[[338,11]]},"1097":{"position":[[338,11]]},"1100":{"position":[[0,11]]},"1102":{"position":[[48,11]]},"1104":{"position":[[47,11]]},"1106":{"position":[[52,11]]},"1108":{"position":[[35,11]]},"1110":{"position":[[74,11]]},"1112":{"position":[[47,11]]},"1116":{"position":[[4,10],[61,11],[686,10]]},"1120":{"position":[[233,11]]},"1122":{"position":[[95,11]]},"1124":{"position":[[167,11]]},"1126":{"position":[[146,11]]},"1128":{"position":[[52,11]]},"1130":{"position":[[51,11]]},"1132":{"position":[[186,11]]},"1136":{"position":[[0,11],[816,9]]},"1138":{"position":[[26,11],[100,10]]},"1140":{"position":[[68,11]]},"1142":{"position":[[120,11]]},"1144":{"position":[[55,11]]},"1146":{"position":[[233,11]]},"1148":{"position":[[57,11]]},"1152":{"position":[[92,11],[139,10]]},"1154":{"position":[[47,11]]},"1157":{"position":[[363,10],[507,10],[957,10],[1344,10]]},"1159":{"position":[[134,11],[321,10],[357,10],[754,10],[1091,10],[1559,10]]},"1161":{"position":[[252,10]]},"1163":{"position":[[382,10],[522,10]]},"1165":{"position":[[389,10]]}}}],["parametr",{"_index":765,"t":{"80":{"position":[[253,11]]},"90":{"position":[[939,11]]},"144":{"position":[[781,11]]}}}],["params.yaml",{"_index":899,"t":{"96":{"position":[[629,11],[808,11]]},"110":{"position":[[544,11]]},"172":{"position":[[389,11]]},"180":{"position":[[2407,12],[2549,12]]},"514":{"position":[[573,11]]}}}],["params=\"./params.yaml",{"_index":1335,"t":{"170":{"position":[[2258,23]]}}}],["params=./path/to/params.yaml",{"_index":2227,"t":{"366":{"position":[[506,29]]}}}],["params=params.yaml",{"_index":903,"t":{"96":{"position":[[1042,18]]}}}],["params_sourc",{"_index":2816,"t":{"803":{"position":[[1037,14]]}}}],["parent",{"_index":2729,"t":{"696":{"position":[[1003,6],[1129,6]]},"698":{"position":[[627,6]]},"700":{"position":[[434,6]]}}}],["pars",{"_index":1433,"t":{"180":{"position":[[3521,7]]},"413":{"position":[[1191,5]]}}}],["part",{"_index":397,"t":{"38":{"position":[[24,4]]},"50":{"position":[[868,4]]},"124":{"position":[[1571,4]]},"138":{"position":[[120,4],[381,4]]},"140":{"position":[[91,5]]},"154":{"position":[[10,4]]},"160":{"position":[[10,4]]},"178":{"position":[[895,4]]},"180":{"position":[[371,5],[1549,4]]},"202":{"position":[[166,5]]},"229":{"position":[[624,5]]},"239":{"position":[[4969,4],[5052,4],[5266,4],[5378,4]]},"271":{"position":[[601,4]]},"306":{"position":[[2011,4],[4557,4]]},"308":{"position":[[2766,4]]},"478":{"position":[[191,4]]},"512":{"position":[[113,5]]},"672":{"position":[[0,4]]},"682":{"position":[[0,4]]},"696":{"position":[[92,4]]},"698":{"position":[[72,4]]},"700":{"position":[[73,4]]},"710":{"position":[[0,4]]},"716":{"position":[[0,4]]},"1071":{"position":[[27,4]]},"1110":{"position":[[188,4]]},"1112":{"position":[[161,4]]},"1157":{"position":[[737,5]]}}}],["parti",{"_index":1796,"t":{"239":{"position":[[5577,5]]}}}],["partial",{"_index":549,"t":{"56":{"position":[[530,7]]},"134":{"position":[[327,9],[417,9]]},"413":{"position":[[1072,7]]},"626":{"position":[[660,9],[2137,7]]},"1159":{"position":[[410,9]]}}}],["particip",{"_index":120,"t":{"10":{"position":[[424,11]]},"28":{"position":[[133,13]]},"54":{"position":[[352,13],[936,13]]},"80":{"position":[[507,11]]},"124":{"position":[[364,11]]},"136":{"position":[[1548,11]]},"138":{"position":[[99,12],[3211,11]]},"229":{"position":[[1493,13]]},"550":{"position":[[20,13]]},"594":{"position":[[252,13],[338,12]]},"596":{"position":[[237,13]]},"598":{"position":[[18,11],[317,13]]},"602":{"position":[[723,13],[818,12],[875,12]]},"604":{"position":[[701,12],[757,12]]},"606":{"position":[[112,13],[552,13],[622,13],[868,13]]},"608":{"position":[[546,11],[629,11]]},"612":{"position":[[184,11],[489,13]]},"614":{"position":[[766,12]]},"616":{"position":[[828,12],[884,12]]},"618":{"position":[[380,13],[664,13]]},"811":{"position":[[5579,11]]},"933":{"position":[[805,13]]}}}],["particular",{"_index":135,"t":{"10":{"position":[[769,10]]},"32":{"position":[[206,10]]},"114":{"position":[[143,10]]},"120":{"position":[[730,10]]},"188":{"position":[[1180,11]]},"229":{"position":[[1411,11]]},"239":{"position":[[7410,10]]},"271":{"position":[[498,10]]},"298":{"position":[[2354,10]]},"312":{"position":[[335,10]]},"459":{"position":[[82,10]]},"522":{"position":[[542,10]]},"538":{"position":[[395,10]]},"548":{"position":[[420,10]]},"550":{"position":[[189,10]]},"552":{"position":[[280,10]]},"554":{"position":[[314,10]]},"562":{"position":[[488,10]]},"564":{"position":[[470,10]]},"674":{"position":[[182,10]]},"686":{"position":[[1055,10]]},"1001":{"position":[[38,10]]}}}],["particularli",{"_index":403,"t":{"42":{"position":[[375,12]]}}}],["pass",{"_index":335,"t":{"26":{"position":[[1149,4]]},"71":{"position":[[87,6]]},"80":{"position":[[141,6]]},"90":{"position":[[1662,4]]},"134":{"position":[[1235,6]]},"136":{"position":[[786,4]]},"138":{"position":[[1458,4],[1967,7]]},"170":{"position":[[1787,4]]},"188":{"position":[[65,7]]},"208":{"position":[[1634,4]]},"210":{"position":[[761,4]]},"212":{"position":[[1115,4]]},"216":{"position":[[616,4],[2374,4],[3367,4],[4517,6]]},"229":{"position":[[2321,6]]},"378":{"position":[[492,6]]},"478":{"position":[[169,4]]},"480":{"position":[[279,6],[561,6]]},"498":{"position":[[417,6]]},"516":{"position":[[178,6]]},"857":{"position":[[615,6]]},"919":{"position":[[134,6]]},"933":{"position":[[134,6]]},"943":{"position":[[99,6]]},"949":{"position":[[122,6]]},"1136":{"position":[[770,6]]},"1138":{"position":[[119,6]]},"1157":{"position":[[20,6]]},"1159":{"position":[[17,6]]},"1161":{"position":[[17,6]]},"1163":{"position":[[17,6]]},"1165":{"position":[[17,6]]}}}],["passthrough_pre_trial_hook(pre_trial_hook_sess",{"_index":840,"t":{"90":{"position":[[1811,51]]}}}],["past",{"_index":692,"t":{"71":{"position":[[887,4],[984,4],[1033,4]]},"801":{"position":[[1065,4],[1178,4],[1211,4]]},"1007":{"position":[[678,5]]}}}],["patent",{"_index":1769,"t":{"239":{"position":[[3378,6],[3596,6],[3739,6],[3965,6],[4162,6],[4192,6],[4841,7]]}}}],["path",{"_index":1687,"t":{"224":{"position":[[433,4]]},"255":{"position":[[481,5]]},"267":{"position":[[283,5]]},"302":{"position":[[64,5]]},"322":{"position":[[0,4]]},"407":{"position":[[470,5]]},"419":{"position":[[306,4],[1377,4]]},"421":{"position":[[325,4],[1115,4],[1459,4]]},"433":{"position":[[0,4]]},"459":{"position":[[0,4]]},"807":{"position":[[115,4]]},"811":{"position":[[1129,4],[2176,4],[2817,5],[3141,5],[3175,4],[3289,4],[3576,5],[4075,5],[4253,4],[4432,4]]}}}],["pattern",{"_index":775,"t":{"80":{"position":[[913,8]]}}}],["paus",{"_index":3089,"t":{"1120":{"position":[[10,5]]},"1122":{"position":[[35,7]]},"1128":{"position":[[165,7]]}}}],["payload",{"_index":742,"t":{"76":{"position":[[648,8],[802,8]]},"78":{"position":[[552,7]]},"556":{"position":[[197,7],[452,8]]},"694":{"position":[[258,8],[524,9],[545,7]]},"696":{"position":[[296,8],[372,9],[401,8],[988,7],[1114,7]]},"698":{"position":[[612,7]]},"700":{"position":[[192,7],[367,8],[376,7],[419,7]]},"779":{"position":[[81,8]]},"931":{"position":[[81,8]]},"941":{"position":[[81,8]]},"979":{"position":[[285,8]]},"1067":{"position":[[260,8]]}}}],["pb",{"_index":1404,"t":{"180":{"position":[[1100,2]]}}}],["pb.playeract",{"_index":1420,"t":{"180":{"position":[[2834,17]]}}}],["pedestrian",{"_index":461,"t":{"50":{"position":[[501,10],[749,11]]},"76":{"position":[[305,12]]}}}],["pedestrian\");await",{"_index":597,"t":{"60":{"position":[[1269,19]]}}}],["pem",{"_index":2254,"t":{"384":{"position":[[21,3]]},"386":{"position":[[23,3]]},"388":{"position":[[23,3]]},"955":{"position":[[194,3],[335,3],[564,3]]},"959":{"position":[[304,4],[330,3],[497,3]]}}}],["pend",{"_index":796,"t":{"84":{"position":[[268,7]]},"566":{"position":[[89,7],[293,8]]},"781":{"position":[[132,8]]},"963":{"position":[[132,8]]}}}],["peopl",{"_index":89,"t":{"8":{"position":[[353,7]]},"492":{"position":[[215,6]]}}}],["per",{"_index":800,"t":{"86":{"position":[[216,3]]},"134":{"position":[[233,3],[247,3]]},"206":{"position":[[930,3]]},"526":{"position":[[430,3],[592,3]]},"610":{"position":[[291,3]]},"754":{"position":[[330,3]]},"861":{"position":[[345,3]]},"873":{"position":[[534,3]]},"1110":{"position":[[53,3]]}}}],["perceiv",{"_index":282,"t":{"22":{"position":[[270,9]]},"132":{"position":[[135,8]]}}}],["percent",{"_index":1724,"t":{"239":{"position":[[632,7]]}}}],["perfom",{"_index":958,"t":{"110":{"position":[[38,8]]}}}],["perform",{"_index":256,"t":{"18":{"position":[[698,8],[1015,11]]},"30":{"position":[[552,11]]},"40":{"position":[[244,8],[561,11]]},"42":{"position":[[642,8]]},"71":{"position":[[327,10]]},"186":{"position":[[111,8],[942,8]]},"216":{"position":[[6509,8]]},"239":{"position":[[3269,8]]},"292":{"position":[[720,9]]},"298":{"position":[[1197,9],[1842,7]]},"520":{"position":[[477,7]]},"638":{"position":[[1438,10]]},"696":{"position":[[1044,9]]}}}],["period",{"_index":1910,"t":{"269":{"position":[[113,7]]},"290":{"position":[[111,14],[196,8]]},"390":{"position":[[78,12]]},"1007":{"position":[[911,7],[1082,7]]},"1049":{"position":[[265,7]]}}}],["perman",{"_index":1892,"t":{"255":{"position":[[519,10],[597,11],[659,9],[725,9]]},"271":{"position":[[264,9]]},"292":{"position":[[557,9],[581,9],[639,11]]},"296":{"position":[[205,9]]},"298":{"position":[[1903,10]]}}}],["permiss",{"_index":1729,"t":{"239":{"position":[[797,11],[6798,10],[7583,11]]}}}],["perpetu",{"_index":1760,"t":{"239":{"position":[[3107,10],[3487,10]]}}}],["persist",{"_index":1937,"t":{"286":{"position":[[20,11],[171,11]]},"294":{"position":[[690,11]]}}}],["persistence_fil",{"_index":1939,"t":{"286":{"position":[[252,17]]}}}],["pertain",{"_index":1790,"t":{"239":{"position":[[4954,7],[5251,7]]},"783":{"position":[[92,8]]},"965":{"position":[[90,8]]}}}],["phase",{"_index":2393,"t":{"496":{"position":[[85,6]]},"592":{"position":[[226,7]]}}}],["phase}funct",{"_index":1324,"t":{"170":{"position":[[1461,14]]}}}],["pick",{"_index":1266,"t":{"158":{"position":[[1019,7]]},"212":{"position":[[334,4]]}}}],["piec",{"_index":133,"t":{"10":{"position":[[732,6]]},"26":{"position":[[60,6]]},"122":{"position":[[74,6]]},"132":{"position":[[716,6]]},"136":{"position":[[769,5]]}}}],["pip",{"_index":484,"t":{"52":{"position":[[293,3],[343,3]]},"110":{"position":[[691,3]]},"814":{"position":[[71,4],[76,3],[170,4],[175,3]]}}}],["pipelin",{"_index":2234,"t":{"378":{"position":[[133,8]]},"805":{"position":[[378,8]]},"849":{"position":[[316,8]]}}}],["place",{"_index":1793,"t":{"239":{"position":[[5329,7]]},"502":{"position":[[646,6]]},"524":{"position":[[820,6]]},"540":{"position":[[602,6]]},"562":{"position":[[879,6]]},"564":{"position":[[705,6]]},"618":{"position":[[776,6]]}}}],["placehold",{"_index":2444,"t":{"524":{"position":[[486,11]]}}}],["plaintext",{"_index":2164,"t":{"342":{"position":[[108,9]]},"344":{"position":[[48,9]]},"346":{"position":[[135,9],[477,9]]},"348":{"position":[[280,9]]},"350":{"position":[[80,9],[693,9],[1128,9]]},"352":{"position":[[70,9]]}}}],["platform",{"_index":44,"t":{"4":{"position":[[232,9]]},"110":{"position":[[152,8]]},"514":{"position":[[1072,8]]},"829":{"position":[[393,10]]}}}],["play",{"_index":1087,"t":{"132":{"position":[[868,6]]},"138":{"position":[[1611,6]]},"154":{"position":[[309,4]]},"156":{"position":[[1001,7],[2772,5]]},"158":{"position":[[135,6],[270,6],[340,6],[757,7],[1096,5]]},"160":{"position":[[285,4]]},"180":{"position":[[1168,5],[1776,5],[3980,10],[4477,6]]},"186":{"position":[[646,5],[733,4]]},"190":{"position":[[1036,4],[1212,4],[1366,4],[1672,4],[1705,4]]},"194":{"position":[[630,8]]},"202":{"position":[[791,5]]},"204":{"position":[[1238,6],[1454,6]]},"210":{"position":[[927,4],[971,6]]},"212":{"position":[[76,7]]},"216":{"position":[[1705,4],[3863,6]]},"224":{"position":[[675,4]]},"514":{"position":[[652,5]]}}}],["played\")print(f\"\\t",{"_index":1615,"t":{"210":{"position":[[290,18]]},"216":{"position":[[4005,18]]}}}],["player",{"_index":204,"t":{"14":{"position":[[401,7]]},"124":{"position":[[89,6],[354,6],[2080,8],[2372,6]]},"126":{"position":[[577,6]]},"128":{"position":[[523,6],[593,6],[669,6]]},"130":{"position":[[166,6],[786,6]]},"132":{"position":[[344,8],[479,6],[635,6],[847,7],[923,6]]},"138":{"position":[[533,6],[819,6],[1443,7],[1598,7],[2194,6],[3313,6]]},"156":{"position":[[19,6],[2723,6]]},"158":{"position":[[1079,6]]},"172":{"position":[[245,6],[309,6]]},"180":{"position":[[1920,6],[2666,8],[2723,6],[3779,7],[4419,6]]},"184":{"position":[[380,7],[492,7]]},"188":{"position":[[566,6],[771,6]]},"190":{"position":[[1597,6]]},"192":{"position":[[364,6]]},"194":{"position":[[533,6],[559,7]]},"198":{"position":[[632,6]]},"202":{"position":[[457,6],[765,7]]},"204":{"position":[[506,6],[1488,7],[1668,7]]},"206":{"position":[[28,6],[934,6]]},"208":{"position":[[179,6],[289,8],[369,7],[597,7],[622,7],[796,7],[1314,6],[1615,6]]},"210":{"position":[[998,6]]},"212":{"position":[[473,7],[1272,6]]},"216":{"position":[[1762,7],[2813,7],[4359,8],[6147,6]]}}}],["player'",{"_index":1091,"t":{"134":{"position":[[448,8]]},"206":{"position":[[131,8],[999,8]]},"208":{"position":[[143,8]]}}}],["player_1",{"_index":1114,"t":{"138":{"position":[[1020,8]]},"172":{"position":[[223,8]]},"180":{"position":[[2654,11]]}}}],["player_2",{"_index":1118,"t":{"138":{"position":[[1180,8]]},"172":{"position":[[287,8]]}}}],["playeract",{"_index":1070,"t":{"130":{"position":[[210,12],[276,12]]},"134":{"position":[[1035,12]]},"136":{"position":[[715,12],[813,12]]},"156":{"position":[[718,13]]},"208":{"position":[[395,12]]}}}],["playeraction(move=mov",{"_index":1274,"t":{"158":{"position":[[1378,23]]}}}],["playeraction(move=pap",{"_index":1237,"t":{"156":{"position":[[1449,24]]}}}],["playeraction(move=random.choice(mov",{"_index":1100,"t":{"136":{"position":[[1129,39]]},"138":{"position":[[2940,39]]}}}],["playerst",{"_index":1084,"t":{"132":{"position":[[754,12]]},"204":{"position":[[450,11],[663,11],[921,12]]},"206":{"position":[[880,11],[918,11]]},"208":{"position":[[845,12],[946,12]]},"216":{"position":[[2039,12],[2862,12],[2963,12]]}}}],["playerstate(won_last=fals",{"_index":1576,"t":{"206":{"position":[[313,27],[367,27]]},"216":{"position":[[2411,27],[2465,27]]}}}],["pleas",{"_index":101,"t":{"10":{"position":[[67,6],[474,6]]},"42":{"position":[[974,6]]},"56":{"position":[[683,6]]},"102":{"position":[[688,6]]},"168":{"position":[[642,6]]},"490":{"position":[[198,6]]}}}],["point",{"_index":191,"t":{"14":{"position":[[104,5]]},"30":{"position":[[598,5]]},"34":{"position":[[17,5]]},"50":{"position":[[189,5]]},"56":{"position":[[492,5]]},"71":{"position":[[807,5]]},"73":{"position":[[78,5]]},"88":{"position":[[297,5],[849,5]]},"216":{"position":[[3880,5]]},"222":{"position":[[292,5],[457,6]]},"224":{"position":[[352,6],[524,5]]},"235":{"position":[[1096,6],[1323,5]]},"296":{"position":[[570,6]]},"382":{"position":[[520,7]]},"524":{"position":[[1329,7]]},"530":{"position":[[305,5]]},"734":{"position":[[14,6]]},"809":{"position":[[254,6]]},"825":{"position":[[702,7]]},"905":{"position":[[319,5]]}}}],["pong",{"_index":202,"t":{"14":{"position":[[347,5]]}}}],["popul",{"_index":1562,"t":{"202":{"position":[[1236,8]]},"1159":{"position":[[784,9]]}}}],["port",{"_index":1045,"t":{"124":{"position":[[930,4]]},"126":{"position":[[860,5],[914,5],[1091,4]]},"144":{"position":[[807,4]]},"146":{"position":[[2220,4]]},"170":{"position":[[893,4],[990,4],[1557,4]]},"198":{"position":[[1051,4]]},"200":{"position":[[582,5],[636,5],[813,4]]},"229":{"position":[[727,5]]},"255":{"position":[[147,5],[161,4]]},"276":{"position":[[8,4],[160,5]]},"298":{"position":[[935,5],[949,4]]},"318":{"position":[[8,4],[118,5]]},"360":{"position":[[8,4],[204,5]]},"362":{"position":[[8,4],[234,5]]},"364":{"position":[[8,4],[327,4]]},"380":{"position":[[8,4]]},"427":{"position":[[8,4],[99,5],[427,5]]},"453":{"position":[[8,4]]},"457":{"position":[[8,4],[117,5]]},"642":{"position":[[205,4],[834,5],[866,4]]},"809":{"position":[[244,5]]},"811":{"position":[[439,4]]},"829":{"position":[[91,4],[175,4]]},"835":{"position":[[471,5],[495,4],[591,4],[779,4]]},"959":{"position":[[65,5],[88,4]]},"961":{"position":[[12,5],[35,4],[140,5]]}}}],["port:9010",{"_index":2120,"t":{"310":{"position":[[545,12]]}}}],["port:[0",{"_index":2119,"t":{"310":{"position":[[506,9]]}}}],["port=\"${directory_port",{"_index":1160,"t":{"144":{"position":[[1060,25]]}}}],["port=\"${web_client_port",{"_index":1327,"t":{"170":{"position":[[1518,25]]}}}],["port=12000",{"_index":2132,"t":{"318":{"position":[[230,11]]},"427":{"position":[[539,11]]},"457":{"position":[[229,11]]}}}],["port=9000",{"_index":2130,"t":{"314":{"position":[[81,9]]},"423":{"position":[[607,9]]}}}],["port=9005",{"_index":1137,"t":{"142":{"position":[[137,10]]},"273":{"position":[[71,9]]}}}],["port=9030",{"_index":1875,"t":{"251":{"position":[[163,9]]}}}],["posit",{"_index":986,"t":{"116":{"position":[[260,10]]},"188":{"position":[[194,8]]},"524":{"position":[[1173,8]]}}}],["possibl",{"_index":226,"t":{"16":{"position":[[59,8],[441,8]]},"56":{"position":[[369,8]]},"66":{"position":[[740,8]]},"82":{"position":[[146,8]]},"90":{"position":[[86,8]]},"116":{"position":[[622,14]]},"130":{"position":[[835,8]]},"132":{"position":[[43,8]]},"136":{"position":[[543,8]]},"138":{"position":[[1896,8]]},"144":{"position":[[190,9],[211,9]]},"198":{"position":[[142,8],[346,8]]},"239":{"position":[[8292,11]]},"280":{"position":[[45,8]]},"298":{"position":[[292,8]]},"328":{"position":[[45,8]]},"372":{"position":[[250,9]]},"392":{"position":[[45,8]]},"407":{"position":[[317,8]]},"435":{"position":[[45,8]]},"465":{"position":[[45,8]]},"488":{"position":[[225,14]]},"520":{"position":[[434,8]]},"534":{"position":[[436,8]]},"550":{"position":[[211,8]]},"560":{"position":[[123,8]]},"746":{"position":[[374,8]]},"811":{"position":[[54,8]]},"847":{"position":[[376,8]]}}}],["post",{"_index":2371,"t":{"478":{"position":[[78,4]]},"480":{"position":[[14,4],[382,4]]}}}],["post/get",{"_index":2375,"t":{"480":{"position":[[334,8]]}}}],["post_trial_callback",{"_index":3077,"t":{"1108":{"position":[[660,20]]},"1116":{"position":[[930,20]]}}}],["potenti",{"_index":910,"t":{"98":{"position":[[381,9]]},"296":{"position":[[663,9]]},"480":{"position":[[403,9],[496,9]]},"658":{"position":[[1308,9],[1743,9]]}}}],["power",{"_index":1720,"t":{"239":{"position":[[491,6]]}}}],["practic",{"_index":333,"t":{"26":{"position":[[1005,8]]}}}],["pre",{"_index":435,"t":{"46":{"position":[[1076,3],[1102,3],[1137,3]]},"66":{"position":[[676,3]]},"80":{"position":[[166,3],[650,3],[779,3]]},"84":{"position":[[181,3]]},"88":{"position":[[1490,3]]},"90":{"position":[[369,3],[1675,3]]},"96":{"position":[[475,3]]},"98":{"position":[[0,3]]},"100":{"position":[[367,3]]},"104":{"position":[[223,3],[560,3]]},"116":{"position":[[779,3],[800,3]]},"298":{"position":[[1517,3],[1536,3]]},"366":{"position":[[259,3]]},"378":{"position":[[33,3]]},"488":{"position":[[378,3],[399,3]]},"500":{"position":[[850,3],[1229,3],[1266,3]]},"502":{"position":[[412,3]]},"506":{"position":[[103,3]]},"516":{"position":[[195,3]]},"524":{"position":[[282,3]]},"574":{"position":[[261,3],[472,3]]},"630":{"position":[[61,3],[169,3]]},"732":{"position":[[111,3],[466,3]]},"750":{"position":[[76,3],[411,3]]},"799":{"position":[[201,3],[465,3],[639,3],[988,3]]},"801":{"position":[[59,3]]},"805":{"position":[[80,3],[116,3],[210,3],[920,3]]},"811":{"position":[[3761,3]]},"823":{"position":[[152,3],[508,3]]},"857":{"position":[[332,3],[362,3],[448,3],[1151,3]]},"943":{"position":[[125,3],[225,3]]},"1116":{"position":[[757,3]]}}}],["pre_hook_servic",{"_index":2612,"t":{"638":{"position":[[223,16],[795,17]]}}}],["pre_hook_session.actor",{"_index":783,"t":{"80":{"position":[[1244,23]]}}}],["pre_hook_session.environment_config",{"_index":780,"t":{"80":{"position":[[1129,35]]}}}],["pre_hook_session.environment_endpoint",{"_index":781,"t":{"80":{"position":[[1175,37]]}}}],["pre_hook_session.trial_config",{"_index":778,"t":{"80":{"position":[[1057,29]]}}}],["pre_hook_session.validate()context.register_pre_trial_hook(impl=my_pre_trial_hook",{"_index":790,"t":{"80":{"position":[[1574,82]]}}}],["pre_trial_callback",{"_index":3075,"t":{"1108":{"position":[[503,19]]},"1116":{"position":[[511,19]]},"1157":{"position":[[281,18]]}}}],["pre_trial_hook",{"_index":909,"t":{"98":{"position":[[353,16]]}}}],["pre_trial_hook_session.actor",{"_index":848,"t":{"90":{"position":[[2162,29]]}}}],["pre_trial_hook_session.environment_config",{"_index":842,"t":{"90":{"position":[[1914,41]]}}}],["pre_trial_hook_session.environment_endpoint",{"_index":844,"t":{"90":{"position":[[1990,43]]}}}],["pre_trial_hook_session.environment_implement",{"_index":846,"t":{"90":{"position":[[2070,49]]}}}],["pre_trial_hook_session.trial_config",{"_index":841,"t":{"90":{"position":[[1878,35]]}}}],["pre_trial_hook_session.trial_max_inact",{"_index":858,"t":{"90":{"position":[[2487,43]]}}}],["pre_trial_hook_session.trial_max_step",{"_index":856,"t":{"90":{"position":[[2423,38]]}}}],["pre_trial_hook_session.validate()context.register_pre_trial_hook(pre_trial_hook",{"_index":860,"t":{"90":{"position":[[2561,80]]}}}],["pre_trial_hooks=grpc://bar:9000",{"_index":2239,"t":{"378":{"position":[[556,32]]}}}],["pre_trial_hooks=grpc://config:9001",{"_index":2212,"t":{"356":{"position":[[117,34]]}}}],["pre_trial_hooks=grpc://foo:9000",{"_index":2238,"t":{"378":{"position":[[522,31]]}}}],["pre_trial_hooks=grpc://foo:9000,grpc://bar:9000",{"_index":2237,"t":{"378":{"position":[[420,48]]}}}],["preced",{"_index":2106,"t":{"308":{"position":[[3059,8]]},"409":{"position":[[588,7]]},"943":{"position":[[373,9]]}}}],["precis",{"_index":2551,"t":{"586":{"position":[[640,9]]},"608":{"position":[[719,9]]}}}],["predefin",{"_index":1076,"t":{"130":{"position":[[541,10]]}}}],["predestrian",{"_index":787,"t":{"80":{"position":[[1469,14]]}}}],["prefer",{"_index":350,"t":{"28":{"position":[[398,6]]},"239":{"position":[[863,9]]}}}],["prefix",{"_index":1989,"t":{"298":{"position":[[2422,8]]},"421":{"position":[[590,7],[598,6]]}}}],["prefix=\"2022",{"_index":2321,"t":{"421":{"position":[[789,12]]}}}],["prehook",{"_index":1887,"t":{"255":{"position":[[369,8]]},"267":{"position":[[171,8]]},"407":{"position":[[358,8]]},"811":{"position":[[3742,8],[4245,7]]},"835":{"position":[[100,8]]}}}],["prehooksess",{"_index":2907,"t":{"849":{"position":[[452,14]]}}}],["prehooksession.environment_nam",{"_index":2412,"t":{"508":{"position":[[997,31]]}}}],["prehooksession.get_user_id",{"_index":2411,"t":{"508":{"position":[[956,28]]}}}],["prematur",{"_index":3059,"t":{"1087":{"position":[[312,12]]}}}],["prep",{"_index":2115,"t":{"310":{"position":[[181,5],[427,4]]}}}],["prepar",{"_index":935,"t":{"106":{"position":[[137,7]]},"170":{"position":[[751,7]]},"239":{"position":[[3213,7]]}}}],["prereleas",{"_index":886,"t":{"94":{"position":[[526,12],[580,12]]}}}],["prerequisit",{"_index":1287,"t":{"164":{"position":[[278,12]]}}}],["presenc",{"_index":2495,"t":{"548":{"position":[[285,8]]},"1087":{"position":[[122,8]]}}}],["present",{"_index":1275,"t":{"158":{"position":[[1518,9]]},"210":{"position":[[65,7]]},"421":{"position":[[634,7]]},"520":{"position":[[118,7]]},"532":{"position":[[64,8]]},"534":{"position":[[40,8],[213,7]]},"536":{"position":[[37,8]]},"538":{"position":[[39,8]]},"540":{"position":[[342,8]]},"590":{"position":[[204,8],[268,8],[363,7]]},"785":{"position":[[351,8],[475,8],[590,8],[664,8]]},"803":{"position":[[606,8]]},"805":{"position":[[821,10]]},"969":{"position":[[363,8],[505,8],[637,8],[724,8]]},"1150":{"position":[[265,8]]}}}],["press",{"_index":1272,"t":{"158":{"position":[[1195,8]]}}}],["pretrialparam",{"_index":2593,"t":{"632":{"position":[[62,16]]}}}],["prevent",{"_index":1943,"t":{"290":{"position":[[135,7]]},"298":{"position":[[2030,8]]},"306":{"position":[[3892,7]]},"310":{"position":[[269,7]]},"409":{"position":[[306,7]]},"421":{"position":[[680,7]]},"484":{"position":[[64,7]]},"494":{"position":[[87,7]]},"1159":{"position":[[1491,7]]}}}],["preview",{"_index":2349,"t":{"447":{"position":[[78,7]]}}}],["previou",{"_index":956,"t":{"108":{"position":[[827,8]]},"140":{"position":[[54,8],[143,8]]},"156":{"position":[[110,8]]},"158":{"position":[[149,8]]},"164":{"position":[[7,8]]},"172":{"position":[[434,8]]},"202":{"position":[[424,8]]},"206":{"position":[[187,8]]},"306":{"position":[[343,8],[5136,8]]},"415":{"position":[[609,8]]},"943":{"position":[[505,8]]}}}],["previous",{"_index":1557,"t":{"200":{"position":[[118,10]]},"212":{"position":[[548,10]]},"216":{"position":[[0,11]]},"421":{"position":[[70,10]]},"502":{"position":[[336,10]]},"636":{"position":[[576,10]]},"668":{"position":[[461,10]]},"676":{"position":[[646,10]]},"704":{"position":[[526,10]]}}}],["price",{"_index":2923,"t":{"875":{"position":[[258,5]]}}}],["primari",{"_index":1371,"t":{"178":{"position":[[491,8]]}}}],["primarili",{"_index":457,"t":{"50":{"position":[[228,9]]}}}],["print",{"_index":1124,"t":{"138":{"position":[[2292,6]]},"158":{"position":[[1139,5]]},"202":{"position":[[706,5]]},"208":{"position":[[314,7],[747,5]]},"210":{"position":[[566,5],[630,7]]},"216":{"position":[[3831,7]]},"235":{"position":[[1789,7]]},"403":{"position":[[78,8],[104,6],[221,5]]},"415":{"position":[[1193,8]]},"419":{"position":[[1509,8]]}}}],["print(\"environ",{"_index":1612,"t":{"210":{"position":[[156,18]]}}}],["print(f",{"_index":1257,"t":{"158":{"position":[[259,10],[329,10],[441,8],[532,8],[589,8]]}}}],["print(f\"'{actor_session.nam",{"_index":1099,"t":{"136":{"position":[[997,30]]},"138":{"position":[[2808,30],[3057,30]]},"190":{"position":[[849,30],[1474,30]]}}}],["print(f\"\\n",{"_index":1234,"t":{"156":{"position":[[1390,10]]}}}],["print(f\"draw",{"_index":1606,"t":{"208":{"position":[[1270,15]]},"216":{"position":[[3287,15]]}}}],["print(f\"th",{"_index":663,"t":{"68":{"position":[[291,11]]}}}],["print(f\"trial",{"_index":534,"t":{"54":{"position":[[1917,13]]},"58":{"position":[[1377,13]]},"210":{"position":[[187,13]]},"216":{"position":[[3902,13]]}}}],["print(f\"{p1.actor_nam",{"_index":1600,"t":{"208":{"position":[[1152,23]]},"216":{"position":[[3169,23]]}}}],["print(f\"{p2.actor_nam",{"_index":1604,"t":{"208":{"position":[[1233,23]]},"216":{"position":[[3250,23]]}}}],["print_observ",{"_index":1255,"t":{"158":{"position":[[204,18]]}}}],["print_observation(observ",{"_index":1256,"t":{"158":{"position":[[227,31],[950,30]]}}}],["prioriti",{"_index":2803,"t":{"799":{"position":[[891,8]]}}}],["privat",{"_index":2255,"t":{"384":{"position":[[33,7]]},"955":{"position":[[206,7]]},"959":{"position":[[317,7]]}}}],["private_key",{"_index":2964,"t":{"955":{"position":[[120,12],[286,11]]}}}],["private_key=./path/to/key.pem",{"_index":2256,"t":{"384":{"position":[[125,30]]}}}],["private_key_certificate_chain_pair",{"_index":2969,"t":{"959":{"position":[[157,36],[425,35]]}}}],["probabl",{"_index":92,"t":{"8":{"position":[[431,8]]},"222":{"position":[[72,8]]}}}],["problem",{"_index":1018,"t":{"120":{"position":[[392,8]]},"514":{"position":[[828,7]]}}}],["problemat",{"_index":2920,"t":{"873":{"position":[[141,11]]}}}],["procedur",{"_index":1953,"t":{"294":{"position":[[266,9]]},"296":{"position":[[932,10]]},"522":{"position":[[110,10],[249,12]]},"532":{"position":[[54,9]]},"534":{"position":[[30,9]]},"536":{"position":[[27,9]]},"538":{"position":[[29,9]]},"574":{"position":[[35,10]]},"576":{"position":[[33,10]]},"578":{"position":[[39,10]]},"580":{"position":[[37,10]]},"582":{"position":[[37,10]]},"584":{"position":[[35,10],[256,11]]},"588":{"position":[[36,10]]},"590":{"position":[[41,10]]},"596":{"position":[[582,10]]},"598":{"position":[[0,9]]},"602":{"position":[[57,10]]},"604":{"position":[[53,10]]},"606":{"position":[[269,10]]},"608":{"position":[[368,10]]},"612":{"position":[[166,9]]},"614":{"position":[[66,10]]},"616":{"position":[[62,10]]},"618":{"position":[[178,10]]},"626":{"position":[[47,10]]},"628":{"position":[[38,10]]},"644":{"position":[[33,10]]},"646":{"position":[[31,10]]},"648":{"position":[[35,10]]},"650":{"position":[[33,10]]},"652":{"position":[[32,10]]},"654":{"position":[[30,10]]},"658":{"position":[[1121,9]]}}}],["procedure'",{"_index":1969,"t":{"296":{"position":[[1104,11]]}}}],["process",{"_index":146,"t":{"12":{"position":[[105,9]]},"24":{"position":[[861,7]]},"54":{"position":[[266,9]]},"60":{"position":[[1469,10]]},"96":{"position":[[351,7]]},"229":{"position":[[2498,9],[2585,9],[2675,7]]},"231":{"position":[[71,7],[132,7]]},"296":{"position":[[1582,10]]},"300":{"position":[[149,9],[254,9]]},"302":{"position":[[113,9],[214,7]]},"304":{"position":[[86,9]]},"306":{"position":[[54,9],[109,7],[216,7],[237,7],[532,7],[645,7],[1688,8],[1752,9],[1849,8],[1988,8],[2058,8],[2460,8],[2664,7],[2768,7],[2861,7],[3027,7],[3158,7],[3233,9],[3278,7],[3394,8],[3442,7],[3546,7],[4030,7],[4159,7]]},"310":{"position":[[277,7]]},"530":{"position":[[224,10]]},"566":{"position":[[272,7],[472,7]]},"781":{"position":[[111,7],[268,7]]},"787":{"position":[[246,7]]},"905":{"position":[[517,10]]},"963":{"position":[[111,7],[311,7]]},"971":{"position":[[246,7]]},"1146":{"position":[[117,10]]},"1148":{"position":[[198,9]]},"1165":{"position":[[374,7],[535,10]]}}}],["process.env.react_app_orchestrator_http_endpoint",{"_index":1480,"t":{"182":{"position":[[1152,49]]}}}],["process_a",{"_index":2013,"t":{"306":{"position":[[502,10],[543,11],[796,11],[1697,11],[3613,10],[3760,9]]}}}],["process_a:(1/2",{"_index":2021,"t":{"306":{"position":[[843,17],[961,17],[1257,17],[1330,17],[1408,17]]}}}],["process_a:(2/2",{"_index":2035,"t":{"306":{"position":[[1465,17]]}}}],["process_b",{"_index":2016,"t":{"306":{"position":[[615,10],[656,11],[914,11],[1713,11],[3735,10]]}}}],["process_b:(1/1",{"_index":2024,"t":{"306":{"position":[[1039,17],[1125,17]]}}}],["processor",{"_index":68,"t":{"6":{"position":[[365,9]]},"803":{"position":[[1060,10]]}}}],["produc",{"_index":248,"t":{"18":{"position":[[403,8]]},"22":{"position":[[83,7],[146,8]]},"24":{"position":[[606,7]]},"30":{"position":[[762,8]]},"54":{"position":[[477,8],[1368,7],[1667,7]]},"58":{"position":[[260,8],[855,8],[1801,8]]},"122":{"position":[[307,7]]},"124":{"position":[[506,9],[1162,8],[1271,7],[2313,8]]},"128":{"position":[[764,7]]},"136":{"position":[[138,7]]},"196":{"position":[[228,8]]},"198":{"position":[[1243,8]]},"202":{"position":[[537,8]]},"208":{"position":[[51,8],[249,7],[1793,7]]},"216":{"position":[[3406,7]]},"259":{"position":[[28,9]]},"833":{"position":[[226,7]]},"995":{"position":[[31,8]]},"1007":{"position":[[712,8]]},"1011":{"position":[[32,8]]}}}],["produce_observ",{"_index":544,"t":{"56":{"position":[[82,20]]},"88":{"position":[[1117,19]]},"921":{"position":[[400,19]]}}}],["product",{"_index":1808,"t":{"239":{"position":[[6863,7]]},"463":{"position":[[115,10]]}}}],["program",{"_index":2085,"t":{"308":{"position":[[1107,7]]},"522":{"position":[[279,11],[370,11]]},"1157":{"position":[[750,7]]}}}],["progress",{"_index":3013,"t":{"1007":{"position":[[574,11]]},"1069":{"position":[[27,8]]}}}],["project",{"_index":2,"t":{"2":{"position":[[39,7]]},"4":{"position":[[37,7],[142,8]]},"10":{"position":[[371,9]]},"30":{"position":[[977,7]]},"32":{"position":[[217,7]]},"50":{"position":[[201,8]]},"94":{"position":[[418,8]]},"96":{"position":[[165,8]]},"100":{"position":[[38,7]]},"104":{"position":[[454,9]]},"110":{"position":[[256,7]]},"140":{"position":[[287,8],[558,8]]},"146":{"position":[[2303,8]]},"150":{"position":[[206,9]]},"152":{"position":[[87,8]]},"170":{"position":[[738,9]]},"184":{"position":[[110,8]]},"224":{"position":[[553,8]]},"229":{"position":[[314,8],[700,7],[946,8],[1787,8],[1995,7]]},"300":{"position":[[102,7]]},"484":{"position":[[83,8]]},"490":{"position":[[190,7]]},"500":{"position":[[1551,9]]},"504":{"position":[[62,8]]},"510":{"position":[[83,7],[479,7]]},"512":{"position":[[369,8]]},"736":{"position":[[158,8]]},"827":{"position":[[163,8]]},"1089":{"position":[[289,7]]},"1091":{"position":[[289,7]]},"1093":{"position":[[289,7]]},"1095":{"position":[[289,7]]},"1097":{"position":[[289,7]]}}}],["project'",{"_index":448,"t":{"48":{"position":[[392,9]]},"520":{"position":[[133,9]]},"734":{"position":[[127,9]]}}}],["prometheu",{"_index":2242,"t":{"380":{"position":[[28,10],[124,10],[341,10]]},"831":{"position":[[456,10],[603,11]]},"835":{"position":[[607,11],[646,10]]}}}],["prometheus_client.core.collectorregistri",{"_index":2886,"t":{"831":{"position":[[404,40]]}}}],["prometheus_port",{"_index":972,"t":{"112":{"position":[[171,17]]},"494":{"position":[[200,15]]},"835":{"position":[[561,16]]}}}],["prometheus_port=8000",{"_index":2244,"t":{"380":{"position":[[206,21]]}}}],["prometheus_registri",{"_index":2885,"t":{"831":{"position":[[383,20]]}}}],["promin",{"_index":1787,"t":{"239":{"position":[[4683,9]]}}}],["prompt",{"_index":1007,"t":{"118":{"position":[[475,8]]},"158":{"position":[[1147,6],[1535,6]]}}}],["proper",{"_index":1993,"t":{"298":{"position":[[2495,6]]},"1089":{"position":[[514,6]]},"1091":{"position":[[514,6]]},"1093":{"position":[[514,6]]}}}],["properli",{"_index":1009,"t":{"120":{"position":[[77,8]]},"210":{"position":[[726,8]]},"218":{"position":[[62,8]]},"770":{"position":[[337,9]]},"773":{"position":[[363,9]]},"915":{"position":[[362,9]]},"921":{"position":[[782,9]]},"935":{"position":[[363,9]]}}}],["properti",{"_index":1193,"t":{"146":{"position":[[4003,10],[4130,10]]},"255":{"position":[[806,11],[822,10],[960,10],[1052,10]]},"267":{"position":[[77,10],[380,11],[396,10],[516,10],[562,10]]},"292":{"position":[[74,9]]},"298":{"position":[[2212,11],[2303,10],[2403,8],[2518,8]]},"338":{"position":[[14,10],[132,10],[167,10],[229,10]]},"376":{"position":[[14,10],[131,10],[166,10],[228,10]]},"445":{"position":[[14,10],[134,10],[169,10],[231,10]]},"475":{"position":[[14,10],[127,10],[162,10],[224,10]]},"510":{"position":[[592,10],[644,10],[692,10]]},"516":{"position":[[21,10],[86,11]]},"518":{"position":[[21,10],[71,11]]},"520":{"position":[[237,10],[280,10],[365,10],[528,10]]},"638":{"position":[[1290,10]]},"640":{"position":[[121,10],[165,11],[177,10],[226,9],[243,8]]},"801":{"position":[[187,11],[222,10]]},"803":{"position":[[428,11],[976,11]]},"811":{"position":[[2211,10],[2258,10],[2334,8],[2390,10],[2435,10],[2614,10],[2970,8],[3118,12],[4487,10],[4534,10],[4578,10],[4658,10],[4874,8],[4944,8],[5062,8],[5091,8],[5387,11],[5419,10],[5563,10],[5652,10],[5801,8],[6057,8],[6085,9],[6308,8],[6352,8],[6380,9],[6506,8],[6561,8]]},"845":{"position":[[280,11],[308,10],[392,10]]},"847":{"position":[[456,11],[484,10],[562,10]]},"849":{"position":[[571,11],[599,10],[676,10]]},"851":{"position":[[318,11],[346,10],[426,10]]},"873":{"position":[[359,11],[387,10],[424,10],[612,11]]},"875":{"position":[[85,11],[594,11],[622,10],[659,10]]},"899":{"position":[[26,10],[141,11],[291,11]]},"965":{"position":[[99,11],[140,10]]},"989":{"position":[[624,11]]},"1027":{"position":[[105,11]]},"1029":{"position":[[541,11]]},"1083":{"position":[[30,8],[114,9]]},"1085":{"position":[[30,8],[137,9]]},"1087":{"position":[[30,8],[92,8],[223,9],[278,8]]},"1108":{"position":[[235,10]]},"1116":{"position":[[126,10],[903,10]]},"1136":{"position":[[191,10]]},"1159":{"position":[[1265,11],[1282,10],[1323,10],[1366,8],[1397,10],[1454,8]]}}}],["properties=\"__actor_class=reporter,intensity=5,high_profile\"servic",{"_index":1877,"t":{"251":{"position":[[190,67]]}}}],["properties=\"intensity=5,high_profile\"[11",{"_index":1902,"t":{"263":{"position":[[258,41]]}}}],["propos",{"_index":40,"t":{"4":{"position":[[186,7]]}}}],["proto",{"_index":464,"t":{"50":{"position":[[644,6]]},"128":{"position":[[1008,6]]},"510":{"position":[[440,5]]},"512":{"position":[[223,6],[401,5],[500,6],[592,6]]},"514":{"position":[[565,7]]},"522":{"position":[[571,7]]},"730":{"position":[[709,5]]},"793":{"position":[[146,5]]},"825":{"position":[[420,7],[583,5]]}}}],["protobuf",{"_index":336,"t":{"26":{"position":[[1160,8]]},"48":{"position":[[438,9]]},"76":{"position":[[198,8],[482,8],[866,8]]},"102":{"position":[[25,8],[298,8],[406,8],[521,8]]},"110":{"position":[[208,8]]},"128":{"position":[[231,10]]},"130":{"position":[[484,8]]},"170":{"position":[[1316,8]]},"229":{"position":[[978,8],[1446,8]]},"419":{"position":[[744,8],[885,8],[930,8]]},"492":{"position":[[79,9],[194,8],[307,8]]},"508":{"position":[[1120,8]]},"512":{"position":[[238,8]]},"516":{"position":[[126,8]]},"518":{"position":[[111,8]]},"520":{"position":[[388,8],[550,8],[707,8],[835,8]]},"548":{"position":[[37,8],[380,8]]},"552":{"position":[[208,8]]},"554":{"position":[[246,8]]},"562":{"position":[[409,8]]},"564":{"position":[[400,8]]},"566":{"position":[[195,8]]},"568":{"position":[[249,8]]},"638":{"position":[[421,8]]},"642":{"position":[[321,8]]},"646":{"position":[[277,8]]},"650":{"position":[[239,8]]},"730":{"position":[[278,8]]},"779":{"position":[[162,8]]},"799":{"position":[[587,8]]},"821":{"position":[[291,8],[495,8]]},"857":{"position":[[112,8]]},"917":{"position":[[782,8],[873,8]]},"919":{"position":[[325,8],[472,8]]},"921":{"position":[[178,8]]},"925":{"position":[[230,8],[472,8]]},"927":{"position":[[179,8]]},"931":{"position":[[90,8],[166,8]]},"933":{"position":[[449,8],[590,8]]},"939":{"position":[[63,8]]},"941":{"position":[[90,8],[166,8]]},"973":{"position":[[288,8]]},"977":{"position":[[458,8]]},"989":{"position":[[389,8],[785,8]]},"1001":{"position":[[392,8],[891,8]]},"1053":{"position":[[103,8],[597,8]]},"1089":{"position":[[112,8],[185,8],[654,8]]},"1091":{"position":[[112,8],[185,8],[654,8]]},"1093":{"position":[[112,8],[185,8],[654,8]]},"1095":{"position":[[112,8],[185,8],[501,8]]},"1097":{"position":[[112,8],[185,8],[501,8]]}}}],["protocol",{"_index":324,"t":{"26":{"position":[[748,8]]},"32":{"position":[[414,9]]},"48":{"position":[[362,8]]},"50":{"position":[[357,8]]},"128":{"position":[[215,8]]},"170":{"position":[[343,8]]},"229":{"position":[[858,8]]},"255":{"position":[[0,9],[14,8]]},"298":{"position":[[442,9],[456,8],[526,8],[565,8],[705,8],[820,8],[1036,8]]},"642":{"position":[[95,8],[158,8],[167,8],[216,9],[244,8],[547,8]]},"734":{"position":[[339,8]]}}}],["provid",{"_index":317,"t":{"26":{"position":[[294,7]]},"32":{"position":[[126,8]]},"62":{"position":[[710,9]]},"66":{"position":[[662,8],[758,7]]},"71":{"position":[[637,8]]},"80":{"position":[[109,9],[288,8],[988,8]]},"84":{"position":[[146,8]]},"90":{"position":[[98,7],[287,7]]},"96":{"position":[[942,8],[986,7]]},"102":{"position":[[629,8]]},"104":{"position":[[160,8],[464,7]]},"110":{"position":[[81,8],[121,8]]},"116":{"position":[[96,9]]},"144":{"position":[[299,8],[490,8]]},"146":{"position":[[151,9],[672,9]]},"168":{"position":[[60,7]]},"176":{"position":[[47,7]]},"178":{"position":[[806,7]]},"180":{"position":[[2187,8]]},"202":{"position":[[1215,8]]},"216":{"position":[[4730,9]]},"239":{"position":[[1428,8],[4488,8],[5452,8],[5855,8],[6022,7],[6190,8],[7126,8],[7166,8]]},"249":{"position":[[152,8]]},"267":{"position":[[54,9],[332,9],[621,9]]},"282":{"position":[[123,9]]},"292":{"position":[[293,8],[851,8],[916,8],[1063,8]]},"298":{"position":[[986,9],[1324,8],[1391,8],[1434,8],[1479,8],[1527,8],[1571,8],[1616,8],[1668,8],[1746,7],[2722,8],[2924,8],[3007,8]]},"306":{"position":[[3501,8],[5156,8]]},"308":{"position":[[2005,8]]},"330":{"position":[[123,8]]},"332":{"position":[[177,9],[326,8]]},"334":{"position":[[152,8]]},"336":{"position":[[97,9],[382,9]]},"366":{"position":[[406,8]]},"368":{"position":[[185,9],[209,8],[482,8]]},"370":{"position":[[152,8]]},"374":{"position":[[96,9],[379,9]]},"394":{"position":[[123,8]]},"405":{"position":[[121,9],[177,9],[219,8]]},"407":{"position":[[180,9]]},"409":{"position":[[49,9]]},"411":{"position":[[27,8]]},"419":{"position":[[367,8],[1435,9]]},"421":{"position":[[391,8]]},"433":{"position":[[55,9]]},"437":{"position":[[123,8]]},"439":{"position":[[179,9],[329,8]]},"441":{"position":[[152,8]]},"443":{"position":[[99,9],[385,9]]},"467":{"position":[[123,8]]},"469":{"position":[[209,9],[353,8]]},"471":{"position":[[152,8]]},"473":{"position":[[92,9],[372,9]]},"492":{"position":[[348,8]]},"500":{"position":[[0,9],[104,7]]},"502":{"position":[[295,9],[380,10]]},"524":{"position":[[794,7]]},"540":{"position":[[580,8]]},"558":{"position":[[453,8]]},"560":{"position":[[621,8]]},"562":{"position":[[857,8]]},"564":{"position":[[683,8]]},"572":{"position":[[734,9]]},"584":{"position":[[204,8]]},"586":{"position":[[754,8]]},"598":{"position":[[113,8],[202,8]]},"606":{"position":[[228,8],[747,9]]},"608":{"position":[[327,8]]},"612":{"position":[[279,8],[367,8]]},"614":{"position":[[627,7]]},"618":{"position":[[137,8],[511,9],[754,8]]},"624":{"position":[[297,8]]},"626":{"position":[[1407,8]]},"638":{"position":[[1220,8],[1336,7]]},"642":{"position":[[591,7]]},"646":{"position":[[750,8]]},"668":{"position":[[472,8]]},"676":{"position":[[657,8]]},"686":{"position":[[1084,7]]},"698":{"position":[[449,8]]},"704":{"position":[[537,8]]},"730":{"position":[[555,8]]},"732":{"position":[[58,8],[139,8]]},"750":{"position":[[156,8],[371,9],[389,8],[666,9]]},"754":{"position":[[137,9]]},"783":{"position":[[295,8],[407,8]]},"799":{"position":[[131,8],[283,8],[807,9],[931,9]]},"811":{"position":[[1008,8],[1264,8],[1526,8],[1729,8],[2163,8],[2405,8],[2633,8],[2847,7],[4545,8],[6109,7],[6404,7]]},"821":{"position":[[730,8]]},"823":{"position":[[99,8],[180,8]]},"831":{"position":[[871,9],[1229,9]]},"833":{"position":[[131,8]]},"835":{"position":[[1081,9]]},"849":{"position":[[212,8]]},"857":{"position":[[539,8],[893,9],[1196,8]]},"861":{"position":[[139,9]]},"873":{"position":[[281,8],[589,8]]},"875":{"position":[[800,8]]},"905":{"position":[[1027,9]]},"919":{"position":[[446,9]]},"921":{"position":[[353,9]]},"933":{"position":[[564,9]]},"965":{"position":[[151,8],[389,8],[500,8]]},"987":{"position":[[391,9]]},"993":{"position":[[201,9]]},"1005":{"position":[[201,9]]},"1045":{"position":[[155,9]]},"1065":{"position":[[482,9]]},"1078":{"position":[[173,9],[376,8]]},"1100":{"position":[[470,9],[828,9],[1072,9],[1256,9],[1549,9]]},"1116":{"position":[[31,8]]},"1136":{"position":[[829,8]]},"1157":{"position":[[181,7]]},"1159":{"position":[[1644,9],[1701,9]]}}}],["proxi",{"_index":1311,"t":{"170":{"position":[[425,5]]},"447":{"position":[[111,5],[321,5],[392,5],[512,5]]},"449":{"position":[[8,5]]},"451":{"position":[[8,5]]},"453":{"position":[[36,5]]},"459":{"position":[[53,5]]},"461":{"position":[[65,6]]},"469":{"position":[[118,5],[227,5],[380,6]]},"473":{"position":[[70,5],[110,5]]},"475":{"position":[[78,5]]}}}],["publicli",{"_index":1767,"t":{"239":{"position":[[3242,8],[3260,8]]}}}],["publish",{"_index":427,"t":{"44":{"position":[[491,10]]},"312":{"position":[[207,7]]},"885":{"position":[[10,7]]},"887":{"position":[[75,9],[568,10],[790,9]]},"903":{"position":[[93,10],[236,9]]},"1029":{"position":[[504,9]]}}}],["publish_model",{"_index":2931,"t":{"885":{"position":[[409,15]]}}}],["pure",{"_index":1177,"t":{"146":{"position":[[1754,4],[2467,4]]},"194":{"position":[[607,4]]},"811":{"position":[[1422,4]]}}}],["purpos",{"_index":672,"t":{"71":{"position":[[139,8]]},"142":{"position":[[493,7]]},"148":{"position":[[242,7]]},"229":{"position":[[2379,8]]},"239":{"position":[[438,8],[1731,8],[2282,8],[2618,7],[5662,8],[7421,8]]},"312":{"position":[[532,9]]},"524":{"position":[[659,9]]},"558":{"position":[[92,7]]},"560":{"position":[[61,7]]},"686":{"position":[[931,9]]},"811":{"position":[[5740,8]]},"887":{"position":[[58,7]]},"1100":{"position":[[214,7]]}}}],["push",{"_index":2712,"t":{"690":{"position":[[1117,6]]}}}],["put",{"_index":1280,"t":{"158":{"position":[[1730,3]]}}}],["pycod",{"_index":2121,"t":{"310":{"position":[[756,8]]}}}],["python",{"_index":373,"t":{"32":{"position":[[273,6]]},"34":{"position":[[142,7]]},"38":{"position":[[298,6]]},"46":{"position":[[118,6]]},"48":{"position":[[244,6],[301,6]]},"52":{"position":[[185,6],[211,6],[416,6]]},"58":{"position":[[571,6]]},"60":{"position":[[859,6]]},"64":{"position":[[173,6]]},"66":{"position":[[80,6]]},"68":{"position":[[175,6]]},"73":{"position":[[261,6]]},"76":{"position":[[112,6]]},"78":{"position":[[271,6]]},"82":{"position":[[210,6]]},"90":{"position":[[64,6]]},"94":{"position":[[630,6]]},"102":{"position":[[44,6],[729,6]]},"108":{"position":[[337,6]]},"110":{"position":[[621,6]]},"116":{"position":[[1239,6]]},"120":{"position":[[212,6]]},"126":{"position":[[1069,7]]},"136":{"position":[[305,6]]},"170":{"position":[[1982,6]]},"200":{"position":[[791,7]]},"212":{"position":[[1596,6]]},"220":{"position":[[159,6]]},"229":{"position":[[1104,6],[1928,6],[2040,6],[2268,6]]},"233":{"position":[[211,6],[250,6],[350,6]]},"514":{"position":[[403,6],[477,6]]},"814":{"position":[[32,6],[268,6],[305,6]]},"817":{"position":[[4,6],[76,6]]},"819":{"position":[[4,6],[347,6],[459,6],[605,6],[829,8],[847,6],[1486,6]]},"825":{"position":[[42,6],[98,6],[134,6],[439,6],[659,6]]},"829":{"position":[[307,6]]},"831":{"position":[[284,6]]},"989":{"position":[[1236,6]]},"1074":{"position":[[40,6],[212,6],[224,6]]},"1076":{"position":[[391,6],[423,6]]},"1089":{"position":[[40,6]]},"1091":{"position":[[40,6]]},"1093":{"position":[[40,6]]},"1095":{"position":[[40,6]]},"1097":{"position":[[40,6]]},"1126":{"position":[[267,6]]},"1157":{"position":[[1178,6]]}}}],["python'",{"_index":1269,"t":{"158":{"position":[[1108,8]]},"1074":{"position":[[69,8]]}}}],["python3",{"_index":967,"t":{"110":{"position":[[756,7]]},"306":{"position":[[588,11],[1490,8],[2614,11],[2967,11],[3669,11]]},"310":{"position":[[818,10]]},"825":{"position":[[212,7]]}}}],["q",{"_index":2000,"t":{"302":{"position":[[145,3],[291,3]]},"308":{"position":[[2059,1]]}}}],["qq",{"_index":2008,"t":{"302":{"position":[[652,2]]}}}],["qqq",{"_index":2003,"t":{"302":{"position":[[316,3]]}}}],["qualif",{"_index":1522,"t":{"188":{"position":[[401,13]]}}}],["qualifi",{"_index":684,"t":{"71":{"position":[[380,10]]}}}],["queri",{"_index":1897,"t":{"255":{"position":[[1027,7]]},"298":{"position":[[2606,7]]},"807":{"position":[[124,5]]},"811":{"position":[[1370,6],[3015,5],[3358,5],[4411,6],[4480,6],[4561,5],[4769,5],[5381,5],[5413,5],[6051,5],[6346,5]]}}}],["question",{"_index":0,"t":{"2":{"position":[[12,9],[312,10]]},"6":{"position":[[259,10]]},"8":{"position":[[227,10],[398,9],[513,10]]},"308":{"position":[[786,9],[858,15]]}}}],["quick",{"_index":1125,"t":{"138":{"position":[[2372,5]]},"216":{"position":[[1807,5]]},"235":{"position":[[1370,5]]}}}],["quiet",{"_index":2001,"t":{"302":{"position":[[152,7],[608,5],[694,5]]},"306":{"position":[[2637,6],[2943,6],[3624,6],[4197,5]]},"310":{"position":[[330,6]]}}}],["quit",{"_index":341,"t":{"28":{"position":[[205,5]]}}}],["quot",{"_index":2052,"t":{"306":{"position":[[3855,6]]}}}],["quotat",{"_index":2284,"t":{"409":{"position":[[287,9]]}}}],["r",{"_index":1686,"t":{"224":{"position":[[421,1]]},"382":{"position":[[266,2],[391,3]]}}}],["r.com",{"_index":76,"t":{"8":{"position":[[128,6],[626,6]]},"10":{"position":[[414,6]]}}}],["race",{"_index":268,"t":{"18":{"position":[[985,4],[1126,4]]},"40":{"position":[[531,4],[672,4]]}}}],["rais",{"_index":54,"t":{"6":{"position":[[162,6]]},"488":{"position":[[148,5]]},"905":{"position":[[1305,5]]},"1159":{"position":[[1017,6]]},"1161":{"position":[[404,6]]},"1163":{"position":[[998,6]]},"1165":{"position":[[640,6]]}}}],["ran",{"_index":1704,"t":{"235":{"position":[[1481,3]]}}}],["ran//`npx",{"_index":1398,"t":{"180":{"position":[[682,9]]}}}],["random",{"_index":1053,"t":{"124":{"position":[[2248,6]]},"134":{"position":[[546,7]]},"136":{"position":[[110,6],[320,7],[386,7],[511,6]]},"138":{"position":[[2690,6]]},"190":{"position":[[1801,7]]},"194":{"position":[[552,6],[612,10]]},"216":{"position":[[6294,7]]},"296":{"position":[[1042,6]]}}}],["random_ag",{"_index":1057,"t":{"126":{"position":[[600,12]]},"134":{"position":[[347,12]]},"136":{"position":[[17,12],[863,12]]},"138":{"position":[[2536,12]]},"190":{"position":[[87,12]]}}}],["random_agent_build",{"_index":1339,"t":{"170":{"position":[[2423,18]]}}}],["random_agent_start",{"_index":1148,"t":{"142":{"position":[[753,18]]}}}],["randomli",{"_index":1102,"t":{"136":{"position":[[1307,8]]},"190":{"position":[[1371,8]]},"212":{"position":[[381,9]]},"296":{"position":[[835,9]]}}}],["rare",{"_index":3117,"t":{"1157":{"position":[[1088,5]]}}}],["raw",{"_index":915,"t":{"102":{"position":[[21,3],[98,3]]},"427":{"position":[[202,3]]},"492":{"position":[[71,3]]},"857":{"position":[[622,3]]},"905":{"position":[[931,3],[1041,3]]},"1035":{"position":[[341,3],[419,3]]},"1089":{"position":[[24,3],[375,3]]},"1091":{"position":[[24,3],[375,3]]},"1093":{"position":[[24,3],[375,3]]},"1095":{"position":[[24,3],[375,3]]},"1097":{"position":[[24,3],[375,3]]}}}],["raw_str",{"_index":3001,"t":{"999":{"position":[[87,11],[212,10]]},"1015":{"position":[[78,11]]}}}],["raw_trial_param",{"_index":920,"t":{"102":{"position":[[165,16]]}}}],["re",{"_index":1468,"t":{"182":{"position":[[635,2]]},"212":{"position":[[1527,2]]},"298":{"position":[[319,2]]},"1157":{"position":[[685,2]]}}}],["re2",{"_index":2059,"t":{"306":{"position":[[4134,4]]}}}],["reach",{"_index":34,"t":{"4":{"position":[[94,5]]},"10":{"position":[[787,5]]},"30":{"position":[[184,8]]},"42":{"position":[[309,5]]},"54":{"position":[[2162,5]]},"156":{"position":[[429,5]]},"210":{"position":[[1005,8]]},"212":{"position":[[1292,5]]},"214":{"position":[[172,8],[931,8],[1317,8]]},"216":{"position":[[1770,7],[5229,8]]},"292":{"position":[[115,5]]},"312":{"position":[[371,8]]},"372":{"position":[[147,5]]},"811":{"position":[[744,5]]},"875":{"position":[[359,5],[472,7]]}}}],["reachabl",{"_index":1912,"t":{"271":{"position":[[340,11]]}}}],["react",{"_index":1005,"t":{"118":{"position":[[313,5]]},"164":{"position":[[190,5]]},"166":{"position":[[28,5],[116,5],[182,5]]},"168":{"position":[[410,5],[527,6],[731,6]]},"174":{"position":[[68,5]]},"178":{"position":[[20,5],[259,5],[299,6]]},"180":{"position":[[112,5],[132,6],[1479,5],[4319,5]]},"182":{"position":[[826,5],[1386,5]]}}}],["react\";//then",{"_index":1384,"t":{"180":{"position":[[158,14]]}}}],["react\";export",{"_index":1461,"t":{"182":{"position":[[252,14]]}}}],["react\";import",{"_index":1360,"t":{"178":{"position":[[270,14]]}}}],["react.strictmod",{"_index":1378,"t":{"178":{"position":[[692,18],[766,21]]}}}],["react_app_orchestrator_http_endpoint=\"http://${orchestrator_host}:${orchestrator_http_port",{"_index":1328,"t":{"170":{"position":[[1593,92]]}}}],["reactdom",{"_index":1361,"t":{"178":{"position":[[285,8]]}}}],["reactdom.createroot(document.getelementbyid(\"root\"));root.rend",{"_index":1377,"t":{"178":{"position":[[626,65]]}}}],["read",{"_index":1267,"t":{"158":{"position":[[1041,4],[1158,4]]},"210":{"position":[[75,4]]},"286":{"position":[[45,4]]},"296":{"position":[[432,4],[557,4]]},"421":{"position":[[411,5]]},"494":{"position":[[26,4]]},"989":{"position":[[1309,4]]}}}],["readabl",{"_index":1792,"t":{"239":{"position":[[5139,8]]},"413":{"position":[[1102,12]]},"417":{"position":[[263,8],[371,8]]},"419":{"position":[[1144,8],[1246,8]]},"421":{"position":[[1223,8]]}}}],["reader",{"_index":440,"t":{"48":{"position":[[126,6]]}}}],["readi",{"_index":558,"t":{"58":{"position":[[678,5],[1613,5]]},"134":{"position":[[766,6]]},"306":{"position":[[3251,7],[3470,8],[3568,7]]},"382":{"position":[[430,6]]},"566":{"position":[[374,6]]},"608":{"position":[[200,5]]},"616":{"position":[[617,5]]},"620":{"position":[[131,5]]},"963":{"position":[[213,6]]}}}],["ready2023",{"_index":2020,"t":{"306":{"position":[[808,9],[926,9]]}}}],["ready_output",{"_index":2050,"t":{"306":{"position":[[3091,12],[3302,12],[3696,13]]},"308":{"position":[[103,12],[1041,13],[2344,13],[3395,13]]},"310":{"position":[[297,13],[481,13]]}}}],["real",{"_index":194,"t":{"14":{"position":[[175,4]]},"756":{"position":[[32,4],[218,4]]},"863":{"position":[[32,4],[226,4]]},"869":{"position":[[61,4]]},"879":{"position":[[136,4]]}}}],["realli",{"_index":1662,"t":{"216":{"position":[[6315,6]]},"536":{"position":[[536,6]]},"616":{"position":[[671,6]]},"642":{"position":[[760,6]]}}}],["reason",{"_index":809,"t":{"88":{"position":[[1367,8]]},"239":{"position":[[6917,10],[8900,6]]},"526":{"position":[[699,10],[977,10],[1089,12]]},"775":{"position":[[296,7]]},"923":{"position":[[289,7]]},"937":{"position":[[297,7]]}}}],["rebuild",{"_index":1019,"t":{"120":{"position":[[401,10]]}}}],["recal",{"_index":1096,"t":{"136":{"position":[[688,6]]}}}],["receiv",{"_index":284,"t":{"22":{"position":[[366,9]]},"30":{"position":[[384,8],[637,7]]},"42":{"position":[[689,7],[860,7],[949,7]]},"54":{"position":[[510,8],[1823,8]]},"56":{"position":[[780,8]]},"58":{"position":[[1142,8],[1289,8],[2110,8],[2270,8]]},"78":{"position":[[91,8]]},"86":{"position":[[197,7],[366,7]]},"88":{"position":[[385,9],[690,8],[981,9]]},"116":{"position":[[733,7]]},"132":{"position":[[72,7],[498,8]]},"134":{"position":[[48,7],[941,7]]},"136":{"position":[[1028,8]]},"138":{"position":[[2324,9],[2839,8],[3088,8]]},"158":{"position":[[679,8]]},"180":{"position":[[1727,8]]},"182":{"position":[[85,8]]},"190":{"position":[[268,9],[880,8],[1505,8]]},"204":{"position":[[234,8]]},"208":{"position":[[350,8]]},"216":{"position":[[6188,8]]},"235":{"position":[[1127,8],[1176,8]]},"239":{"position":[[2915,8]]},"378":{"position":[[210,7]]},"403":{"position":[[45,9]]},"415":{"position":[[1049,8]]},"427":{"position":[[189,8]]},"447":{"position":[[440,7]]},"480":{"position":[[506,8]]},"488":{"position":[[332,7]]},"524":{"position":[[395,8]]},"526":{"position":[[376,9],[446,9],[530,9],[607,8],[749,7]]},"556":{"position":[[562,9]]},"558":{"position":[[401,9],[606,9],[655,8],[687,9]]},"560":{"position":[[35,9],[482,9],[529,9]]},"566":{"position":[[524,8],[566,10]]},"568":{"position":[[419,9]]},"602":{"position":[[8,8],[967,9]]},"608":{"position":[[762,8]]},"614":{"position":[[8,8],[858,9]]},"624":{"position":[[251,8]]},"626":{"position":[[842,9],[912,8]]},"682":{"position":[[264,8]]},"696":{"position":[[914,8],[1194,8],[1276,8],[1434,8]]},"698":{"position":[[28,8],[169,8],[333,9],[387,8]]},"700":{"position":[[29,8],[171,8],[285,9],[339,8]]},"730":{"position":[[494,8]]},"750":{"position":[[144,7]]},"756":{"position":[[398,9],[524,8]]},"773":{"position":[[273,9]]},"775":{"position":[[90,9],[538,8],[598,9]]},"777":{"position":[[278,7]]},"779":{"position":[[210,9],[246,9]]},"781":{"position":[[331,8],[373,10]]},"785":{"position":[[21,8],[123,8],[314,8],[421,8],[545,8]]},"787":{"position":[[104,9]]},"793":{"position":[[124,9]]},"795":{"position":[[33,8],[166,8]]},"801":{"position":[[696,8],[4077,7],[4268,7]]},"805":{"position":[[492,7]]},"821":{"position":[[527,8],[574,8]]},"863":{"position":[[418,9]]},"879":{"position":[[290,8]]},"903":{"position":[[20,7],[385,7]]},"917":{"position":[[921,9],[957,8]]},"919":{"position":[[370,8]]},"921":{"position":[[485,8]]},"923":{"position":[[76,9],[615,8],[717,9]]},"925":{"position":[[55,9]]},"931":{"position":[[214,9],[256,8]]},"933":{"position":[[494,8]]},"935":{"position":[[272,9]]},"937":{"position":[[90,9],[543,8],[603,9]]},"939":{"position":[[290,7]]},"941":{"position":[[214,9],[250,8]]},"943":{"position":[[258,7],[339,7],[471,8]]},"951":{"position":[[16,9]]},"953":{"position":[[57,8],[187,9]]},"963":{"position":[[363,8],[405,10]]},"969":{"position":[[21,8],[123,8],[331,8],[451,8],[592,8]]},"971":{"position":[[104,9],[359,8],[488,8]]},"973":{"position":[[326,8]]},"975":{"position":[[89,9]]},"979":{"position":[[119,8],[336,8],[462,8],[490,8]]},"981":{"position":[[34,8],[163,8]]},"987":{"position":[[34,8],[509,8],[537,8]]},"989":{"position":[[217,8]]},"1001":{"position":[[220,8]]},"1007":{"position":[[1159,9]]},"1043":{"position":[[223,8],[396,8]]},"1053":{"position":[[141,8],[434,8],[1065,8]]},"1057":{"position":[[60,8],[253,9]]},"1061":{"position":[[50,8],[180,9]]},"1065":{"position":[[211,9],[239,8],[330,9],[600,8],[628,8]]},"1067":{"position":[[106,9],[134,8],[226,9],[311,8],[437,8],[465,8]]},"1078":{"position":[[483,8]]},"1089":{"position":[[384,9]]},"1091":{"position":[[384,9]]},"1093":{"position":[[384,9]]},"1095":{"position":[[384,9]]},"1097":{"position":[[384,9]]},"1159":{"position":[[368,9],[1106,8]]},"1161":{"position":[[263,9]]},"1163":{"position":[[393,9],[459,9]]},"1165":{"position":[[400,9]]}}}],["received_messag",{"_index":2727,"t":{"696":{"position":[[776,17],[1394,18]]},"1043":{"position":[[360,18]]}}}],["received_reward",{"_index":2724,"t":{"696":{"position":[[659,16],[1238,17]]},"1043":{"position":[[178,17]]}}}],["receiver_nam",{"_index":2505,"t":{"556":{"position":[[158,13],[385,14]]},"560":{"position":[[218,13],[502,14]]},"979":{"position":[[86,14]]},"981":{"position":[[130,14]]}}}],["receivernam",{"_index":2797,"t":{"795":{"position":[[131,13]]}}}],["recent",{"_index":1700,"t":{"229":{"position":[[2238,6]]},"296":{"position":[[171,8]]},"423":{"position":[[409,8]]},"431":{"position":[[98,8]]},"889":{"position":[[292,7]]},"897":{"position":[[191,7]]}}}],["recent/dynam",{"_index":1944,"t":{"290":{"position":[[281,14]]}}}],["recept",{"_index":1530,"t":{"188":{"position":[[1228,9]]}}}],["recip",{"_index":819,"t":{"90":{"position":[[160,6],[612,6],[676,6]]}}}],["recipi",{"_index":690,"t":{"71":{"position":[[705,10]]},"239":{"position":[[4565,10]]}}}],["recommand",{"_index":897,"t":{"96":{"position":[[557,9]]}}}],["recommend",{"_index":820,"t":{"90":{"position":[[197,11]]},"96":{"position":[[710,11]]},"106":{"position":[[0,11],[269,11]]},"108":{"position":[[881,11]]},"114":{"position":[[253,11]]},"118":{"position":[[60,9]]},"413":{"position":[[1157,9]]}}}],["record",{"_index":1870,"t":{"249":{"position":[[69,8]]},"298":{"position":[[2809,8]]},"306":{"position":[[1275,6]]},"334":{"position":[[69,8]]},"370":{"position":[[69,8]]},"441":{"position":[[69,8]]},"471":{"position":[[69,8]]},"877":{"position":[[35,8]]}}}],["recov",{"_index":1957,"t":{"294":{"position":[[673,9]]},"298":{"position":[[2775,7]]}}}],["recurr",{"_index":2463,"t":{"530":{"position":[[47,9]]}}}],["recurs",{"_index":2420,"t":{"514":{"position":[[209,11],[345,9]]}}}],["recvact",{"_index":3017,"t":{"1019":{"position":[[244,10]]}}}],["recvaction.tick_id",{"_index":2415,"t":{"508":{"position":[[1145,18]]}}}],["recvev",{"_index":2781,"t":{"775":{"position":[[518,9]]},"923":{"position":[[595,9]]},"937":{"position":[[523,9]]}}}],["recvobserv",{"_index":950,"t":{"108":{"position":[[349,15],[917,15]]},"502":{"position":[[553,16]]},"969":{"position":[[269,15]]},"1021":{"position":[[313,15]]}}}],["redefin",{"_index":114,"t":{"10":{"position":[[281,9]]},"239":{"position":[[9007,9]]}}}],["redefined'",{"_index":3042,"t":{"1071":{"position":[[62,11]]}}}],["redistribut",{"_index":1782,"t":{"239":{"position":[[4316,15],[7505,14],[8374,14]]}}}],["reduc",{"_index":1297,"t":{"168":{"position":[[179,6]]}}}],["refactor",{"_index":2380,"t":{"482":{"position":[[224,12]]}}}],["refer",{"_index":293,"t":{"24":{"position":[[125,5]]},"30":{"position":[[1123,9]]},"50":{"position":[[954,9]]},"54":{"position":[[2056,10],[2497,10]]},"58":{"position":[[1504,10],[2489,10]]},"64":{"position":[[344,10],[482,10]]},"66":{"position":[[1476,10]]},"124":{"position":[[1707,6]]},"128":{"position":[[1019,8],[1202,9]]},"130":{"position":[[17,6]]},"132":{"position":[[22,6]]},"138":{"position":[[1344,10]]},"140":{"position":[[118,5]]},"168":{"position":[[649,5]]},"218":{"position":[[314,5]]},"229":{"position":[[418,6],[1701,9],[2710,9]]},"271":{"position":[[539,9]]},"490":{"position":[[205,5],[237,9]]},"494":{"position":[[470,5]]},"510":{"position":[[754,6]]},"512":{"position":[[622,8]]},"522":{"position":[[485,9]]},"536":{"position":[[151,8]]},"696":{"position":[[261,9]]},"732":{"position":[[396,5]]},"811":{"position":[[1408,8]]},"823":{"position":[[438,5]]}}}],["refere",{"_index":2432,"t":{"520":{"position":[[1164,7]]},"803":{"position":[[1826,7]]}}}],["referenc",{"_index":1068,"t":{"128":{"position":[[937,10]]},"212":{"position":[[691,10]]},"512":{"position":[[93,10],[136,10]]},"524":{"position":[[1049,10]]},"696":{"position":[[132,10],[441,10]]},"724":{"position":[[530,10]]}}}],["reflect",{"_index":1917,"t":{"278":{"position":[[30,10]]},"320":{"position":[[30,10]]},"429":{"position":[[30,10]]},"989":{"position":[[238,9]]},"1001":{"position":[[241,9]]}}}],["regard",{"_index":1806,"t":{"239":{"position":[[6725,9]]},"672":{"position":[[322,9]]}}}],["regardless",{"_index":1467,"t":{"182":{"position":[[621,10]]},"298":{"position":[[1977,10]]},"787":{"position":[[653,11]]}}}],["regener",{"_index":1631,"t":{"212":{"position":[[1554,10]]}}}],["regex",{"_index":2051,"t":{"306":{"position":[[3325,5],[3412,5],[3485,5],[3518,5],[3876,5],[4089,5]]}}}],["regist",{"_index":296,"t":{"24":{"position":[[215,10]]},"46":{"position":[[318,8],[393,8],[463,8],[493,8],[597,8],[1093,8]]},"54":{"position":[[2111,10]]},"80":{"position":[[155,10],[814,10]]},"84":{"position":[[170,10]]},"90":{"position":[[1715,10]]},"126":{"position":[[309,11],[326,11],[528,10],[635,11]]},"136":{"position":[[1418,11]]},"138":{"position":[[578,10],[766,10]]},"140":{"position":[[313,8]]},"144":{"position":[[41,8],[167,8],[1174,10]]},"146":{"position":[[42,10],[4029,10]]},"148":{"position":[[113,8],[176,10]]},"150":{"position":[[566,10]]},"156":{"position":[[1031,8]]},"182":{"position":[[591,8]]},"192":{"position":[[50,8]]},"194":{"position":[[62,10],[125,10]]},"200":{"position":[[233,11],[250,11]]},"241":{"position":[[131,9]]},"249":{"position":[[34,10],[100,11]]},"251":{"position":[[24,8],[100,8]]},"253":{"position":[[57,10]]},"261":{"position":[[110,11]]},"284":{"position":[[100,11],[295,8]]},"292":{"position":[[149,10],[214,10],[241,11],[874,11]]},"296":{"position":[[180,10]]},"298":{"position":[[842,10],[964,10],[2107,11],[2684,11],[2898,10]]},"332":{"position":[[101,8],[220,9]]},"334":{"position":[[34,10],[100,11]]},"336":{"position":[[30,10]]},"338":{"position":[[38,10],[178,11]]},"368":{"position":[[101,8],[363,8]]},"370":{"position":[[34,10],[100,11]]},"372":{"position":[[37,8],[109,11],[200,8]]},"374":{"position":[[30,10]]},"376":{"position":[[38,10],[177,11]]},"401":{"position":[[34,10]]},"439":{"position":[[101,8],[223,9]]},"441":{"position":[[34,10],[100,11]]},"443":{"position":[[30,10]]},"445":{"position":[[38,10],[180,11]]},"469":{"position":[[101,8],[247,9]]},"471":{"position":[[34,10],[100,11]]},"473":{"position":[[30,10]]},"475":{"position":[[38,10],[173,11]]},"636":{"position":[[285,11],[307,8],[420,11],[445,10],[587,10],[733,10],[810,10]]},"638":{"position":[[16,11],[1301,10]]},"644":{"position":[[24,8],[224,11],[271,10]]},"646":{"position":[[22,8],[683,10]]},"648":{"position":[[207,11]]},"746":{"position":[[10,8],[172,11]]},"750":{"position":[[92,11]]},"775":{"position":[[188,11]]},"811":{"position":[[2461,10],[2565,11],[3453,10],[4589,10],[4735,10],[5683,8],[5849,10],[5911,10],[6292,10],[6490,10],[6609,10],[6671,10]]},"829":{"position":[[150,10]]},"831":{"position":[[816,8],[1121,10],[1166,10]]},"835":{"position":[[57,10],[243,8],[748,8],[836,11]]},"845":{"position":[[10,8],[184,11],[357,10]]},"847":{"position":[[10,8],[168,11],[527,10]]},"849":{"position":[[10,8],[130,11],[263,10],[436,11],[641,10]]},"851":{"position":[[10,8],[141,11],[307,10],[391,10]]},"905":{"position":[[1436,10]]},"919":{"position":[[193,10]]},"923":{"position":[[174,11]]},"933":{"position":[[184,10]]},"937":{"position":[[188,11]]},"943":{"position":[[158,10]]},"949":{"position":[[177,10]]},"1100":{"position":[[415,8],[720,10],[765,10]]}}}],["register(stream",{"_index":2597,"t":{"636":{"position":[[26,15]]}}}],["register_actor",{"_index":2957,"t":{"937":{"position":[[205,15]]}}}],["register_environ",{"_index":1558,"t":{"200":{"position":[[305,20]]},"923":{"position":[[191,21]]}}}],["register_pre_trial_hook",{"_index":2802,"t":{"799":{"position":[[242,25]]}}}],["registeractor",{"_index":2778,"t":{"775":{"position":[[205,14]]}}}],["registerrepli",{"_index":2599,"t":{"636":{"position":[[75,14]]},"646":{"position":[[50,13]]}}}],["registerrequest",{"_index":2598,"t":{"636":{"position":[[42,16]]},"644":{"position":[[52,15]]}}}],["registr",{"_index":583,"t":{"60":{"position":[[604,12]]},"150":{"position":[[430,13]]},"296":{"position":[[124,14],[244,12]]},"298":{"position":[[184,13],[2824,13],[2949,12]]},"332":{"position":[[251,12]]},"336":{"position":[[180,12]]},"368":{"position":[[407,12]]},"374":{"position":[[177,12]]},"439":{"position":[[254,12]]},"443":{"position":[[183,12]]},"469":{"position":[[278,12]]},"473":{"position":[[170,12]]},"640":{"position":[[19,12]]},"646":{"position":[[324,12],[378,12],[513,12],[589,12]]},"811":{"position":[[6226,12]]}}}],["registration_lag",{"_index":1933,"t":{"284":{"position":[[425,17]]}}}],["registri",{"_index":424,"t":{"44":{"position":[[369,8]]},"46":{"position":[[787,8],[848,8],[867,8],[895,8],[916,8]]},"80":{"position":[[749,9]]},"298":{"position":[[1658,9],[1683,8]]},"312":{"position":[[14,8],[113,8]]},"314":{"position":[[10,8]]},"316":{"position":[[10,8]]},"318":{"position":[[42,8]]},"332":{"position":[[120,8],[197,8],[355,9]]},"336":{"position":[[72,8],[117,8]]},"338":{"position":[[80,8]]},"656":{"position":[[80,9]]},"658":{"position":[[772,8],[817,9],[988,9]]},"660":{"position":[[173,8]]},"686":{"position":[[299,9],[425,9]]},"811":{"position":[[3984,8]]},"831":{"position":[[467,8],[630,9]]},"841":{"position":[[71,8],[161,9]]},"885":{"position":[[61,9],[310,9]]},"887":{"position":[[36,8],[195,8],[239,8],[470,9]]},"891":{"position":[[86,9],[164,9]]},"893":{"position":[[62,9],[178,9]]},"895":{"position":[[81,9]]},"901":{"position":[[275,9]]},"903":{"position":[[259,8]]},"905":{"position":[[488,10],[956,9],[1073,8],[1235,9],[1460,9]]},"1029":{"position":[[79,9],[229,9]]},"1031":{"position":[[56,9]]},"1035":{"position":[[366,9],[454,9]]},"1100":{"position":[[1532,9]]},"1106":{"position":[[18,8],[116,9]]},"1136":{"position":[[748,8]]},"1152":{"position":[[226,8],[350,9]]},"1163":{"position":[[641,8],[765,9]]}}}],["registry:v0.4.0",{"_index":888,"t":{"94":{"position":[[564,15]]}}}],["regular",{"_index":1911,"t":{"271":{"position":[[228,7]]},"294":{"position":[[53,7]]},"306":{"position":[[3331,8]]}}}],["reinforc",{"_index":150,"t":{"12":{"position":[[150,13]]},"28":{"position":[[220,13]]},"186":{"position":[[243,13]]}}}],["rel",{"_index":1529,"t":{"188":{"position":[[1212,8]]},"224":{"position":[[423,9]]},"306":{"position":[[5177,8]]},"674":{"position":[[138,8]]}}}],["relat",{"_index":696,"t":{"71":{"position":[[1020,7]]},"229":{"position":[[475,7]]},"484":{"position":[[31,7]]},"486":{"position":[[37,7]]},"516":{"position":[[32,7]]},"518":{"position":[[32,7]]},"526":{"position":[[99,7]]},"530":{"position":[[374,8]]},"534":{"position":[[738,7]]},"542":{"position":[[11,7]]},"544":{"position":[[11,7]]},"546":{"position":[[11,7]]},"562":{"position":[[240,6]]},"564":{"position":[[218,6]]},"570":{"position":[[221,7]]},"626":{"position":[[797,7]]},"694":{"position":[[501,7]]},"779":{"position":[[25,7]]},"783":{"position":[[278,7]]},"803":{"position":[[555,7]]},"931":{"position":[[25,7]]},"941":{"position":[[25,7]]},"965":{"position":[[372,7]]},"973":{"position":[[111,7]]},"977":{"position":[[102,7]]},"979":{"position":[[74,7]]},"991":{"position":[[76,6]]},"1003":{"position":[[76,6]]},"1007":{"position":[[823,7]]},"1049":{"position":[[162,7]]},"1053":{"position":[[26,7]]},"1089":{"position":[[268,7],[463,8],[637,8]]},"1091":{"position":[[268,7],[463,8],[637,8]]},"1093":{"position":[[268,7],[463,8],[637,8]]},"1095":{"position":[[268,7],[484,8]]},"1097":{"position":[[268,7],[484,8]]},"1114":{"position":[[24,7]]}}}],["relationship",{"_index":1566,"t":{"204":{"position":[[804,13]]}}}],["releas",{"_index":2440,"t":{"522":{"position":[[625,8]]}}}],["relev",{"_index":471,"t":{"50":{"position":[[859,8]]},"158":{"position":[[901,8]]},"180":{"position":[[762,8],[2204,8],[3875,8]]},"204":{"position":[[35,8]]},"229":{"position":[[1140,8]]},"407":{"position":[[60,8]]},"500":{"position":[[1071,8]]},"801":{"position":[[3971,8]]},"863":{"position":[[635,8]]}}}],["reli",{"_index":1309,"t":{"170":{"position":[[210,6]]},"423":{"position":[[499,6]]},"455":{"position":[[105,4]]},"855":{"position":[[74,4]]},"883":{"position":[[77,4]]}}}],["reliabl",{"_index":3094,"t":{"1136":{"position":[[459,8]]}}}],["remain",{"_index":310,"t":{"24":{"position":[[913,7]]},"118":{"position":[[262,8]]},"210":{"position":[[1351,9]]},"239":{"position":[[1803,6]]},"271":{"position":[[309,6]]},"490":{"position":[[115,8]]}}}],["remot",{"_index":2436,"t":{"522":{"position":[[134,8]]},"760":{"position":[[36,6]]},"867":{"position":[[36,6]]}}}],["remov",{"_index":902,"t":{"96":{"position":[[972,6]]},"98":{"position":[[187,6]]},"100":{"position":[[136,6]]},"104":{"position":[[359,6]]},"108":{"position":[[170,6]]},"116":{"position":[[468,6],[988,6]]},"146":{"position":[[1975,6],[2093,6],[2388,6],[2515,6],[2693,6],[3414,6]]},"152":{"position":[[241,6]]},"241":{"position":[[152,8]]},"261":{"position":[[37,7]]},"271":{"position":[[409,7]]},"294":{"position":[[507,7]]},"296":{"position":[[638,7]]},"636":{"position":[[567,8]]},"877":{"position":[[108,6]]},"891":{"position":[[141,7]]}}}],["remove/delet",{"_index":1898,"t":{"257":{"position":[[35,15]]}}}],["renam",{"_index":997,"t":{"116":{"position":[[1093,6]]},"488":{"position":[[770,7],[856,7]]}}}],["render",{"_index":1469,"t":{"182":{"position":[[638,9]]}}}],["repeat",{"_index":833,"t":{"90":{"position":[[1297,8]]},"534":{"position":[[563,8]]},"536":{"position":[[228,8]]},"540":{"position":[[174,8]]},"542":{"position":[[107,8]]},"560":{"position":[[254,8]]},"562":{"position":[[131,8],[164,8]]},"564":{"position":[[110,8],[138,8]]},"584":{"position":[[71,8]]},"586":{"position":[[217,8]]},"588":{"position":[[74,8]]},"618":{"position":[[274,8]]},"626":{"position":[[166,8],[280,8],[309,8],[338,8],[369,8],[405,8]]},"668":{"position":[[77,8]]},"670":{"position":[[73,8]]},"676":{"position":[[111,8]]},"678":{"position":[[86,8]]},"694":{"position":[[192,8],[243,8]]},"696":{"position":[[621,8],[681,8],[737,8],[799,8]]},"704":{"position":[[79,8]]},"706":{"position":[[75,8]]},"708":{"position":[[81,8],[112,8],[145,8],[180,8],[223,8]]},"720":{"position":[[75,8]]}}}],["replac",{"_index":940,"t":{"106":{"position":[[311,7]]},"110":{"position":[[392,7]]},"136":{"position":[[897,7]]},"158":{"position":[[1866,7]]},"178":{"position":[[77,7]]},"184":{"position":[[212,7]]},"210":{"position":[[144,7]]},"214":{"position":[[1021,7]]},"308":{"position":[[661,8],[1302,8]]},"492":{"position":[[164,8]]}}}],["repli",{"_index":1968,"t":{"296":{"position":[[863,5]]},"524":{"position":[[752,7]]},"526":{"position":[[783,5]]},"534":{"position":[[0,5]]},"536":{"position":[[407,5]]},"538":{"position":[[0,5]]},"576":{"position":[[0,5]]},"580":{"position":[[0,5]]},"584":{"position":[[0,5]]},"590":{"position":[[7,5]]},"606":{"position":[[317,5]]},"628":{"position":[[0,5]]},"646":{"position":[[0,5]]},"650":{"position":[[0,5]]},"654":{"position":[[0,5]]},"658":{"position":[[888,6],[1041,6],[1206,6],[1437,6],[1613,6],[1848,6]]},"662":{"position":[[0,5]]},"666":{"position":[[0,5]]},"670":{"position":[[0,5]]},"674":{"position":[[0,5]]},"678":{"position":[[0,5]]},"682":{"position":[[12,5]]},"690":{"position":[[628,6],[785,6],[989,6],[1281,6],[1442,6]]},"706":{"position":[[0,5]]},"710":{"position":[[12,5]]},"714":{"position":[[0,5]]},"718":{"position":[[0,5]]},"722":{"position":[[0,5]]},"775":{"position":[[682,7]]},"923":{"position":[[805,7]]},"937":{"position":[[688,7]]}}}],["report",{"_index":37,"t":{"4":{"position":[[151,6]]},"6":{"position":[[18,6]]},"138":{"position":[[912,8],[2177,6]]},"235":{"position":[[1027,9],[1852,8]]},"263":{"position":[[507,10]]},"294":{"position":[[588,8]]},"296":{"position":[[1673,10]]},"310":{"position":[[892,7]]},"407":{"position":[[306,10]]},"534":{"position":[[382,8]]},"538":{"position":[[150,8]]},"588":{"position":[[238,9],[289,9]]},"602":{"position":[[678,6]]},"606":{"position":[[67,6]]},"921":{"position":[[10,6]]},"927":{"position":[[10,6]]}}}],["reporting_servic",{"_index":2124,"t":{"310":{"position":[[912,21]]}}}],["repositori",{"_index":1133,"t":{"140":{"position":[[204,11]]},"154":{"position":[[178,11]]},"160":{"position":[[178,11]]},"174":{"position":[[312,11]]},"178":{"position":[[174,11]]},"184":{"position":[[73,10],[177,10]]},"218":{"position":[[230,10]]},"222":{"position":[[145,11],[196,10]]},"235":{"position":[[1420,11]]}}}],["repository>/basic_tutorial_steps/1",{"_index":1689,"t":{"224":{"position":[[448,34]]}}}],["repres",{"_index":281,"t":{"22":{"position":[[249,12],[321,10]]},"71":{"position":[[875,9]]},"124":{"position":[[604,10]]},"138":{"position":[[2415,10],[3686,10]]},"180":{"position":[[2349,13],[2491,13]]},"216":{"position":[[1850,10]]},"235":{"position":[[1949,10]]},"239":{"position":[[1668,10],[2414,16]]},"296":{"position":[[1389,12]]},"298":{"position":[[719,10],[905,9]]},"306":{"position":[[96,10]]},"338":{"position":[[207,12]]},"376":{"position":[[206,12]]},"445":{"position":[[209,12]]},"475":{"position":[[202,12]]},"484":{"position":[[127,9]]},"520":{"position":[[415,10],[577,10]]},"522":{"position":[[223,13]]},"530":{"position":[[190,10],[281,12]]},"552":{"position":[[225,12],[470,11]]},"554":{"position":[[263,12],[494,11]]},"558":{"position":[[5,12]]},"560":{"position":[[5,12]]},"562":{"position":[[426,12],[678,11]]},"564":{"position":[[417,12]]},"566":{"position":[[5,12]]},"568":{"position":[[5,12]]},"694":{"position":[[0,10]]},"696":{"position":[[0,10]]},"698":{"position":[[0,10]]},"700":{"position":[[0,10]]},"702":{"position":[[6,12]]},"779":{"position":[[411,9],[478,11]]},"781":{"position":[[5,12]]},"785":{"position":[[6,12],[239,11]]},"787":{"position":[[5,12]]},"811":{"position":[[3420,12]]},"885":{"position":[[502,12]]},"887":{"position":[[603,12]]},"889":{"position":[[360,12]]},"917":{"position":[[378,9],[428,11]]},"919":{"position":[[607,11]]},"931":{"position":[[404,9],[471,11]]},"933":{"position":[[292,11],[411,11],[721,11]]},"941":{"position":[[451,9],[518,11]]},"963":{"position":[[5,12]]},"969":{"position":[[6,12],[244,11]]},"971":{"position":[[5,12]]},"975":{"position":[[5,12]]},"995":{"position":[[91,10]]},"999":{"position":[[121,12]]},"1007":{"position":[[605,9]]},"1011":{"position":[[92,10]]},"1015":{"position":[[110,12]]},"1033":{"position":[[568,11]]},"1043":{"position":[[5,12]]},"1049":{"position":[[55,12]]},"1065":{"position":[[311,9]]},"1067":{"position":[[207,9]]},"1089":{"position":[[132,11],[202,12]]},"1091":{"position":[[132,11],[202,12]]},"1093":{"position":[[132,11],[202,12]]},"1095":{"position":[[132,11],[202,12]]},"1097":{"position":[[132,11],[202,12]]},"1136":{"position":[[99,10],[176,10],[251,10]]}}}],["represent",{"_index":1970,"t":{"296":{"position":[[1165,14]]},"536":{"position":[[770,14]]}}}],["reproduc",{"_index":1766,"t":{"239":{"position":[[3202,10],[4340,9],[6987,11]]}}}],["reproduct",{"_index":1711,"t":{"239":{"position":[[71,13],[6092,13],[6209,13]]}}}],["request",{"_index":399,"t":{"38":{"position":[[244,10]]},"54":{"position":[[605,10],[1655,9]]},"66":{"position":[[53,7]]},"84":{"position":[[24,7]]},"138":{"position":[[1834,7]]},"170":{"position":[[492,8]]},"208":{"position":[[2141,9]]},"214":{"position":[[870,7]]},"216":{"position":[[3754,9]]},"245":{"position":[[46,8]]},"396":{"position":[[31,7],[125,7]]},"399":{"position":[[137,7]]},"405":{"position":[[46,7],[242,7]]},"407":{"position":[[34,7]]},"409":{"position":[[29,8],[61,7],[187,7],[528,9],[636,8]]},"413":{"position":[[561,8]]},"508":{"position":[[85,8],[169,9]]},"524":{"position":[[619,7]]},"532":{"position":[[30,7]]},"536":{"position":[[0,7],[178,7],[292,8],[392,10],[567,8],[698,9]]},"538":{"position":[[114,9],[337,9]]},"566":{"position":[[500,7]]},"572":{"position":[[417,7],[686,10],[748,7],[875,7]]},"574":{"position":[[0,7],[661,9]]},"576":{"position":[[146,9]]},"578":{"position":[[0,7]]},"582":{"position":[[0,7],[142,7]]},"584":{"position":[[165,9]]},"586":{"position":[[771,9]]},"588":{"position":[[0,7],[163,10]]},"590":{"position":[[379,9]]},"600":{"position":[[0,7]]},"606":{"position":[[339,7]]},"608":{"position":[[270,7]]},"612":{"position":[[528,7]]},"618":{"position":[[588,9]]},"624":{"position":[[313,7],[563,7]]},"626":{"position":[[7,7]]},"632":{"position":[[377,7]]},"636":{"position":[[979,7]]},"644":{"position":[[0,7]]},"646":{"position":[[526,8]]},"648":{"position":[[0,7]]},"650":{"position":[[451,8]]},"652":{"position":[[0,7]]},"658":{"position":[[852,8],[1013,8],[1150,9],[1175,8],[1392,8],[1576,8],[1812,8]]},"660":{"position":[[0,7]]},"664":{"position":[[0,7]]},"668":{"position":[[0,7],[386,8],[448,8]]},"670":{"position":[[289,8]]},"672":{"position":[[12,7]]},"676":{"position":[[0,7],[569,8],[633,8]]},"678":{"position":[[333,8]]},"680":{"position":[[0,7]]},"686":{"position":[[1171,7]]},"690":{"position":[[573,8],[597,8],[753,8],[964,8],[1166,9],[1245,8],[1357,8],[1413,8]]},"704":{"position":[[0,7],[513,8]]},"706":{"position":[[313,8]]},"708":{"position":[[0,7]]},"710":{"position":[[175,9]]},"712":{"position":[[0,7]]},"716":{"position":[[12,7]]},"720":{"position":[[0,7]]},"724":{"position":[[575,7]]},"750":{"position":[[475,9]]},"752":{"position":[[10,7],[90,7]]},"754":{"position":[[104,7]]},"758":{"position":[[113,7]]},"781":{"position":[[301,7]]},"801":{"position":[[484,10],[3305,9],[3651,9]]},"851":{"position":[[101,9]]},"857":{"position":[[699,9],[1335,9]]},"859":{"position":[[10,7],[92,7],[471,7]]},"861":{"position":[[106,7]]},"865":{"position":[[111,7]]},"873":{"position":[[248,7]]},"879":{"position":[[233,7]]},"889":{"position":[[396,10]]},"963":{"position":[[339,7]]},"1157":{"position":[[146,7]]},"1159":{"position":[[594,9]]}}}],["request/repli",{"_index":2521,"t":{"568":{"position":[[373,13]]}}}],["requir",{"_index":481,"t":{"52":{"position":[[243,8],[570,8]]},"60":{"position":[[1517,13]]},"62":{"position":[[352,8],[730,8]]},"88":{"position":[[1308,8]]},"96":{"position":[[846,8],[893,8]]},"98":{"position":[[171,8]]},"100":{"position":[[120,8]]},"104":{"position":[[343,8]]},"108":{"position":[[154,8]]},"110":{"position":[[177,8],[376,8],[582,8],[805,8]]},"112":{"position":[[0,8]]},"116":{"position":[[0,8],[428,8],[972,8],[1077,8]]},"146":{"position":[[1298,8]]},"150":{"position":[[29,7],[502,7]]},"168":{"position":[[711,8]]},"227":{"position":[[95,8]]},"233":{"position":[[202,8]]},"239":{"position":[[6904,8],[7065,8],[7753,8]]},"255":{"position":[[270,8]]},"263":{"position":[[372,8]]},"292":{"position":[[380,8]]},"298":{"position":[[1018,8],[1056,12],[1089,8],[2295,7]]},"340":{"position":[[31,7]]},"346":{"position":[[15,7]]},"364":{"position":[[97,8]]},"368":{"position":[[306,7]]},"409":{"position":[[471,7]]},"480":{"position":[[243,8],[525,8]]},"508":{"position":[[730,8]]},"522":{"position":[[495,8]]},"524":{"position":[[688,8]]},"566":{"position":[[180,11]]},"568":{"position":[[234,11]]},"638":{"position":[[406,11]]},"642":{"position":[[306,11],[420,7]]},"646":{"position":[[262,11]]},"650":{"position":[[224,11]]},"652":{"position":[[43,8]]},"686":{"position":[[1104,8]]},"730":{"position":[[197,8]]},"734":{"position":[[21,7],[321,8]]},"801":{"position":[[2469,9],[2622,9],[3837,8]]},"814":{"position":[[290,11]]},"819":{"position":[[1068,9]]},"821":{"position":[[210,8]]},"825":{"position":[[676,8]]},"827":{"position":[[120,8],[344,9]]},"1074":{"position":[[23,8]]}}}],["requirements.txt",{"_index":890,"t":{"94":{"position":[[710,16]]},"229":{"position":[[178,16],[1874,17],[1896,16]]}}}],["reserv",{"_index":2229,"t":{"372":{"position":[[277,9]]},"604":{"position":[[793,9]]},"616":{"position":[[920,9]]},"801":{"position":[[350,8]]},"811":{"position":[[5149,9],[5372,8],[5434,8]]}}}],["reset",{"_index":2990,"t":{"989":{"position":[[105,5]]},"1001":{"position":[[115,5]]},"1159":{"position":[[2077,5]]}}}],["resolut",{"_index":2550,"t":{"586":{"position":[[600,10]]}}}],["resolv",{"_index":3127,"t":{"1159":{"position":[[1929,7]]}}}],["resourc",{"_index":1986,"t":{"298":{"position":[[747,9],[925,9]]},"809":{"position":[[44,8]]}}}],["respect",{"_index":898,"t":{"96":{"position":[[593,12]]},"308":{"position":[[1717,12]]},"548":{"position":[[497,10]]},"592":{"position":[[93,13]]},"682":{"position":[[339,13]]},"799":{"position":[[526,10]]},"819":{"position":[[336,10]]}}}],["respond",{"_index":247,"t":{"18":{"position":[[372,8]]},"62":{"position":[[850,7]]},"88":{"position":[[1520,8]]},"196":{"position":[[187,8]]},"284":{"position":[[45,10]]},"526":{"position":[[342,7],[487,7],[682,7]]},"568":{"position":[[437,9]]},"801":{"position":[[3446,7]]},"859":{"position":[[453,7]]},"975":{"position":[[143,10],[339,11]]}}}],["respons",{"_index":388,"t":{"36":{"position":[[67,11],[298,15]]},"38":{"position":[[138,11]]},"42":{"position":[[728,9]]},"54":{"position":[[1394,8]]},"62":{"position":[[71,9]]},"126":{"position":[[706,11]]},"134":{"position":[[866,8]]},"208":{"position":[[85,8]]},"235":{"position":[[251,11]]},"239":{"position":[[7445,11],[8686,15]]},"294":{"position":[[297,8]]},"524":{"position":[[373,14]]},"556":{"position":[[510,14]]},"558":{"position":[[633,14]]},"752":{"position":[[358,8]]},"779":{"position":[[188,14]]},"787":{"position":[[493,9]]},"805":{"position":[[682,8]]},"811":{"position":[[3062,11]]},"859":{"position":[[387,8]]},"917":{"position":[[899,14]]},"931":{"position":[[192,14]]},"941":{"position":[[192,14]]},"971":{"position":[[596,9]]},"979":{"position":[[440,14]]},"987":{"position":[[487,14]]},"1065":{"position":[[578,14]]},"1067":{"position":[[415,14]]}}}],["response_timeout",{"_index":607,"t":{"62":{"position":[[122,17],[780,16]]},"546":{"position":[[240,16],[641,16]]},"801":{"position":[[3368,17]]},"803":{"position":[[930,16],[1886,17]]},"1001":{"position":[[836,17]]}}}],["responsivefonts",{"_index":1366,"t":{"178":{"position":[[389,20]]}}}],["responsivefontsizes(theme);const",{"_index":1376,"t":{"178":{"position":[[586,32]]}}}],["rest",{"_index":1681,"t":{"224":{"position":[[136,4]]},"574":{"position":[[309,4]]},"626":{"position":[[1089,4]]},"809":{"position":[[195,4]]}}}],["restart",{"_index":3091,"t":{"1122":{"position":[[10,7]]}}}],["restrict",{"_index":991,"t":{"116":{"position":[[530,10]]},"255":{"position":[[975,10]]},"298":{"position":[[2554,10]]},"488":{"position":[[48,10]]}}}],["result",{"_index":943,"t":{"108":{"position":[[75,6]]},"110":{"position":[[301,6]]},"168":{"position":[[462,9]]},"186":{"position":[[711,6]]},"239":{"position":[[1036,9],[8013,6]]},"284":{"position":[[64,6]]},"296":{"position":[[1328,6]]},"378":{"position":[[250,6]]},"415":{"position":[[523,8],[747,8]]},"646":{"position":[[211,6]]},"650":{"position":[[173,6]]},"811":{"position":[[897,6]]},"1033":{"position":[[263,7]]}}}],["resum",{"_index":3090,"t":{"1120":{"position":[[201,8]]},"1122":{"position":[[46,7]]}}}],["retain",{"_index":110,"t":{"10":{"position":[[235,6]]},"239":{"position":[[4754,7]]},"296":{"position":[[790,9],[804,8]]}}}],["retriev",{"_index":258,"t":{"18":{"position":[[816,10]]},"38":{"position":[[171,10]]},"40":{"position":[[362,10]]},"42":{"position":[[766,9],[1011,9]]},"54":{"position":[[916,8]]},"80":{"position":[[1022,9]]},"118":{"position":[[375,9]]},"126":{"position":[[1007,9]]},"140":{"position":[[174,9]]},"154":{"position":[[148,9]]},"158":{"position":[[813,9]]},"160":{"position":[[148,9]]},"200":{"position":[[729,9]]},"208":{"position":[[129,8]]},"214":{"position":[[505,9]]},"306":{"position":[[979,10],[1357,9],[3721,9]]},"346":{"position":[[392,8]]},"350":{"position":[[579,8],[1005,8]]},"352":{"position":[[185,8]]},"415":{"position":[[334,9],[472,10],[498,8],[585,9],[720,8],[1141,9]]},"480":{"position":[[90,8],[461,8]]},"658":{"position":[[1083,8],[1487,8],[1669,8],[1774,9]]},"668":{"position":[[232,8],[313,10],[353,8],[540,8]]},"670":{"position":[[251,8]]},"676":{"position":[[247,8],[378,8],[488,10],[528,8],[733,8]]},"678":{"position":[[291,8]]},"680":{"position":[[181,8]]},"690":{"position":[[531,8],[676,8],[914,9]]},"704":{"position":[[409,10],[605,8]]},"706":{"position":[[273,8]]},"750":{"position":[[619,9]]},"839":{"position":[[34,8]]},"841":{"position":[[44,8]]},"857":{"position":[[843,9]]},"869":{"position":[[37,8]]},"875":{"position":[[148,8],[777,10]]},"881":{"position":[[47,8]]},"889":{"position":[[10,8],[184,10],[252,10],[318,10]]},"893":{"position":[[10,8]]},"895":{"position":[[10,8]]},"897":{"position":[[10,8],[217,10]]},"901":{"position":[[10,8]]},"905":{"position":[[210,8],[463,9]]},"945":{"position":[[10,8]]},"947":{"position":[[10,8]]},"1017":{"position":[[87,9]]},"1019":{"position":[[0,9],[127,8],[192,9]]},"1021":{"position":[[0,8],[191,8],[261,9]]},"1035":{"position":[[429,9]]},"1041":{"position":[[107,9]]},"1053":{"position":[[508,9],[946,9]]},"1110":{"position":[[210,8]]},"1112":{"position":[[183,8]]},"1136":{"position":[[673,8]]},"1142":{"position":[[31,10]]},"1144":{"position":[[190,9]]},"1152":{"position":[[330,8]]},"1154":{"position":[[10,8]]},"1163":{"position":[[235,8],[745,8]]},"1165":{"position":[[216,8]]}}}],["retrieve_db.sh",{"_index":2014,"t":{"306":{"position":[[567,18],[3648,18]]}}}],["retrieve_db.sh]2023",{"_index":2022,"t":{"306":{"position":[[868,20]]}}}],["retrievemodel",{"_index":2649,"t":{"658":{"position":[[1065,17]]}}}],["retrievemodels(retrievemodelsrequest",{"_index":2635,"t":{"658":{"position":[[313,37]]}}}],["retrievemodelsrepli",{"_index":2636,"t":{"658":{"position":[[359,21],[1213,19]]},"670":{"position":[[51,19]]}}}],["retrievemodelsreply.next_model_handl",{"_index":2665,"t":{"668":{"position":[[481,37]]}}}],["retrievemodelsrequest",{"_index":2651,"t":{"658":{"position":[[1184,21]]},"668":{"position":[[53,21]]}}}],["retrievemodelsrequest.models_count",{"_index":2667,"t":{"670":{"position":[[161,34]]}}}],["retrievesampl",{"_index":2707,"t":{"690":{"position":[[657,18],[930,18],[1148,17]]}}}],["retrievesamplerepli",{"_index":2697,"t":{"690":{"position":[[241,20],[802,19]]},"710":{"position":[[72,19]]}}}],["retrievesamples(retrievesamplesrequest",{"_index":2696,"t":{"690":{"position":[[185,39]]}}}],["retrievesamplesrequest",{"_index":2708,"t":{"690":{"position":[[762,22]]},"708":{"position":[[56,22]]}}}],["retrievetri",{"_index":2705,"t":{"690":{"position":[[513,17]]}}}],["retrievetrials(retrievetrialsrequest",{"_index":2694,"t":{"690":{"position":[[110,37]]}}}],["retrievetrialsrepli",{"_index":2695,"t":{"690":{"position":[[156,21]]},"706":{"position":[[53,19]]}}}],["retrievetrialsreply.next_trial_handl",{"_index":2742,"t":{"704":{"position":[[546,37]]}}}],["retrievetrialsrequest",{"_index":2706,"t":{"690":{"position":[[606,21],[635,21]]},"704":{"position":[[55,21]]}}}],["retrieveversiondata",{"_index":2657,"t":{"658":{"position":[[1646,22]]}}}],["retrieveversiondata(retrieveversiondatarequest",{"_index":2642,"t":{"658":{"position":[[565,47]]}}}],["retrieveversiondatareplychunk",{"_index":2643,"t":{"658":{"position":[[629,30],[1865,29]]},"682":{"position":[[75,29]]}}}],["retrieveversiondatarequest",{"_index":2658,"t":{"658":{"position":[[1821,26]]},"680":{"position":[[59,26]]}}}],["retrieveversioninfo",{"_index":2655,"t":{"658":{"position":[[1463,23]]}}}],["retrieveversioninfos(retrieveversioninfosrequest",{"_index":2640,"t":{"658":{"position":[[472,49]]}}}],["retrieveversioninfosrepli",{"_index":2641,"t":{"658":{"position":[[530,27],[1620,25]]},"678":{"position":[[58,25]]}}}],["retrieveversioninfosreply.next_version_handl",{"_index":2681,"t":{"676":{"position":[[666,45]]}}}],["retrieveversioninfosrequest",{"_index":2656,"t":{"658":{"position":[[1585,27]]},"676":{"position":[[60,27]]}}}],["retrieveversioninfosrequest.versions_count",{"_index":2683,"t":{"678":{"position":[[187,42]]},"706":{"position":[[171,42]]}}}],["return",{"_index":914,"t":{"102":{"position":[[11,9],[71,9],[250,7]]},"128":{"position":[[410,6]]},"138":{"position":[[1750,6]]},"180":{"position":[[1337,6],[1360,6],[1384,6],[1604,7],[3681,7],[3855,7],[4391,6]]},"182":{"position":[[1625,6]]},"184":{"position":[[224,6]]},"261":{"position":[[80,8]]},"263":{"position":[[165,9]]},"269":{"position":[[124,7],[155,7]]},"290":{"position":[[175,8]]},"292":{"position":[[88,7]]},"296":{"position":[[77,8],[359,8],[849,8],[1025,9]]},"508":{"position":[[286,8]]},"572":{"position":[[61,7],[132,7],[200,7],[262,7],[325,7]]},"588":{"position":[[350,8]]},"594":{"position":[[647,7],[715,7]]},"596":{"position":[[681,7],[748,7]]},"612":{"position":[[62,7],[128,7]]},"624":{"position":[[77,7],[141,7]]},"632":{"position":[[54,7],[110,7]]},"636":{"position":[[59,7],[134,7],[198,7],[259,7]]},"658":{"position":[[205,7],[279,7],[351,7],[436,7],[522,7],[613,7],[691,7]]},"690":{"position":[[148,7],[225,7],[295,7],[361,7],[428,7],[487,7]]},"704":{"position":[[251,9]]},"708":{"position":[[347,9],[434,9],[523,9],[622,9],[723,9],[757,9]]},"742":{"position":[[156,7]]},"744":{"position":[[312,7]]},"746":{"position":[[516,7]]},"750":{"position":[[758,7]]},"752":{"position":[[382,7]]},"754":{"position":[[147,7],[277,7]]},"756":{"position":[[423,7]]},"758":{"position":[[141,7]]},"760":{"position":[[74,7]]},"764":{"position":[[78,7]]},"766":{"position":[[82,7]]},"768":{"position":[[67,7]]},"770":{"position":[[364,7]]},"773":{"position":[[373,7]]},"775":{"position":[[227,6],[438,7]]},"777":{"position":[[346,7]]},"779":{"position":[[744,7]]},"811":{"position":[[708,7]]},"833":{"position":[[17,7]]},"835":{"position":[[1091,7]]},"837":{"position":[[171,7]]},"839":{"position":[[161,7]]},"841":{"position":[[171,7]]},"843":{"position":[[905,7]]},"845":{"position":[[474,7]]},"847":{"position":[[638,7]]},"849":{"position":[[541,9],[751,7]]},"851":{"position":[[504,7]]},"855":{"position":[[17,7]]},"857":{"position":[[1228,7]]},"859":{"position":[[506,7]]},"861":{"position":[[149,7],[279,7]]},"863":{"position":[[492,8],[575,7]]},"865":{"position":[[139,7]]},"867":{"position":[[74,7]]},"871":{"position":[[17,7]]},"873":{"position":[[182,9],[304,7],[459,7]]},"875":{"position":[[436,9],[535,9],[850,7]]},"877":{"position":[[135,7]]},"879":{"position":[[912,7]]},"883":{"position":[[17,7]]},"885":{"position":[[646,7]]},"887":{"position":[[720,7]]},"889":{"position":[[329,7]]},"891":{"position":[[174,7]]},"893":{"position":[[89,7]]},"895":{"position":[[137,7]]},"897":{"position":[[228,7]]},"899":{"position":[[329,7]]},"901":{"position":[[135,7]]},"903":{"position":[[151,8],[272,6],[416,7]]},"905":{"position":[[1261,6],[1581,7]]},"909":{"position":[[78,7]]},"911":{"position":[[82,7]]},"913":{"position":[[67,7]]},"915":{"position":[[389,7]]},"917":{"position":[[1001,7]]},"921":{"position":[[792,7]]},"923":{"position":[[220,6],[511,7]]},"925":{"position":[[613,7]]},"927":{"position":[[318,7]]},"929":{"position":[[71,7]]},"931":{"position":[[739,7]]},"935":{"position":[[373,7]]},"937":{"position":[[228,6],[439,7]]},"939":{"position":[[358,7]]},"941":{"position":[[786,7]]},"945":{"position":[[57,7]]},"947":{"position":[[87,7]]},"951":{"position":[[52,7]]},"953":{"position":[[111,7]]},"977":{"position":[[184,9]]},"983":{"position":[[0,6],[80,7]]},"985":{"position":[[85,7]]},"989":{"position":[[357,6]]},"993":{"position":[[17,7]]},"995":{"position":[[0,6],[185,7],[277,8]]},"997":{"position":[[0,6],[70,7]]},"1001":{"position":[[360,6]]},"1005":{"position":[[17,7]]},"1011":{"position":[[0,7],[188,7],[280,8]]},"1013":{"position":[[0,7],[67,7]]},"1017":{"position":[[148,7]]},"1019":{"position":[[236,7]]},"1021":{"position":[[305,7]]},"1023":{"position":[[81,7]]},"1025":{"position":[[82,7]]},"1033":{"position":[[10,6],[246,6],[331,7]]},"1035":{"position":[[87,7],[192,9],[394,9]]},"1037":{"position":[[63,8]]},"1039":{"position":[[66,8]]},"1041":{"position":[[71,8],[291,8]]},"1047":{"position":[[17,7]]},"1051":{"position":[[17,7]]},"1055":{"position":[[17,7]]},"1057":{"position":[[162,7]]},"1059":{"position":[[110,7]]},"1061":{"position":[[104,7]]},"1063":{"position":[[100,7]]},"1089":{"position":[[646,7]]},"1091":{"position":[[646,7]]},"1093":{"position":[[646,7]]},"1095":{"position":[[493,7]]},"1097":{"position":[[493,7]]},"1102":{"position":[[0,7],[65,7]]},"1104":{"position":[[0,7],[64,7]]},"1106":{"position":[[0,7],[69,7]]},"1108":{"position":[[801,7]]},"1110":{"position":[[805,7]]},"1112":{"position":[[775,7]]},"1118":{"position":[[422,7]]},"1120":{"position":[[250,7]]},"1122":{"position":[[112,7]]},"1124":{"position":[[184,7]]},"1126":{"position":[[319,7]]},"1128":{"position":[[69,7]]},"1130":{"position":[[68,7]]},"1132":{"position":[[248,7]]},"1138":{"position":[[168,7]]},"1140":{"position":[[85,7]]},"1142":{"position":[[137,7]]},"1144":{"position":[[72,7],[223,9]]},"1146":{"position":[[151,9],[295,7],[381,6]]},"1148":{"position":[[295,7]]},"1154":{"position":[[64,7]]},"1157":{"position":[[378,6],[523,6],[973,6],[1360,6]]},"1159":{"position":[[337,6],[496,7],[825,6],[1072,9]]},"1161":{"position":[[353,7]]},"1163":{"position":[[784,7]]},"1165":{"position":[[486,7]]}}}],["revers",{"_index":2561,"t":{"596":{"position":[[501,8]]}}}],["revis",{"_index":1740,"t":{"239":{"position":[[1607,10]]}}}],["reward",{"_index":153,"t":{"12":{"position":[[182,9],[702,8]]},"18":{"position":[[1051,8]]},"26":{"position":[[371,6]]},"30":{"position":[[437,7],[518,6],[645,7],[750,8]]},"40":{"position":[[597,8]]},"42":{"position":[[868,8],[991,7]]},"44":{"position":[[197,8]]},"58":{"position":[[329,7],[1070,6],[1134,7],[1196,6],[2035,6],[2102,7],[2165,6]]},"71":{"position":[[0,7],[225,7],[292,6],[429,7],[566,7],[623,6],[677,6],[1013,6]]},"73":{"position":[[8,7],[168,6],[225,8],[338,6],[409,6],[499,7],[604,8],[847,6],[920,6],[1016,7],[1129,8]]},"88":{"position":[[259,7]]},"134":{"position":[[924,7]]},"138":{"position":[[3032,6],[3099,6]]},"180":{"position":[[1702,7],[3110,8]]},"182":{"position":[[415,8]]},"186":{"position":[[59,8],[68,7],[386,7],[815,7]]},"188":{"position":[[52,7],[137,9],[203,6],[263,6],[422,6],[1241,7]]},"190":{"position":[[1449,6],[1516,6]]},"194":{"position":[[599,7]]},"447":{"position":[[465,8],[491,8]]},"480":{"position":[[418,8],[515,9]]},"530":{"position":[[350,7]]},"558":{"position":[[27,6],[298,7],[462,7],[501,6],[544,7]]},"560":{"position":[[20,6],[182,6],[328,7],[364,7],[494,7],[550,6],[630,6],[676,7],[758,6],[799,7]]},"602":{"position":[[369,6],[376,6],[791,7],[799,7]]},"604":{"position":[[283,6],[290,6],[674,7],[684,6]]},"616":{"position":[[271,6],[278,6],[801,7],[811,6]]},"626":{"position":[[318,6],[325,7],[1481,8],[1498,7]]},"694":{"position":[[591,7]]},"696":{"position":[[342,6],[609,6],[1154,7],[1186,7],[1268,7],[1346,7]]},"698":{"position":[[13,6],[189,6],[324,8],[405,8],[414,7],[458,7],[497,6],[540,7],[585,7]]},"775":{"position":[[59,8]]},"785":{"position":[[484,8],[493,8],[504,6]]},"787":{"position":[[573,7]]},"795":{"position":[[42,7],[105,6],[183,6],[262,6],[357,6]]},"797":{"position":[[33,6],[77,7],[125,7]]},"801":{"position":[[1081,8]]},"917":{"position":[[17,6],[87,7],[130,7],[200,6],[249,7],[301,7],[686,6],[730,6],[844,7]]},"923":{"position":[[703,8]]},"937":{"position":[[59,8]]},"969":{"position":[[514,8],[551,6]]},"981":{"position":[[43,7],[104,6],[180,6],[259,6]]},"983":{"position":[[28,7],[41,6]]},"985":{"position":[[60,7],[167,6],[182,7],[224,8]]},"987":{"position":[[57,7],[93,6],[162,6],[222,6],[340,6]]},"1007":{"position":[[642,7]]},"1023":{"position":[[41,7],[142,7]]},"1043":{"position":[[147,7],[170,7],[215,7],[308,7]]},"1053":{"position":[[1027,7],[1058,6]]},"1057":{"position":[[52,7],[112,6],[245,7]]},"1059":{"position":[[52,7],[193,7]]},"1065":{"position":[[44,6],[97,7],[149,6],[203,7],[255,7],[431,6]]}}}],["reward.all_sourc",{"_index":708,"t":{"73":{"position":[[549,21]]}}}],["reward.sourceslist",{"_index":722,"t":{"73":{"position":[[1073,19]]}}}],["reward.tick_id",{"_index":703,"t":{"73":{"position":[[365,16],[436,14]]},"138":{"position":[[3115,18]]},"190":{"position":[[1532,18]]}}}],["reward.tickid",{"_index":719,"t":{"73":{"position":[[877,15],[952,14]]}}}],["reward.valu",{"_index":705,"t":{"73":{"position":[[453,14],[515,12],[970,14],[1038,13]]},"138":{"position":[[3134,16]]},"190":{"position":[[1551,16]]}}}],["reward_confid",{"_index":713,"t":{"73":{"position":[[648,17]]}}}],["reward_send",{"_index":715,"t":{"73":{"position":[[693,13]]}}}],["reward_user_data",{"_index":717,"t":{"73":{"position":[[730,16]]}}}],["reward_valu",{"_index":711,"t":{"73":{"position":[[613,12]]}}}],["rewardconfid",{"_index":725,"t":{"73":{"position":[[1184,16]]}}}],["rewardsend",{"_index":727,"t":{"73":{"position":[[1234,12]]}}}],["rewardsourc",{"_index":2510,"t":{"558":{"position":[[138,12]]},"560":{"position":[[141,12],[263,12]]}}}],["rewarduserdata",{"_index":729,"t":{"73":{"position":[[1280,14]]}}}],["rewardvalu",{"_index":723,"t":{"73":{"position":[[1144,11]]}}}],["rework",{"_index":1001,"t":{"118":{"position":[[26,6]]}}}],["rfc3339",{"_index":2038,"t":{"306":{"position":[[1881,7]]}}}],["right",{"_index":116,"t":{"10":{"position":[[301,6]]},"14":{"position":[[608,6]]},"84":{"position":[[545,5]]},"146":{"position":[[601,5]]},"214":{"position":[[748,5]]},"239":{"position":[[8556,6]]}}}],["risk",{"_index":1819,"t":{"239":{"position":[[7544,5]]}}}],["rl",{"_index":349,"t":{"28":{"position":[[383,2]]},"229":{"position":[[524,2]]}}}],["rock",{"_index":1071,"t":{"130":{"position":[[386,5]]},"136":{"position":[[483,5],[664,6]]},"138":{"position":[[2605,4]]},"156":{"position":[[732,5],[761,6],[801,6]]},"180":{"position":[[1344,7],[1435,5],[2763,5]]},"190":{"position":[[429,5],[452,5]]},"198":{"position":[[386,5]]},"204":{"position":[[934,5],[1179,5],[1202,5]]},"216":{"position":[[2052,5],[2085,5],[2108,5]]},"235":{"position":[[1998,5]]}}}],["role",{"_index":274,"t":{"20":{"position":[[11,5]]},"80":{"position":[[221,4]]},"124":{"position":[[49,4],[1659,4]]}}}],["root",{"_index":961,"t":{"110":{"position":[[244,4]]},"124":{"position":[[1510,4]]},"126":{"position":[[1142,4]]},"166":{"position":[[88,4]]},"172":{"position":[[413,4]]},"178":{"position":[[619,4]]},"200":{"position":[[864,4]]},"229":{"position":[[4,4]]},"386":{"position":[[43,4]]},"819":{"position":[[1452,4]]},"955":{"position":[[347,4],[415,4]]},"959":{"position":[[522,4]]}}}],["root_cert=./path/to/cert.pem",{"_index":2259,"t":{"386":{"position":[[112,29]]}}}],["root_certif",{"_index":2966,"t":{"955":{"position":[[219,18]]},"959":{"position":[[362,18]]}}}],["root_dir}/cogment.yaml",{"_index":1322,"t":{"170":{"position":[[1244,26]]}}}],["root_dir}/data.proto",{"_index":1321,"t":{"170":{"position":[[1219,24]]}}}],["root_dir}/web_cli",{"_index":1323,"t":{"170":{"position":[[1271,24],[1334,24],[1730,24]]}}}],["round",{"_index":1086,"t":{"132":{"position":[[824,5]]},"156":{"position":[[1403,5]]},"158":{"position":[[158,6],[461,5],[556,5],[601,5],[748,5],[926,5]]},"180":{"position":[[4841,8],[4957,8]]},"186":{"position":[[627,5],[699,6],[744,5]]},"190":{"position":[[1023,6],[1199,6],[1342,5],[1739,6],[1758,5]]},"202":{"position":[[478,6],[782,5]]},"204":{"position":[[1283,7],[1348,6],[1447,6],[1683,5],[1748,6]]},"206":{"position":[[196,6]]},"208":{"position":[[194,6]]},"210":{"position":[[283,6],[932,6],[1051,7]]},"212":{"position":[[61,7],[496,7]]},"214":{"position":[[86,6]]},"216":{"position":[[1799,7],[2216,7],[3856,6],[3998,6],[4325,6],[6164,7]]}}}],["round_index",{"_index":1233,"t":{"156":{"position":[[1208,11],[1409,13],[1511,11]]},"158":{"position":[[467,13],[562,13],[607,13],[845,11]]}}}],["roundindex",{"_index":1427,"t":{"180":{"position":[[3381,11],[3923,10],[4211,11]]}}}],["rounds\")print(f\"\\t",{"_index":1617,"t":{"210":{"position":[[354,18],[418,18]]},"216":{"position":[[4069,18],[4133,18]]}}}],["rounds_count",{"_index":1571,"t":{"204":{"position":[[1913,15]]},"216":{"position":[[2234,15]]}}}],["roundstate[\"rounds_count",{"_index":1596,"t":{"208":{"position":[[1073,26]]},"216":{"position":[[3090,26]]}}}],["royalti",{"_index":1764,"t":{"239":{"position":[[3155,7],[3535,7]]}}}],["rp",{"_index":1029,"t":{"122":{"position":[[112,3],[220,3]]},"124":{"position":[[74,4],[383,3]]},"126":{"position":[[136,3],[498,3]]},"128":{"position":[[1086,3]]},"132":{"position":[[301,4]]},"154":{"position":[[314,4]]},"158":{"position":[[93,4]]},"160":{"position":[[290,4]]},"166":{"position":[[93,3]]},"174":{"position":[[406,3]]},"180":{"position":[[1093,3]]},"182":{"position":[[1889,3]]},"194":{"position":[[808,4]]},"198":{"position":[[274,4],[593,3],[1608,3]]},"200":{"position":[[882,3]]},"204":{"position":[[1245,3]]},"210":{"position":[[942,4],[956,3]]},"212":{"position":[[23,3]]},"216":{"position":[[1727,3],[2005,4],[6133,3]]},"218":{"position":[[46,3]]},"224":{"position":[[41,4],[175,3],[497,3],[549,3],[680,4]]},"227":{"position":[[30,4],[669,4]]},"229":{"position":[[16,3]]},"235":{"position":[[1395,3],[1460,3]]}}}],["rpc",{"_index":2437,"t":{"522":{"position":[[143,6]]},"572":{"position":[[27,3],[90,3],[165,3],[228,3],[297,3]]},"594":{"position":[[607,3],[687,3]]},"596":{"position":[[640,3],[720,3]]},"612":{"position":[[24,3],[100,3]]},"624":{"position":[[24,3],[113,3]]},"632":{"position":[[23,3],[82,3]]},"636":{"position":[[22,3],[93,3],[170,3],[231,3]]},"658":{"position":[[153,3],[243,3],[309,3],[384,3],[468,3],[561,3],[663,3]]},"690":{"position":[[106,3],[181,3],[265,3],[322,3],[390,3],[459,3]]}}}],["rps.observ",{"_index":1066,"t":{"128":{"position":[[730,15]]}}}],["rps.playeract",{"_index":1067,"t":{"128":{"position":[[805,16]]}}}],["rps.somemessagenam",{"_index":1069,"t":{"128":{"position":[[951,20]]}}}],["rps/cd",{"_index":1690,"t":{"224":{"position":[[490,6]]}}}],["rps_environ",{"_index":1553,"t":{"198":{"position":[[1377,15]]},"200":{"position":[[390,15]]},"202":{"position":[[36,15]]},"204":{"position":[[1596,15]]},"214":{"position":[[216,15]]}}}],["rpscp",{"_index":1685,"t":{"224":{"position":[[414,5]]}}}],["rule",{"_index":214,"t":{"14":{"position":[[518,5]]},"18":{"position":[[343,5]]},"188":{"position":[[496,6]]},"196":{"position":[[157,5]]},"198":{"position":[[187,5],[437,5],[1177,5]]},"204":{"position":[[1102,5]]},"216":{"position":[[1996,5]]}}}],["run",{"_index":180,"t":{"12":{"position":[[793,3]]},"14":{"position":[[59,4]]},"18":{"position":[[520,3]]},"24":{"position":[[46,3],[157,7],[1144,3]]},"26":{"position":[[1060,3]]},"28":{"position":[[36,4]]},"32":{"position":[[0,7]]},"36":{"position":[[83,7]]},"40":{"position":[[66,3]]},"68":{"position":[[78,3]]},"73":{"position":[[200,7]]},"78":{"position":[[214,8]]},"84":{"position":[[471,8]]},"86":{"position":[[24,8]]},"118":{"position":[[388,7]]},"120":{"position":[[206,3]]},"124":{"position":[[547,3],[753,4],[866,4],[2398,3]]},"126":{"position":[[206,7],[924,7]]},"128":{"position":[[380,7]]},"138":{"position":[[179,3],[941,8],[2114,3]]},"142":{"position":[[463,7]]},"150":{"position":[[198,7],[269,8]]},"156":{"position":[[219,3],[2675,3]]},"158":{"position":[[1487,3]]},"164":{"position":[[50,7]]},"166":{"position":[[71,7],[210,7]]},"168":{"position":[[220,7]]},"170":{"position":[[683,3],[1437,3]]},"174":{"position":[[422,3]]},"182":{"position":[[1851,7]]},"188":{"position":[[1121,3]]},"194":{"position":[[462,3]]},"198":{"position":[[681,4]]},"200":{"position":[[646,7]]},"210":{"position":[[1079,3]]},"212":{"position":[[1530,3]]},"216":{"position":[[407,4],[1635,3],[6119,3]]},"218":{"position":[[80,3]]},"224":{"position":[[618,3]]},"227":{"position":[[652,3]]},"229":{"position":[[93,7],[294,7],[661,8],[1856,7],[2059,3],[2514,3]]},"231":{"position":[[55,3],[116,3]]},"233":{"position":[[233,4]]},"235":{"position":[[94,4],[146,3],[317,3],[374,3],[451,7],[848,3],[1556,8]]},"247":{"position":[[304,7]]},"290":{"position":[[230,5]]},"296":{"position":[[1447,8],[1740,3]]},"300":{"position":[[179,3]]},"304":{"position":[[99,3]]},"306":{"position":[[67,4],[120,4],[250,3],[372,4]]},"328":{"position":[[181,7]]},"364":{"position":[[124,7]]},"382":{"position":[[72,7],[213,5]]},"392":{"position":[[181,7]]},"399":{"position":[[386,7]]},"413":{"position":[[455,7]]},"435":{"position":[[181,7]]},"465":{"position":[[181,7]]},"500":{"position":[[1430,3]]},"510":{"position":[[540,3]]},"514":{"position":[[94,3],[666,3],[694,3],[710,3],[761,3],[793,3],[868,3]]},"536":{"position":[[833,8]]},"538":{"position":[[240,7]]},"566":{"position":[[102,7],[408,8],[430,8]]},"586":{"position":[[336,7]]},"606":{"position":[[711,3],[837,7]]},"610":{"position":[[249,3]]},"614":{"position":[[681,4]]},"616":{"position":[[626,3]]},"618":{"position":[[469,3]]},"620":{"position":[[140,3]]},"738":{"position":[[19,3]]},"740":{"position":[[157,3]]},"746":{"position":[[64,3],[244,3],[334,3],[495,3]]},"781":{"position":[[195,8],[204,8],[226,8]]},"783":{"position":[[207,7],[397,4]]},"801":{"position":[[473,3],[998,7],[1988,3],[2861,3]]},"817":{"position":[[30,3],[122,3]]},"829":{"position":[[19,3]]},"831":{"position":[[140,4]]},"835":{"position":[[20,3]]},"845":{"position":[[64,3],[244,3]]},"847":{"position":[[64,3],[237,3],[336,3]]},"905":{"position":[[142,8]]},"919":{"position":[[73,3],[291,7]]},"921":{"position":[[53,3]]},"933":{"position":[[79,3],[773,7]]},"949":{"position":[[83,3]]},"963":{"position":[[247,8],[269,8]]},"965":{"position":[[303,7],[490,4]]},"1074":{"position":[[116,3]]},"1100":{"position":[[143,3],[1130,7],[1634,7]]},"1108":{"position":[[88,4],[143,3]]},"1110":{"position":[[668,7]]},"1112":{"position":[[638,7]]},"1114":{"position":[[9,3]]},"1116":{"position":[[506,4]]},"1118":{"position":[[79,4],[294,7],[349,7],[401,7]]},"1120":{"position":[[20,7],[108,7],[136,7]]},"1124":{"position":[[75,7]]},"1126":{"position":[[80,7]]},"1128":{"position":[[111,8],[148,7]]},"1130":{"position":[[39,3],[109,3]]},"1132":{"position":[[90,3]]},"1144":{"position":[[117,8],[151,7]]},"1150":{"position":[[220,7]]},"1163":{"position":[[124,3],[179,7]]},"1165":{"position":[[160,7]]}}}],["run.import",{"_index":1403,"t":{"180":{"position":[[1080,10]]}}}],["run.sh",{"_index":1049,"t":{"124":{"position":[[1583,8]]},"126":{"position":[[987,7]]},"142":{"position":[[7,8],[579,8]]},"144":{"position":[[930,8]]},"152":{"position":[[712,8]]},"164":{"position":[[58,8]]},"170":{"position":[[547,6],[600,6],[1038,8]]},"174":{"position":[[500,8]]},"182":{"position":[[1901,8],[1982,8]]},"200":{"position":[[709,7]]},"212":{"position":[[1534,8]]},"229":{"position":[[170,7],[1717,7],[1729,6]]},"231":{"position":[[86,6],[146,8]]},"233":{"position":[[80,6]]},"235":{"position":[[576,8],[762,8],[1485,8],[1650,8],[1747,8]]}}}],["run_nam",{"_index":2109,"t":{"310":{"position":[[21,9],[862,15]]}}}],["run_simple_batch",{"_index":3088,"t":{"1116":{"position":[[43,17]]}}}],["run_simple_train",{"_index":3096,"t":{"1136":{"position":[[841,20]]}}}],["runner",{"_index":1119,"t":{"138":{"position":[[1540,7],[1648,6],[1802,6],[3183,6],[3292,6]]},"146":{"position":[[270,6],[2002,6],[2351,6]]},"212":{"position":[[1192,7],[1362,6]]},"216":{"position":[[22,6],[182,6],[283,6],[715,6],[5364,6]]},"235":{"position":[[484,6],[737,6],[815,6],[1717,6]]},"310":{"position":[[740,7]]},"1080":{"position":[[23,6]]}}}],["runner.pi",{"_index":2122,"t":{"310":{"position":[[829,12]]}}}],["runtim",{"_index":2443,"t":{"524":{"position":[[349,8]]},"801":{"position":[[2140,9],[3008,9]]}}}],["runtrial",{"_index":2562,"t":{"596":{"position":[[573,8]]},"602":{"position":[[48,8]]},"604":{"position":[[44,8]]},"606":{"position":[[260,8]]},"608":{"position":[[359,8]]},"612":{"position":[[154,11]]},"614":{"position":[[57,8]]},"616":{"position":[[53,8]]},"618":{"position":[[169,8]]}}}],["runtrial(stream",{"_index":2558,"t":{"594":{"position":[[611,15]]},"596":{"position":[[644,15]]},"612":{"position":[[28,15]]}}}],["runtrialdatalog",{"_index":2582,"t":{"624":{"position":[[167,18]]},"626":{"position":[[31,15],[2025,15]]},"628":{"position":[[22,15]]}}}],["runtrialdatalog(stream",{"_index":2579,"t":{"624":{"position":[[28,22]]}}}],["s",{"_index":1861,"t":{"245":{"position":[[223,6],[236,4]]},"413":{"position":[[738,6],[751,4]]}}}],["safe",{"_index":2398,"t":{"500":{"position":[[1177,7]]},"905":{"position":[[567,5]]}}}],["same",{"_index":303,"t":{"24":{"position":[[582,4],[614,4],[925,5],[967,5]]},"50":{"position":[[566,4]]},"54":{"position":[[772,4]]},"56":{"position":[[221,4]]},"58":{"position":[[104,4]]},"60":{"position":[[187,4]]},"71":{"position":[[598,4]]},"80":{"position":[[832,4],[900,4]]},"88":{"position":[[874,4],[1151,4]]},"108":{"position":[[70,4]]},"114":{"position":[[216,4]]},"118":{"position":[[275,5]]},"124":{"position":[[147,4],[1247,4],[1279,4]]},"142":{"position":[[402,4]]},"146":{"position":[[2326,4],[3288,4]]},"180":{"position":[[1189,4]]},"186":{"position":[[754,4]]},"190":{"position":[[1045,4]]},"204":{"position":[[150,4]]},"208":{"position":[[638,4],[812,4]]},"216":{"position":[[2829,4]]},"249":{"position":[[211,4]]},"255":{"position":[[459,4]]},"267":{"position":[[261,4]]},"292":{"position":[[767,6],[1026,4]]},"298":{"position":[[2191,4],[2988,4]]},"300":{"position":[[473,4]]},"334":{"position":[[211,4]]},"360":{"position":[[118,4]]},"362":{"position":[[144,4]]},"370":{"position":[[211,4]]},"401":{"position":[[85,4]]},"407":{"position":[[448,4]]},"419":{"position":[[380,4]]},"427":{"position":[[90,4]]},"441":{"position":[[211,4]]},"471":{"position":[[211,4]]},"490":{"position":[[128,4]]},"502":{"position":[[518,4]]},"512":{"position":[[168,4]]},"524":{"position":[[1093,4]]},"562":{"position":[[813,4],[929,4]]},"564":{"position":[[639,4],[755,4]]},"592":{"position":[[193,4]]},"594":{"position":[[451,4]]},"618":{"position":[[710,4],[803,4]]},"626":{"position":[[1363,4]]},"825":{"position":[[480,4]]},"905":{"position":[[260,4],[332,4]]},"917":{"position":[[146,4]]},"921":{"position":[[293,4]]},"927":{"position":[[265,4]]},"971":{"position":[[301,4]]},"1015":{"position":[[153,4]]},"1076":{"position":[[375,4]]},"1116":{"position":[[23,4]]},"1136":{"position":[[811,4]]},"1138":{"position":[[38,4],[83,4]]},"1159":{"position":[[1052,4],[1805,4],[1944,4],[2013,4]]}}}],["sampl",{"_index":927,"t":{"102":{"position":[[514,6]]},"411":{"position":[[473,7],[541,7]]},"415":{"position":[[1010,7],[1018,8],[1041,7]]},"419":{"position":[[33,7],[916,8]]},"421":{"position":[[55,7],[1147,8],[1281,8],[1419,7]]},"423":{"position":[[91,7],[423,8]]},"431":{"position":[[43,7],[119,8]]},"492":{"position":[[18,8],[300,6],[427,7]]},"624":{"position":[[285,7]]},"626":{"position":[[536,6],[579,6],[607,7],[645,6],[762,7],[863,7],[1012,8],[1138,7],[1276,7],[1472,8],[2049,7],[2064,6],[2110,6]]},"690":{"position":[[685,7],[899,7],[1027,7],[1095,6]]},"692":{"position":[[348,7]]},"694":{"position":[[13,6],[401,7],[432,7],[466,7],[489,6],[624,7]]},"696":{"position":[[13,6]]},"708":{"position":[[418,7],[507,7],[606,7]]},"710":{"position":[[155,6]]},"716":{"position":[[148,6]]},"724":{"position":[[21,7]]},"801":{"position":[[1129,6],[1267,6],[1509,7]]},"869":{"position":[[78,7]]},"879":{"position":[[40,7],[82,7],[241,7],[386,8],[521,8],[681,8],[978,7]]},"951":{"position":[[26,8]]},"953":{"position":[[37,7],[179,7]]},"1007":{"position":[[27,7],[37,6],[128,6],[223,6],[345,6],[466,7],[511,7],[531,7],[696,7],[811,6],[904,6],[945,8],[1075,6],[1106,8],[1148,6],[1256,7],[1280,8]]},"1013":{"position":[[42,7],[92,7]]},"1015":{"position":[[19,6]]},"1019":{"position":[[43,7],[297,7]]},"1021":{"position":[[55,7],[105,9],[376,7],[426,9]]},"1023":{"position":[[56,7],[157,7]]},"1025":{"position":[[57,7],[160,7]]},"1045":{"position":[[353,7]]},"1049":{"position":[[37,6],[155,6],[258,6],[292,6],[498,6],[741,7]]},"1053":{"position":[[51,7],[1094,7]]},"1057":{"position":[[89,7]]},"1059":{"position":[[85,7]]},"1061":{"position":[[79,7]]},"1063":{"position":[[75,7]]},"1100":{"position":[[1426,7]]},"1110":{"position":[[57,6],[228,7],[416,6],[496,8]]},"1112":{"position":[[201,7],[466,8]]},"1136":{"position":[[686,8]]},"1144":{"position":[[172,7]]},"1154":{"position":[[23,7],[144,7]]},"1163":{"position":[[97,6],[248,8],[403,7],[452,6],[561,6],[1058,7]]},"1165":{"position":[[244,8],[335,6],[382,6]]}}}],["sample.observ",{"_index":3049,"t":{"1078":{"position":[[243,20]]}}}],["sample.observation_seri",{"_index":3050,"t":{"1078":{"position":[[323,31]]}}}],["sample_count",{"_index":3031,"t":{"1045":{"position":[[319,13]]}}}],["sampleinfo",{"_index":2583,"t":{"626":{"position":[[66,10],[226,10]]}}}],["sampler",{"_index":3133,"t":{"1163":{"position":[[886,7]]}}}],["sampler_callback",{"_index":3080,"t":{"1110":{"position":[[255,17]]}}}],["samples_count",{"_index":2326,"t":{"421":{"position":[[1241,16],[1379,16]]},"692":{"position":[[144,13],[322,14]]}}}],["save",{"_index":1345,"t":{"174":{"position":[[212,4]]},"825":{"position":[[467,5]]},"885":{"position":[[22,4],[193,5]]},"887":{"position":[[141,5]]}}}],["saw",{"_index":1556,"t":{"200":{"position":[[114,3]]}}}],["say_hi",{"_index":2079,"t":{"308":{"position":[[753,7]]}}}],["scheme",{"_index":937,"t":{"106":{"position":[[200,7]]},"255":{"position":[[28,7]]},"298":{"position":[[470,7]]},"807":{"position":[[85,8],[177,6]]},"809":{"position":[[9,6],[152,6]]},"811":{"position":[[12,6]]}}}],["scheme://host/path?queri",{"_index":2833,"t":{"807":{"position":[[33,26]]}}}],["scissor",{"_index":1073,"t":{"130":{"position":[[402,9]]},"136":{"position":[[678,9]]},"138":{"position":[[2616,8]]},"180":{"position":[[1391,11],[1451,11],[2779,8]]},"190":{"position":[[442,9],[465,9]]},"198":{"position":[[402,8]]},"204":{"position":[[947,8],[1192,9],[1215,9]]},"216":{"position":[[2098,9],[2121,9]]},"235":{"position":[[2014,8]]}}}],["scissors\"]moves_prompt",{"_index":1226,"t":{"156":{"position":[[823,22]]}}}],["scissors]moves_str",{"_index":1225,"t":{"156":{"position":[[775,18]]}}}],["scissorsdefeat",{"_index":1655,"t":{"216":{"position":[[2065,15]]}}}],["scissorsimport",{"_index":1095,"t":{"136":{"position":[[496,14]]}}}],["scissorsmov",{"_index":1224,"t":{"156":{"position":[[745,13]]}}}],["scope",{"_index":451,"t":{"48":{"position":[[463,5]]},"306":{"position":[[4295,5]]},"522":{"position":[[427,5]]}}}],["score",{"_index":1573,"t":{"204":{"position":[[1940,8],[1962,8]]},"210":{"position":[[1023,6]]},"214":{"position":[[916,5],[1304,5]]},"216":{"position":[[2261,8],[2283,8],[5216,5]]}}}],["score={computerscor",{"_index":1500,"t":{"184":{"position":[[500,21]]}}}],["score={humanscor",{"_index":1495,"t":{"184":{"position":[[388,18]]}}}],["scoreif",{"_index":1633,"t":{"214":{"position":[[316,7]]},"216":{"position":[[4757,7]]}}}],["scratch",{"_index":2877,"t":{"827":{"position":[[303,8]]}}}],["screen",{"_index":211,"t":{"14":{"position":[[469,7]]}}}],["script",{"_index":1013,"t":{"120":{"position":[[219,6]]},"126":{"position":[[995,7]]},"142":{"position":[[16,6],[588,6]]},"170":{"position":[[554,6],[607,6],[1047,6]]},"200":{"position":[[717,7]]},"300":{"position":[[339,6],[485,6]]},"304":{"position":[[148,7]]},"306":{"position":[[0,8],[13,7],[88,7],[493,8],[2072,8],[2927,8],[3117,7],[3182,6],[3604,8],[4203,6],[4323,7],[4410,8],[4588,8],[5038,8],[5283,7]]},"308":{"position":[[744,8],[2082,8],[2533,6],[3128,8]]},"413":{"position":[[1145,8]]},"732":{"position":[[583,8]]},"736":{"position":[[10,6]]},"825":{"position":[[49,8]]},"827":{"position":[[63,7]]},"1080":{"position":[[84,7]]}}}],["script'",{"_index":2062,"t":{"306":{"position":[[4630,8],[5077,8]]}}}],["script/process",{"_index":2012,"t":{"306":{"position":[[174,14]]}}}],["sdk",{"_index":254,"t":{"18":{"position":[[578,5]]},"32":{"position":[[256,6],[372,4]]},"34":{"position":[[93,5],[112,3]]},"38":{"position":[[305,3]]},"40":{"position":[[124,5]]},"42":{"position":[[486,4]]},"46":{"position":[[125,3],[140,3]]},"48":{"position":[[105,5]]},"52":{"position":[[166,3],[218,4],[317,3],[550,4],[583,3],[636,3],[698,3]]},"82":{"position":[[217,4],[259,4]]},"90":{"position":[[71,4]]},"94":{"position":[[637,3],[785,3]]},"96":{"position":[[367,4]]},"102":{"position":[[736,3]]},"106":{"position":[[115,5]]},"108":{"position":[[344,4]]},"110":{"position":[[99,5],[628,4],[659,3],[855,3],[908,3]]},"116":{"position":[[1246,3]]},"118":{"position":[[43,3],[117,3]]},"144":{"position":[[118,3]]},"170":{"position":[[1409,3],[1989,4]]},"174":{"position":[[137,3]]},"180":{"position":[[703,3],[1050,3]]},"212":{"position":[[1603,3]]},"229":{"position":[[2275,4]]},"233":{"position":[[357,3]]},"492":{"position":[[57,4]]},"510":{"position":[[110,4],[290,3],[366,4]]},"727":{"position":[[43,3],[112,3]]},"732":{"position":[[683,3]]},"734":{"position":[[201,3],[234,3]]},"736":{"position":[[114,3],[307,4]]},"811":{"position":[[2542,4],[5946,4],[6706,4]]},"814":{"position":[[39,3],[275,4]]},"817":{"position":[[11,3]]},"819":{"position":[[11,3],[466,3]]},"825":{"position":[[141,3]]},"827":{"position":[[31,3]]},"835":{"position":[[861,3],[979,3]]},"1074":{"position":[[47,3]]},"1076":{"position":[[398,3],[430,3]]},"1080":{"position":[[30,3]]}}}],["sdk\";import",{"_index":1460,"t":{"182":{"position":[[211,11]]}}}],["sdk^2",{"_index":892,"t":{"94":{"position":[[812,5]]}}}],["sdknpm",{"_index":1344,"t":{"174":{"position":[[195,6]]}}}],["seamlessli",{"_index":2941,"t":{"905":{"position":[[96,11]]}}}],["search",{"_index":129,"t":{"10":{"position":[[605,6]]},"306":{"position":[[3362,6]]},"494":{"position":[[287,6]]},"636":{"position":[[783,8]]}}}],["searchabl",{"_index":1949,"t":{"292":{"position":[[51,10]]}}}],["second",{"_index":620,"t":{"62":{"position":[[808,8],[839,7]]},"138":{"position":[[1624,8]]},"146":{"position":[[2805,7]]},"188":{"position":[[764,6]]},"216":{"position":[[74,8]]},"235":{"position":[[704,6],[862,8],[909,6],[1679,6]]},"245":{"position":[[396,8]]},"284":{"position":[[22,7]]},"294":{"position":[[77,9]]},"413":{"position":[[911,8]]},"801":{"position":[[594,7],[822,8],[3073,8],[3413,8]]},"875":{"position":[[324,7]]},"905":{"position":[[1171,7]]},"1033":{"position":[[473,6]]},"1110":{"position":[[583,7],[772,7]]},"1112":{"position":[[553,7],[742,7]]},"1132":{"position":[[239,8]]},"1136":{"position":[[902,7]]},"1146":{"position":[[286,8]]},"1159":{"position":[[716,6]]}}}],["secondari",{"_index":1374,"t":{"178":{"position":[[540,10]]}}}],["secret",{"_index":1879,"t":{"251":{"position":[[277,6]]},"253":{"position":[[85,6],[104,6]]},"261":{"position":[[45,7],[57,6]]},"292":{"position":[[309,8],[339,8],[747,6]]},"298":{"position":[[2203,8],[2614,7],[2632,6]]},"463":{"position":[[4,6]]},"646":{"position":[[186,6],[712,7]]},"648":{"position":[[104,6],[152,7]]}}}],["secret=\"zgi6gl",{"_index":1900,"t":{"257":{"position":[[193,16]]}}}],["secret=rosebud",{"_index":2367,"t":{"463":{"position":[[177,15]]}}}],["section",{"_index":446,"t":{"48":{"position":[[276,8]]},"54":{"position":[[174,9],[639,7]]},"58":{"position":[[115,9]]},"96":{"position":[[751,7],[863,9]]},"98":{"position":[[214,7]]},"100":{"position":[[155,7]]},"102":{"position":[[713,8]]},"104":{"position":[[11,8],[377,8]]},"108":{"position":[[191,7]]},"128":{"position":[[454,7]]},"136":{"position":[[411,7],[647,8]]},"140":{"position":[[63,8]]},"190":{"position":[[8,8],[359,8],[645,8]]},"196":{"position":[[129,7]]},"204":{"position":[[849,7],[1139,8]]},"239":{"position":[[116,8],[3587,8]]},"486":{"position":[[121,8],[335,7]]},"498":{"position":[[100,8],[155,7],[250,7],[373,7]]},"500":{"position":[[193,7],[231,7],[321,9],[497,7],[589,8],[1031,8]]},"510":{"position":[[217,8],[385,8],[744,9]]},"512":{"position":[[11,7],[209,8]]},"514":{"position":[[5,7],[1019,7]]},"516":{"position":[[5,7]]},"518":{"position":[[5,7]]},"520":{"position":[[28,7],[72,7],[171,7]]},"548":{"position":[[508,8]]},"550":{"position":[[293,9]]},"552":{"position":[[400,7]]},"554":{"position":[[429,7]]},"562":{"position":[[608,7]]},"564":{"position":[[585,7]]},"746":{"position":[[422,7]]},"750":{"position":[[304,7]]},"777":{"position":[[142,7]]},"781":{"position":[[556,8]]},"787":{"position":[[935,8]]},"801":{"position":[[142,7],[1683,7],[2311,7],[2580,7],[4331,7]]},"803":{"position":[[241,7],[290,7],[591,7]]},"843":{"position":[[501,8],[803,8]]},"847":{"position":[[428,7]]},"851":{"position":[[218,8]]},"857":{"position":[[216,7]]},"919":{"position":[[524,7]]},"925":{"position":[[572,7]]},"933":{"position":[[642,7]]},"939":{"position":[[158,7]]},"963":{"position":[[588,8]]},"971":{"position":[[876,8]]},"973":{"position":[[460,7]]},"977":{"position":[[629,7]]},"989":{"position":[[464,7],[860,7]]},"1001":{"position":[[467,7],[966,7]]},"1003":{"position":[[276,7]]},"1053":{"position":[[267,7],[727,7]]},"1089":{"position":[[809,7]]},"1091":{"position":[[823,7]]},"1093":{"position":[[807,7]]},"1095":{"position":[[612,7]]},"1097":{"position":[[606,7]]}}}],["secur",{"_index":72,"t":{"8":{"position":[[14,8],[64,8],[188,8],[455,8],[556,8]]}}}],["see",{"_index":53,"t":{"6":{"position":[[135,3],[443,4],[461,3]]},"16":{"position":[[478,3]]},"34":{"position":[[99,3]]},"38":{"position":[[282,3]]},"54":{"position":[[616,3]]},"62":{"position":[[32,4]]},"88":{"position":[[1405,4],[1610,4],[1789,4]]},"102":{"position":[[695,3]]},"120":{"position":[[43,3]]},"126":{"position":[[32,3],[228,4]]},"128":{"position":[[1184,3]]},"130":{"position":[[315,3]]},"134":{"position":[[990,3]]},"138":{"position":[[53,3],[881,3],[2147,3],[2261,3]]},"156":{"position":[[498,4]]},"180":{"position":[[1767,3],[2061,3]]},"182":{"position":[[1822,3]]},"188":{"position":[[1203,3]]},"194":{"position":[[721,3]]},"198":{"position":[[1728,4]]},"200":{"position":[[37,3]]},"204":{"position":[[250,3],[417,3]]},"212":{"position":[[1103,3]]},"216":{"position":[[264,3],[1658,3],[6498,3]]},"227":{"position":[[43,3]]},"233":{"position":[[100,3]]},"235":{"position":[[677,3],[935,3],[1063,3]]},"255":{"position":[[1013,4],[1040,3]]},"294":{"position":[[144,4]]},"296":{"position":[[459,4]]},"298":{"position":[[858,4],[2592,4]]},"366":{"position":[[430,4]]},"522":{"position":[[450,4]]},"540":{"position":[[30,4]]},"542":{"position":[[38,4]]},"544":{"position":[[37,4]]},"546":{"position":[[31,4]]},"770":{"position":[[175,4]]},"799":{"position":[[160,4],[217,4],[322,4]]},"801":{"position":[[3219,4],[3594,4],[4000,4]]},"811":{"position":[[4640,3]]},"819":{"position":[[1482,3]]},"825":{"position":[[155,4]]},"831":{"position":[[166,4]]},"873":{"position":[[435,4]]},"875":{"position":[[670,4]]},"885":{"position":[[404,4]]},"905":{"position":[[414,3]]},"915":{"position":[[175,4]]},"965":{"position":[[175,4]]},"975":{"position":[[434,3]]},"989":{"position":[[45,4],[605,4],[1012,4]]},"991":{"position":[[103,4]]},"1001":{"position":[[55,4],[658,4],[1160,4]]},"1003":{"position":[[103,4]]},"1007":{"position":[[352,4]]},"1053":{"position":[[537,4],[975,4]]},"1074":{"position":[[219,4]]},"1076":{"position":[[410,4]]},"1078":{"position":[[453,4]]},"1116":{"position":[[773,4]]},"1126":{"position":[[262,4]]},"1159":{"position":[[1334,4]]}}}],["seen",{"_index":894,"t":{"96":{"position":[[26,4]]},"146":{"position":[[996,4]]},"306":{"position":[[466,4]]},"482":{"position":[[211,4]]},"887":{"position":[[354,4]]}}}],["select",{"_index":285,"t":{"22":{"position":[[405,8]]},"122":{"position":[[279,6]]},"124":{"position":[[2262,10]]},"134":{"position":[[528,6],[856,6],[954,9]]},"136":{"position":[[103,6],[1316,6]]},"138":{"position":[[2201,7],[2573,6]]},"146":{"position":[[2225,9]]},"184":{"position":[[584,10]]},"190":{"position":[[220,9],[1781,6]]},"216":{"position":[[6276,6],[6479,6]]},"235":{"position":[[1991,6]]},"658":{"position":[[1099,8],[1523,8]]}}}],["selected_sample_field",{"_index":2746,"t":{"708":{"position":[[255,22],[632,23]]}}}],["self",{"_index":2156,"t":{"336":{"position":[[600,4]]},"374":{"position":[[595,4]]},"443":{"position":[[604,4]]},"473":{"position":[[590,4]]}}}],["self.do_act",{"_index":2958,"t":{"937":{"position":[[646,14]]}}}],["self.end",{"_index":2954,"t":{"923":{"position":[[817,8]]}}}],["self.env_nam",{"_index":2959,"t":{"941":{"position":[[423,15]]}}}],["self.produce_observ",{"_index":2952,"t":{"921":{"position":[[319,26]]},"923":{"position":[[753,24]]},"927":{"position":[[291,26]]}}}],["sell",{"_index":1770,"t":{"239":{"position":[[3645,5],[3651,5]]}}}],["semant",{"_index":331,"t":{"26":{"position":[[914,8]]}}}],["send",{"_index":270,"t":{"18":{"position":[[1041,4]]},"30":{"position":[[276,5],[351,5]]},"40":{"position":[[587,4]]},"42":{"position":[[940,4]]},"54":{"position":[[302,7],[1034,4]]},"56":{"position":[[56,4],[209,7],[381,4],[452,4],[525,4],[730,4]]},"71":{"position":[[1003,7]]},"76":{"position":[[263,4]]},"84":{"position":[[418,5]]},"86":{"position":[[98,5],[264,5]]},"88":{"position":[[91,5],[412,5],[1950,5]]},"108":{"position":[[730,4]]},"114":{"position":[[157,4]]},"116":{"position":[[937,4]]},"156":{"position":[[683,4]]},"180":{"position":[[550,4],[2735,4]]},"182":{"position":[[66,5]]},"186":{"position":[[378,7],[810,4]]},"206":{"position":[[744,4]]},"214":{"position":[[1335,7]]},"216":{"position":[[5247,7]]},"447":{"position":[[474,4]]},"488":{"position":[[532,4]]},"508":{"position":[[650,7]]},"526":{"position":[[409,4],[562,4]]},"530":{"position":[[501,7]]},"556":{"position":[[283,7],[332,7]]},"558":{"position":[[330,7]]},"560":{"position":[[354,7],[666,7]]},"568":{"position":[[901,5],[957,5],[989,7],[1022,5],[1155,4]]},"616":{"position":[[705,5]]},"773":{"position":[[245,4]]},"777":{"position":[[10,4]]},"779":{"position":[[10,4]]},"801":{"position":[[915,7]]},"887":{"position":[[10,4]]},"917":{"position":[[10,4]]},"921":{"position":[[668,4]]},"925":{"position":[[10,4],[278,4]]},"927":{"position":[[233,4]]},"931":{"position":[[10,4]]},"933":{"position":[[831,4]]},"935":{"position":[[244,4]]},"939":{"position":[[10,4]]},"941":{"position":[[10,4]]}}}],["sendact",{"_index":1413,"t":{"180":{"position":[[1934,11],[2615,11]]},"182":{"position":[[517,12],[1652,14]]}}}],["sendaction(act",{"_index":1421,"t":{"180":{"position":[[2862,19]]}}}],["sender",{"_index":680,"t":{"71":{"position":[[299,8],[413,8]]},"78":{"position":[[756,6]]},"188":{"position":[[429,6]]},"556":{"position":[[359,6]]},"558":{"position":[[277,6]]},"698":{"position":[[151,6],[255,7]]},"700":{"position":[[153,6],[206,7]]},"797":{"position":[[40,7]]},"979":{"position":[[219,6],[422,7]]},"987":{"position":[[109,7],[207,6],[469,7]]},"1065":{"position":[[163,7],[189,6],[356,7],[560,7]]},"1067":{"position":[[57,7],[83,6],[252,7],[397,7]]}}}],["sender_nam",{"_index":751,"t":{"78":{"position":[[443,11]]},"556":{"position":[[134,11],[254,12]]},"558":{"position":[[160,11],[252,12]]},"979":{"position":[[188,12]]},"987":{"position":[[176,12]]}}}],["sendernam",{"_index":2799,"t":{"797":{"position":[[0,11]]}}}],["sending_don",{"_index":2407,"t":{"508":{"position":[[599,14]]},"921":{"position":[[740,12]]},"935":{"position":[[333,12]]}}}],["sendingdon",{"_index":2777,"t":{"773":{"position":[[334,11]]}}}],["sens",{"_index":2385,"t":{"488":{"position":[[687,5]]},"696":{"position":[[81,5],[218,6]]},"698":{"position":[[61,5]]},"700":{"position":[[62,5]]}}}],["sent",{"_index":355,"t":{"30":{"position":[[452,4],[673,4]]},"58":{"position":[[337,4],[432,4]]},"62":{"position":[[570,4]]},"71":{"position":[[12,4],[574,4]]},"73":{"position":[[25,4]]},"76":{"position":[[28,4],[908,4]]},"78":{"position":[[26,4],[428,4],[735,4]]},"88":{"position":[[212,4],[280,4],[308,4],[787,4],[1046,4]]},"206":{"position":[[775,4]]},"239":{"position":[[2386,4]]},"326":{"position":[[48,4]]},"366":{"position":[[309,4]]},"480":{"position":[[413,4]]},"558":{"position":[[289,4]]},"560":{"position":[[27,4]]},"568":{"position":[[624,4]]},"602":{"position":[[178,4]]},"604":{"position":[[8,4]]},"614":{"position":[[187,4]]},"616":{"position":[[8,4]]},"626":{"position":[[1506,4],[1550,4],[1971,4]]},"696":{"position":[[1354,4],[1531,4]]},"698":{"position":[[20,4],[319,4],[400,4]]},"700":{"position":[[21,4],[270,4],[352,4]]},"770":{"position":[[91,5]]},"773":{"position":[[199,5]]},"775":{"position":[[407,4]]},"777":{"position":[[232,4]]},"779":{"position":[[135,5]]},"787":{"position":[[485,4]]},"799":{"position":[[512,4]]},"801":{"position":[[35,4],[1282,4],[1517,4],[1593,4],[2223,4],[3493,5]]},"811":{"position":[[3021,4]]},"857":{"position":[[320,4]]},"885":{"position":[[292,4]]},"887":{"position":[[452,4]]},"915":{"position":[[91,5]]},"917":{"position":[[830,4]]},"921":{"position":[[390,4],[525,6],[622,5]]},"923":{"position":[[408,4]]},"931":{"position":[[139,5]]},"935":{"position":[[198,5]]},"937":{"position":[[408,4]]},"939":{"position":[[244,4]]},"941":{"position":[[139,5]]},"971":{"position":[[588,4]]},"1043":{"position":[[316,4],[481,4]]},"1059":{"position":[[60,4],[201,5]]},"1063":{"position":[[50,4],[176,5]]},"1126":{"position":[[194,4],[238,4]]}}}],["sent_messag",{"_index":2728,"t":{"696":{"position":[[838,13],[1495,14]]},"1043":{"position":[[449,14]]}}}],["sent_reward",{"_index":2725,"t":{"696":{"position":[[719,12],[1320,13]]},"1043":{"position":[[275,13]]}}}],["sent_version_chunk_size=100000",{"_index":2146,"t":{"326":{"position":[[143,31]]}}}],["separ",{"_index":334,"t":{"26":{"position":[[1067,8],[1093,8]]},"98":{"position":[[370,10]]},"142":{"position":[[309,8]]},"222":{"position":[[264,8]]},"239":{"position":[[1810,9],[6662,8]]},"302":{"position":[[543,8]]},"378":{"position":[[392,9],[638,9]]},"592":{"position":[[76,8]]},"811":{"position":[[4843,9],[4913,9]]}}}],["sequenc",{"_index":795,"t":{"84":{"position":[[211,9]]},"245":{"position":[[93,8]]},"306":{"position":[[291,8]]},"413":{"position":[[608,8]]},"568":{"position":[[862,8]]}}}],["sequenti",{"_index":339,"t":{"28":{"position":[[45,10]]},"210":{"position":[[856,10]]}}}],["serial",{"_index":736,"t":{"76":{"position":[[460,9]]},"229":{"position":[[878,9]]},"415":{"position":[[1282,10]]},"419":{"position":[[991,10],[1071,10]]},"459":{"position":[[113,13]]},"492":{"position":[[233,10]]},"524":{"position":[[65,10]]},"548":{"position":[[26,10],[369,10]]},"552":{"position":[[197,10]]},"554":{"position":[[235,10]]},"562":{"position":[[398,10]]},"564":{"position":[[389,10]]},"694":{"position":[[534,10]]},"989":{"position":[[528,10],[935,10]]},"995":{"position":[[19,6],[43,9],[215,13],[289,10]]},"997":{"position":[[84,10]]},"999":{"position":[[8,10],[136,10],[197,6]]},"1001":{"position":[[581,10],[1083,10]]},"1011":{"position":[[20,6],[44,9],[218,13],[292,10]]},"1013":{"position":[[81,10]]},"1015":{"position":[[8,10],[125,10]]},"1053":{"position":[[459,10],[897,10]]},"1078":{"position":[[276,10]]}}}],["serialized_data",{"_index":3063,"t":{"1089":{"position":[[350,16],[890,15]]},"1091":{"position":[[350,16],[909,15]]},"1093":{"position":[[350,16],[887,15]]},"1095":{"position":[[350,16],[690,15]]},"1097":{"position":[[350,16],[678,15]]}}}],["serializedmessag",{"_index":2484,"t":{"540":{"position":[[76,17]]},"544":{"position":[[110,17]]},"546":{"position":[[166,17],[281,17]]},"548":{"position":[[318,17]]},"574":{"position":[[93,17]]},"606":{"position":[[487,17]]},"618":{"position":[[315,17]]}}}],["serv",{"_index":432,"t":{"46":{"position":[[341,5],[410,5],[615,5],[1119,5]]},"54":{"position":[[2126,6]]},"60":{"position":[[752,6]]},"90":{"position":[[1730,7]]},"170":{"position":[[59,6]]},"276":{"position":[[22,5]]},"278":{"position":[[48,6]]},"306":{"position":[[193,6]]},"318":{"position":[[22,5]]},"320":{"position":[[48,6]]},"360":{"position":[[22,5]]},"362":{"position":[[22,5]]},"364":{"position":[[21,5]]},"380":{"position":[[22,5]]},"409":{"position":[[114,5]]},"429":{"position":[[48,6]]},"453":{"position":[[22,5]]},"457":{"position":[[22,5]]},"532":{"position":[[17,5]]},"594":{"position":[[395,6]]},"608":{"position":[[160,6],[258,6]]},"610":{"position":[[367,6]]},"620":{"position":[[85,6]]},"638":{"position":[[33,6]]},"803":{"position":[[19,6]]},"835":{"position":[[380,6]]},"851":{"position":[[91,5]]}}}],["serve_all_regist",{"_index":2881,"t":{"829":{"position":[[105,20],[218,20]]}}}],["served_endpoint",{"_index":2894,"t":{"835":{"position":[[303,16],[802,16]]}}}],["served_endpoint.port",{"_index":2896,"t":{"835":{"position":[[402,20]]}}}],["served_port",{"_index":2879,"t":{"829":{"position":[[68,12]]},"835":{"position":[[523,11]]}}}],["servedendpoint",{"_index":2895,"t":{"835":{"position":[[320,14]]}}}],["server",{"_index":14,"t":{"2":{"position":[[218,7]]},"4":{"position":[[119,6]]},"10":{"position":[[116,6],[812,7]]},"170":{"position":[[1878,6]]},"326":{"position":[[60,7]]},"380":{"position":[[135,6],[352,6]]},"594":{"position":[[102,6]]},"596":{"position":[[96,6]]},"610":{"position":[[106,6]]},"622":{"position":[[102,6]]},"630":{"position":[[103,6]]},"634":{"position":[[102,6]]},"672":{"position":[[488,6]]},"809":{"position":[[273,6]]},"811":{"position":[[394,7]]},"835":{"position":[[42,6],[665,7]]},"959":{"position":[[549,6]]}}}],["servic",{"_index":182,"t":{"12":{"position":[[812,8],[936,9]]},"24":{"position":[[35,7],[103,9],[170,8],[184,7],[749,7],[1106,9],[1125,7],[1200,8]]},"26":{"position":[[609,9],[1076,8],[1200,8]]},"32":{"position":[[76,8]]},"34":{"position":[[76,8]]},"36":{"position":[[123,8]]},"42":{"position":[[58,7],[94,7]]},"44":{"position":[[111,8],[527,9]]},"46":{"position":[[176,8],[381,9],[428,7],[570,8],[806,8],[950,8]]},"54":{"position":[[817,7]]},"60":{"position":[[150,7],[728,7]]},"80":{"position":[[732,7]]},"110":{"position":[[267,8],[602,8],[825,8]]},"124":{"position":[[686,7],[760,7],[828,7],[881,7],[1550,7],[2415,8]]},"126":{"position":[[82,8],[782,7],[900,8],[932,8],[1101,7]]},"136":{"position":[[1459,8]]},"138":{"position":[[602,7],[792,8],[928,8],[2155,7],[2274,8],[2473,8]]},"140":{"position":[[325,8],[394,9],[438,8]]},"142":{"position":[[70,8],[116,8],[173,7],[196,8],[344,9],[431,9]]},"144":{"position":[[54,8],[536,8],[1039,8]]},"146":{"position":[[29,8],[125,9],[607,8],[2253,9],[3972,9],[4040,8]]},"148":{"position":[[89,8]]},"150":{"position":[[547,8]]},"152":{"position":[[796,8],[869,8]]},"156":{"position":[[119,7]]},"170":{"position":[[35,7],[145,8],[670,8],[778,8],[2105,8]]},"198":{"position":[[840,7],[997,7]]},"200":{"position":[[143,8],[555,7],[622,8],[654,8],[823,7]]},"210":{"position":[[649,7]]},"216":{"position":[[398,8]]},"227":{"position":[[122,8],[210,8],[225,8]]},"229":{"position":[[765,8],[928,9]]},"235":{"position":[[154,9],[170,8],[284,8],[353,8],[442,8],[549,8],[624,8],[974,8],[1292,8],[1635,8],[1837,8]]},"239":{"position":[[6845,7]]},"241":{"position":[[104,8],[173,9]]},"247":{"position":[[34,8],[320,8]]},"249":{"position":[[25,8],[114,8],[180,8]]},"251":{"position":[[41,7]]},"253":{"position":[[33,7],[68,8],[149,8]]},"255":{"position":[[44,7],[129,7],[174,7],[293,8],[328,7],[578,7],[669,8],[735,8],[859,8]]},"257":{"position":[[53,7]]},"261":{"position":[[26,7],[98,7]]},"263":{"position":[[39,8],[79,8],[300,8]]},"265":{"position":[[29,8],[68,7]]},"267":{"position":[[26,7],[122,7],[427,7],[580,7]]},"271":{"position":[[57,8],[76,7],[98,9],[139,7],[282,8],[357,7]]},"273":{"position":[[31,8],[50,8]]},"276":{"position":[[47,8]]},"284":{"position":[[88,7],[331,8],[548,8],[629,7],[647,14]]},"288":{"position":[[45,8]]},"290":{"position":[[48,7],[155,8]]},"292":{"position":[[42,8],[133,9],[160,7],[225,10],[255,8],[282,7],[407,8],[425,7],[567,9],[591,8],[622,8],[709,7],[780,7],[892,8],[955,8],[1003,8],[1119,7]]},"294":{"position":[[245,9],[332,9],[408,7],[449,7],[568,7],[660,8]]},"296":{"position":[[68,8],[191,8],[215,8],[350,8],[391,7],[577,8],[689,7],[733,8],[746,8],[813,8],[902,8],[1436,7],[1665,7],[1752,7]]},"298":{"position":[[52,8],[61,7],[173,7],[219,7],[337,7],[975,7],[1000,9],[1081,7],[1145,8],[1214,7],[1239,7],[1289,9],[1355,7],[1419,7],[1458,7],[1509,7],[1554,7],[1597,7],[1644,7],[1701,7],[1729,7],[1765,7],[1796,7],[1937,7],[2058,7],[2123,7],[2702,8],[2747,8],[2909,8],[2971,8],[3055,8]]},"306":{"position":[[692,10],[1073,8],[1203,7],[2199,11],[3794,10]]},"310":{"position":[[456,11],[712,11]]},"314":{"position":[[55,8]]},"332":{"position":[[34,8],[129,7],[160,9]]},"334":{"position":[[25,8],[114,8],[180,8]]},"336":{"position":[[81,8]]},"338":{"position":[[89,8]]},"354":{"position":[[54,8]]},"356":{"position":[[53,8]]},"360":{"position":[[53,8]]},"362":{"position":[[50,8],[102,7]]},"364":{"position":[[49,7]]},"368":{"position":[[34,8],[127,9],[153,8],[376,9]]},"370":{"position":[[25,8],[114,8],[180,8]]},"372":{"position":[[50,8],[81,8],[157,9],[213,8],[239,7]]},"374":{"position":[[79,9]]},"376":{"position":[[87,9]]},"396":{"position":[[61,9],[113,8]]},"399":{"position":[[34,8],[114,8],[402,8]]},"401":{"position":[[25,8],[108,8]]},"403":{"position":[[25,7],[135,8],[231,7]]},"405":{"position":[[24,7],[191,7],[439,10]]},"407":{"position":[[12,7],[263,8]]},"409":{"position":[[411,8]]},"411":{"position":[[116,7]]},"413":{"position":[[471,8]]},"423":{"position":[[234,7],[536,7],[580,8]]},"427":{"position":[[33,9],[74,8]]},"439":{"position":[[34,8],[130,8],[162,9],[352,8]]},"441":{"position":[[25,8],[114,8],[180,8]]},"443":{"position":[[82,9]]},"445":{"position":[[90,9]]},"449":{"position":[[50,8]]},"455":{"position":[[37,8]]},"457":{"position":[[36,7]]},"469":{"position":[[34,8],[130,7],[161,8]]},"471":{"position":[[25,8],[114,8],[180,8]]},"473":{"position":[[76,8]]},"475":{"position":[[84,8]]},"502":{"position":[[534,7]]},"522":{"position":[[66,9],[82,8],[306,8]]},"524":{"position":[[611,7],[729,7],[744,7],[1272,7],[1320,8]]},"532":{"position":[[85,8]]},"534":{"position":[[61,8],[308,8],[367,8],[420,7]]},"536":{"position":[[58,8],[195,8],[485,8],[656,8],[822,7]]},"538":{"position":[[60,8],[188,7]]},"542":{"position":[[242,8]]},"544":{"position":[[270,8]]},"546":{"position":[[442,8],[583,8]]},"570":{"position":[[212,8]]},"572":{"position":[[0,7]]},"592":{"position":[[31,7],[85,7]]},"594":{"position":[[61,7],[151,7],[224,7],[373,7],[416,7],[558,7],[582,7]]},"596":{"position":[[559,7],[593,7],[616,7]]},"598":{"position":[[355,7]]},"606":{"position":[[134,7]]},"608":{"position":[[118,7]]},"612":{"position":[[0,7]]},"624":{"position":[[0,7]]},"632":{"position":[[0,7]]},"636":{"position":[[0,7],[322,8],[405,8],[465,8],[523,8],[598,8],[690,9],[744,9],[821,9],[896,9],[948,9]]},"638":{"position":[[8,7],[498,7],[525,7],[592,7],[619,7],[665,7],[692,7],[745,7],[772,7],[821,7],[848,7],[895,7],[922,7],[968,7],[995,7],[1053,7],[1080,7],[1132,7],[1159,7],[1207,8],[1272,7]]},"640":{"position":[[45,8],[156,8],[208,8]]},"642":{"position":[[55,8],[261,8],[374,7],[460,7],[745,7],[769,8]]},"644":{"position":[[101,8],[210,7],[249,7],[290,8]]},"646":{"position":[[653,7],[777,8]]},"648":{"position":[[143,8],[195,7]]},"650":{"position":[[525,7]]},"652":{"position":[[61,7],[87,8],[226,8],[259,8]]},"654":{"position":[[239,8],[274,8],[311,8]]},"658":{"position":[[24,7],[127,7]]},"690":{"position":[[24,7],[79,7]]},"801":{"position":[[1391,8],[1537,8],[1847,8]]},"805":{"position":[[235,8],[466,7]]},"807":{"position":[[238,7]]},"811":{"position":[[754,8],[1177,7],[2527,7],[2581,8],[2697,7],[3221,7],[3262,7],[3294,7],[3318,8],[3445,7],[3618,8],[3651,7],[3695,7],[3734,7],[3776,7],[3805,7],[3872,7],[3945,7],[3993,7],[4032,7],[4336,8],[4517,8],[4722,8],[5493,8],[5594,7],[5881,8],[6246,7],[6414,7],[6469,8],[6641,8]]},"829":{"position":[[161,9],[191,8]]},"831":{"position":[[829,8],[1141,9]]},"835":{"position":[[256,8],[827,8]]},"849":{"position":[[173,8]]},"851":{"position":[[158,7]]},"887":{"position":[[94,9]]},"959":{"position":[[103,7]]},"961":{"position":[[50,7]]},"1100":{"position":[[428,8],[740,9]]}}}],["service'",{"_index":1963,"t":{"296":{"position":[[521,9]]}}}],["service_id",{"_index":1901,"t":{"261":{"position":[[0,11]]},"267":{"position":[[0,11],[346,10],[635,10]]},"646":{"position":[[163,10],[625,11]]},"648":{"position":[[81,10],[117,11]]},"652":{"position":[[153,10],[200,11]]},"654":{"position":[[104,10],[248,11]]}}}],["service_id=7722934920723",{"_index":1899,"t":{"257":{"position":[[166,24]]}}}],["serviceactorsp",{"_index":2491,"t":{"546":{"position":[[422,14]]},"592":{"position":[[107,14]]},"594":{"position":[[566,15],[590,14]]},"638":{"position":[[700,15]]}}}],["servicedetail",{"_index":2621,"t":{"640":{"position":[[62,14]]},"644":{"position":[[140,14]]},"652":{"position":[[169,14]]},"654":{"position":[[120,14]]}}}],["serviceendpoint",{"_index":2622,"t":{"642":{"position":[[72,15]]},"644":{"position":[[110,15]]},"654":{"position":[[67,15]]}}}],["services.yaml",{"_index":1693,"t":{"229":{"position":[[199,13],[2280,14],[2299,13],[2461,13]]},"235":{"position":[[646,13]]}}}],["services_start",{"_index":1143,"t":{"142":{"position":[[614,14],[657,16]]},"182":{"position":[[1924,14]]},"235":{"position":[[585,14],[1659,14]]}}}],["servicetyp",{"_index":2606,"t":{"638":{"position":[[77,11]]},"640":{"position":[[79,11]]}}}],["session",{"_index":505,"t":{"54":{"position":[[66,7]]},"56":{"position":[[16,7]]},"58":{"position":[[74,7]]},"71":{"position":[[70,7]]},"76":{"position":[[94,7]]},"80":{"position":[[905,7]]},"134":{"position":[[1285,8]]},"202":{"position":[[298,7],[899,8]]},"206":{"position":[[694,7]]},"216":{"position":[[2363,7],[3359,7]]},"762":{"position":[[88,8]]},"764":{"position":[[52,8]]},"770":{"position":[[73,8],[130,7],[167,7]]},"773":{"position":[[87,8],[218,7]]},"907":{"position":[[88,8]]},"909":{"position":[[52,8]]},"915":{"position":[[73,8],[130,7],[167,7]]},"919":{"position":[[15,8],[35,7]]},"921":{"position":[[127,8],[641,7]]},"933":{"position":[[15,8]]},"935":{"position":[[87,8],[217,7]]},"949":{"position":[[17,7]]},"1165":{"position":[[410,8],[454,7]]}}}],["session'",{"_index":802,"t":{"88":{"position":[[134,9]]}}}],["session.add_reward",{"_index":699,"t":{"71":{"position":[[1144,18]]}}}],["session.add_reward(valu",{"_index":673,"t":{"71":{"position":[[148,25]]}}}],["session.all_sampl",{"_index":3136,"t":{"1165":{"position":[[345,22]]}}}],["session.get_active_actor",{"_index":2384,"t":{"488":{"position":[[4,27]]},"977":{"position":[[197,27]]}}}],["session.send_messag",{"_index":731,"t":{"76":{"position":[[130,21],[352,20]]}}}],["session/tri",{"_index":2955,"t":{"933":{"position":[[35,13]]}}}],["set",{"_index":213,"t":{"14":{"position":[[511,3]]},"16":{"position":[[48,3],[430,3]]},"18":{"position":[[136,7]]},"22":{"position":[[115,3]]},"30":{"position":[[860,3]]},"62":{"position":[[760,3],[797,3]]},"66":{"position":[[467,3]]},"84":{"position":[[448,4]]},"86":{"position":[[319,3],[378,3]]},"88":{"position":[[119,4],[175,3],[653,4],[715,3],[755,3],[1026,3]]},"124":{"position":[[935,3]]},"128":{"position":[[1079,3]]},"130":{"position":[[31,3]]},"132":{"position":[[36,3]]},"136":{"position":[[636,10]]},"138":{"position":[[483,9],[3718,3]]},"144":{"position":[[629,3]]},"150":{"position":[[103,3]]},"182":{"position":[[563,5]]},"190":{"position":[[348,10]]},"194":{"position":[[233,3]]},"198":{"position":[[131,3],[321,7],[1056,3]]},"200":{"position":[[53,4]]},"202":{"position":[[246,3],[358,3]]},"204":{"position":[[1128,10],[1721,3]]},"206":{"position":[[222,3],[586,4]]},"212":{"position":[[177,7],[402,3],[1000,3],[1152,7],[1231,3]]},"214":{"position":[[586,4],[670,3],[802,3]]},"216":{"position":[[760,3],[1398,4],[1926,3],[4252,3],[4311,3],[4371,3],[4710,3],[4939,3],[5420,3]]},"218":{"position":[[55,3]]},"224":{"position":[[50,3]]},"229":{"position":[[56,3],[350,3],[562,3],[1115,7],[2491,3]]},"233":{"position":[[492,3]]},"255":{"position":[[1009,3]]},"280":{"position":[[0,3]]},"286":{"position":[[147,3]]},"298":{"position":[[2588,3]]},"300":{"position":[[142,3]]},"306":{"position":[[435,3],[1928,3],[2285,3],[2682,7],[2839,3],[4450,3],[4816,3],[5294,3]]},"308":{"position":[[259,3]]},"318":{"position":[[59,3]]},"328":{"position":[[0,3]]},"360":{"position":[[145,3]]},"362":{"position":[[175,3]]},"378":{"position":[[154,3]]},"382":{"position":[[597,3]]},"392":{"position":[[0,3]]},"413":{"position":[[1001,3]]},"415":{"position":[[553,3]]},"427":{"position":[[368,3]]},"435":{"position":[[0,3]]},"457":{"position":[[58,3]]},"465":{"position":[[0,3]]},"486":{"position":[[45,9]]},"524":{"position":[[991,4]]},"526":{"position":[[515,3],[550,4],[588,3],[603,3],[645,5]]},"546":{"position":[[454,3]]},"558":{"position":[[357,3]]},"560":{"position":[[339,3]]},"562":{"position":[[2,3],[292,3]]},"564":{"position":[[2,3],[265,3]]},"566":{"position":[[612,3]]},"590":{"position":[[185,3],[249,3]]},"596":{"position":[[441,3]]},"616":{"position":[[721,3]]},"626":{"position":[[904,3]]},"632":{"position":[[186,3]]},"668":{"position":[[340,3]]},"676":{"position":[[515,3]]},"696":{"position":[[248,3]]},"704":{"position":[[436,3]]},"730":{"position":[[448,3]]},"740":{"position":[[105,8]]},"750":{"position":[[65,3],[560,3]]},"752":{"position":[[339,3]]},"779":{"position":[[423,3],[457,3]]},"781":{"position":[[419,3]]},"799":{"position":[[27,3],[688,7],[770,3]]},"801":{"position":[[182,4],[1413,3],[1729,4],[2089,3],[2182,5],[2391,4],[2957,3],[3727,3],[4019,4],[4174,4],[4412,4]]},"803":{"position":[[91,3],[778,5]]},"805":{"position":[[266,3]]},"819":{"position":[[210,3]]},"821":{"position":[[461,3]]},"831":{"position":[[539,3]]},"835":{"position":[[619,3]]},"843":{"position":[[569,3],[878,3]]},"857":{"position":[[383,3],[784,3]]},"859":{"position":[[368,3]]},"863":{"position":[[519,4],[570,4]]},"917":{"position":[[390,3],[407,3]]},"931":{"position":[[416,3],[450,3]]},"941":{"position":[[463,3],[497,3]]},"943":{"position":[[289,3],[362,3]]},"955":{"position":[[183,3],[324,3],[373,3],[553,3]]},"959":{"position":[[268,3],[490,3]]},"963":{"position":[[451,3]]},"979":{"position":[[411,3]]},"987":{"position":[[458,3]]},"989":{"position":[[90,3],[290,3],[376,4]]},"991":{"position":[[188,3]]},"999":{"position":[[40,4]]},"1001":{"position":[[100,3],[293,3],[379,4]]},"1003":{"position":[[378,3]]},"1015":{"position":[[37,4]]},"1065":{"position":[[549,3]]},"1067":{"position":[[386,3]]},"1076":{"position":[[232,3]]},"1087":{"position":[[52,3]]},"1100":{"position":[[91,8]]},"1116":{"position":[[924,5],[1227,3]]},"1136":{"position":[[1127,3]]},"1148":{"position":[[10,3]]}}}],["setev",{"_index":1462,"t":{"182":{"position":[[342,9]]}}}],["setevent(eventuseact",{"_index":1479,"t":{"182":{"position":[[1078,26]]}}}],["setfirstobserv",{"_index":1431,"t":{"180":{"position":[[3464,20]]}}}],["setfirstobservation(fals",{"_index":1434,"t":{"180":{"position":[[3827,27]]}}}],["setgamest",{"_index":1424,"t":{"180":{"position":[[3334,13],[4185,14]]}}}],["setsendact",{"_index":1466,"t":{"182":{"position":[[530,14],[883,16]]}}}],["setstarttri",{"_index":1464,"t":{"182":{"position":[[478,14],[1443,16]]}}}],["setup",{"_index":1288,"t":{"164":{"position":[[297,6]]},"224":{"position":[[281,7],[483,6],[607,5]]},"306":{"position":[[2936,6]]},"738":{"position":[[9,5]]},"819":{"position":[[1105,5]]},"829":{"position":[[9,5]]}}}],["setup.pi",{"_index":2046,"t":{"306":{"position":[[2979,11]]}}}],["sever",{"_index":496,"t":{"52":{"position":[[741,7]]},"124":{"position":[[1190,7]]}}}],["sha",{"_index":2690,"t":{"686":{"position":[[782,3]]},"1029":{"position":[[283,3]]}}}],["shall",{"_index":1710,"t":{"239":{"position":[[26,5],[166,5],[286,5],[745,5],[848,5],[1016,5],[1231,5],[1480,5],[1774,5],[1935,5],[2818,5],[4256,5],[6476,5],[6619,5],[7853,5]]}}}],["shape",{"_index":1003,"t":{"118":{"position":[[252,5]]},"490":{"position":[[79,5]]}}}],["share",{"_index":24,"t":{"2":{"position":[[327,5]]},"10":{"position":[[127,5]]},"50":{"position":[[512,5]]},"54":{"position":[[762,5]]},"239":{"position":[[673,7]]},"413":{"position":[[32,6]]},"415":{"position":[[215,6]]},"419":{"position":[[225,6]]},"421":{"position":[[244,6]]},"1157":{"position":[[715,5],[1146,7]]}}}],["shared_data)runn",{"_index":3125,"t":{"1157":{"position":[[1446,18]]}}}],["shell",{"_index":2285,"t":{"409":{"position":[[355,7]]},"514":{"position":[[146,5],[172,5]]}}}],["short",{"_index":2771,"t":{"754":{"position":[[230,5]]},"861":{"position":[[232,5]]}}}],["shouldn't",{"_index":87,"t":{"8":{"position":[[293,9]]},"156":{"position":[[2732,9]]}}}],["show",{"_index":470,"t":{"50":{"position":[[844,5]]},"136":{"position":[[1335,6],[1482,4]]},"212":{"position":[[117,4]]}}}],["showcas",{"_index":1050,"t":{"124":{"position":[[2029,8]]}}}],["shuffl",{"_index":1967,"t":{"296":{"position":[[826,8]]}}}],["shut",{"_index":1995,"t":{"300":{"position":[[70,8]]}}}],["side",{"_index":945,"t":{"108":{"position":[[103,4],[711,4],[779,5]]},"154":{"position":[[283,5]]},"164":{"position":[[238,4]]},"188":{"position":[[1262,5]]}}}],["sidetrial_id=f\"rp",{"_index":1245,"t":{"156":{"position":[[2169,18]]}}}],["sign",{"_index":105,"t":{"10":{"position":[[176,4],[338,7]]},"463":{"position":[[19,4]]},"811":{"position":[[4935,4]]}}}],["signal",{"_index":174,"t":{"12":{"position":[[653,6]]},"26":{"position":[[378,7]]},"216":{"position":[[5389,6]]},"602":{"position":[[996,6]]},"614":{"position":[[887,6]]}}}],["significantli",{"_index":1945,"t":{"290":{"position":[[315,13]]}}}],["silent",{"_index":870,"t":{"94":{"position":[[152,6]]}}}],["similar",{"_index":1221,"t":{"156":{"position":[[541,8]]},"198":{"position":[[789,8]]},"200":{"position":[[95,7]]},"202":{"position":[[113,7]]},"212":{"position":[[821,7]]},"403":{"position":[[251,8]]},"1157":{"position":[[343,8]]}}}],["similarli",{"_index":302,"t":{"24":{"position":[[566,9]]},"124":{"position":[[1231,9]]},"202":{"position":[[72,9]]},"292":{"position":[[1088,9]]},"506":{"position":[[157,9]]},"814":{"position":[[155,9]]}}}],["simpl",{"_index":932,"t":{"104":{"position":[[447,6]]},"158":{"position":[[1599,6]]},"180":{"position":[[1879,6]]},"190":{"position":[[187,6],[1611,6]]},"204":{"position":[[1561,6]]},"294":{"position":[[344,6]]},"382":{"position":[[16,6]]},"500":{"position":[[1544,6]]},"558":{"position":[[20,6]]},"560":{"position":[[751,6]]},"803":{"position":[[1283,6]]},"811":{"position":[[1317,6]]},"905":{"position":[[593,6]]},"985":{"position":[[174,7]]}}}],["simplest",{"_index":2756,"t":{"727":{"position":[[4,8]]},"811":{"position":[[1390,8]]},"814":{"position":[[4,8]]}}}],["simpli",{"_index":458,"t":{"50":{"position":[[417,6]]},"156":{"position":[[2079,6]]},"166":{"position":[[61,6]]},"178":{"position":[[796,6]]},"314":{"position":[[22,6]]},"356":{"position":[[20,6]]},"423":{"position":[[547,6]]},"449":{"position":[[17,6]]},"730":{"position":[[358,6]]},"821":{"position":[[371,6]]}}}],["simplic",{"_index":1142,"t":{"142":{"position":[[522,10]]}}}],["simplifi",{"_index":1175,"t":{"146":{"position":[[1605,8]]},"148":{"position":[[213,8],[345,10]]},"152":{"position":[[60,8],[730,10]]},"526":{"position":[[218,8]]},"1089":{"position":[[229,10]]},"1091":{"position":[[229,10]]},"1093":{"position":[[229,10]]},"1095":{"position":[[229,10]]},"1097":{"position":[[229,10]]}}}],["simul",{"_index":193,"t":{"14":{"position":[[159,10],[376,9]]},"18":{"position":[[857,11],[990,11],[1131,11]]},"40":{"position":[[403,11],[536,11],[677,11]]}}}],["simultan",{"_index":2557,"t":{"594":{"position":[[360,12]]},"610":{"position":[[311,12]]}}}],["singl",{"_index":983,"t":{"116":{"position":[[108,6]]},"130":{"position":[[809,6]]},"150":{"position":[[237,6]]},"182":{"position":[[844,6],[1404,6]]},"212":{"position":[[40,7]]},"216":{"position":[[1712,6]]},"218":{"position":[[86,6]]},"306":{"position":[[3848,6]]},"500":{"position":[[373,6],[1165,6]]},"502":{"position":[[751,6],[875,6]]},"558":{"position":[[51,6]]},"594":{"position":[[409,6]]},"610":{"position":[[381,6]]},"987":{"position":[[43,6]]}}}],["singular",{"_index":2500,"t":{"552":{"position":[[2,8]]}}}],["sint64",{"_index":2504,"t":{"556":{"position":[[107,6]]},"560":{"position":[[191,6]]}}}],["situat",{"_index":1205,"t":{"150":{"position":[[138,11]]},"508":{"position":[[944,11]]}}}],["size",{"_index":1298,"t":{"168":{"position":[[191,5]]},"326":{"position":[[12,4]]},"419":{"position":[[979,4],[1277,4]]},"423":{"position":[[378,4]]},"431":{"position":[[35,4]]},"658":{"position":[[1324,5],[1759,5]]},"686":{"position":[[952,4]]},"875":{"position":[[372,6],[460,4]]},"1029":{"position":[[382,5],[394,4]]}}}],["skeleton",{"_index":1051,"t":{"124":{"position":[[2102,8]]}}}],["skill",{"_index":1277,"t":{"158":{"position":[[1585,6]]}}}],["skip",{"_index":1352,"t":{"176":{"position":[[96,4]]}}}],["slate",{"_index":1683,"t":{"224":{"position":[[312,5]]}}}],["sleep",{"_index":1144,"t":{"142":{"position":[[694,5]]},"310":{"position":[[242,9]]}}}],["slightli",{"_index":1930,"t":{"284":{"position":[[194,8]]},"626":{"position":[[717,8]]}}}],["slot_select",{"_index":2571,"t":{"608":{"position":[[414,14]]}}}],["slow",{"_index":1946,"t":{"290":{"position":[[329,4]]}}}],["smaller",{"_index":693,"t":{"71":{"position":[[915,7]]}}}],["smallplay",{"_index":2431,"t":{"520":{"position":[[1022,11]]},"803":{"position":[[1522,11],[1659,11]]}}}],["snapshot",{"_index":957,"t":{"108":{"position":[[933,8]]},"502":{"position":[[574,8]]},"520":{"position":[[590,8]]}}}],["socket",{"_index":1313,"t":{"170":{"position":[[452,6]]}}}],["soft",{"_index":638,"t":{"66":{"position":[[414,4]]},"88":{"position":[[488,4],[506,4],[939,4]]},"508":{"position":[[467,6]]},"568":{"position":[[827,6]]},"801":{"position":[[497,4]]},"1126":{"position":[[245,6]]}}}],["softwar",{"_index":307,"t":{"24":{"position":[[806,8]]},"32":{"position":[[230,8]]},"42":{"position":[[587,9]]},"239":{"position":[[933,8]]}}}],["sole",{"_index":1818,"t":{"239":{"position":[[7438,6],[8681,4]]},"887":{"position":[[53,4]]}}}],["solut",{"_index":25,"t":{"2":{"position":[[333,10]]}}}],["solv",{"_index":1314,"t":{"170":{"position":[[501,6]]}}}],["some_messag",{"_index":1021,"t":{"120":{"position":[[464,13]]}}}],["someth",{"_index":84,"t":{"8":{"position":[[251,9],[281,9],[333,9]]},"90":{"position":[[977,9]]},"120":{"position":[[50,9]]},"148":{"position":[[394,9]]},"222":{"position":[[331,9]]},"235":{"position":[[681,9],[939,9],[1067,9]]},"306":{"position":[[745,9]]},"308":{"position":[[2955,9]]}}}],["sometim",{"_index":1931,"t":{"284":{"position":[[340,9]]},"524":{"position":[[1227,9]]},"1157":{"position":[[598,9],[1117,9]]}}}],["somewher",{"_index":2068,"t":{"306":{"position":[[5399,10]]}}}],["somewhere.com",{"_index":1984,"t":{"298":{"position":[[676,15]]}}}],["soon",{"_index":1422,"t":{"180":{"position":[[2914,4]]},"306":{"position":[[3579,4]]},"690":{"position":[[873,4],[1085,4]]}}}],["sort",{"_index":1048,"t":{"124":{"position":[[1096,4],[1138,4]]}}}],["sourc",{"_index":9,"t":{"2":{"position":[[153,6]]},"10":{"position":[[456,6]]},"73":{"position":[[597,6],[1122,6]]},"110":{"position":[[276,6]]},"222":{"position":[[104,7]]},"239":{"position":[[834,8],[942,6],[969,7],[1097,6],[1277,6],[1512,6],[2503,6],[3343,6],[4465,6],[4769,6],[4893,6],[5419,6]]},"421":{"position":[[90,7]]},"558":{"position":[[34,6]]},"560":{"position":[[276,7],[637,8],[738,8],[765,7]]},"624":{"position":[[466,6]]},"795":{"position":[[290,8],[299,8],[334,7]]},"981":{"position":[[287,8]]},"983":{"position":[[21,6],[104,8]]},"985":{"position":[[37,7],[152,7]]},"987":{"position":[[50,6]]},"999":{"position":[[254,8],[337,6]]},"1100":{"position":[[1416,6]]}}}],["source_reward",{"_index":707,"t":{"73":{"position":[[532,13]]}}}],["source_reward.confid",{"_index":714,"t":{"73":{"position":[[668,24]]}}}],["source_reward.send",{"_index":716,"t":{"73":{"position":[[709,20]]}}}],["source_reward.user_data",{"_index":718,"t":{"73":{"position":[[749,23]]}}}],["source_reward.valu",{"_index":712,"t":{"73":{"position":[[628,19]]}}}],["sourcereward",{"_index":721,"t":{"73":{"position":[[1056,13]]}}}],["sourcereward.confid",{"_index":726,"t":{"73":{"position":[[1203,24]]}}}],["sourcereward.sendernam",{"_index":728,"t":{"73":{"position":[[1249,24]]}}}],["sourcereward.userdata",{"_index":730,"t":{"73":{"position":[[1297,22]]}}}],["sourcereward.valu",{"_index":724,"t":{"73":{"position":[[1158,19]]}}}],["sp",{"_index":2455,"t":{"524":{"position":[[1315,4]]}}}],["space",{"_index":149,"t":{"12":{"position":[[139,6]]},"16":{"position":[[124,7],[505,7]]},"22":{"position":[[177,7]]},"26":{"position":[[656,5]]},"30":{"position":[[1050,7]]},"50":{"position":[[265,5],[282,6],[326,6],[583,6],[692,6],[724,6],[774,6],[806,6]]},"96":{"position":[[227,7]]},"116":{"position":[[928,6]]},"128":{"position":[[890,5],[907,6]]},"130":{"position":[[11,5],[758,6]]},"132":{"position":[[16,5]]},"186":{"position":[[528,7]]},"202":{"position":[[1162,6]]},"204":{"position":[[162,5]]},"378":{"position":[[651,7]]},"488":{"position":[[525,6]]},"520":{"position":[[377,6],[497,6],[539,6],[664,6],[826,5],[900,6],[943,6],[1042,6],[1085,6],[1180,6],[1224,6]]},"552":{"position":[[342,5]]},"554":{"position":[[371,5]]},"562":{"position":[[550,5]]},"564":{"position":[[527,5]]},"730":{"position":[[218,5],[235,6],[248,8]]},"777":{"position":[[99,5],[223,5],[315,5]]},"821":{"position":[[231,5],[248,6],[261,8]]},"925":{"position":[[506,5]]},"939":{"position":[[115,5],[235,5],[327,5]]},"973":{"position":[[412,5]]},"977":{"position":[[593,5]]},"1053":{"position":[[219,5],[691,5]]},"1089":{"position":[[767,5]]},"1091":{"position":[[781,5]]}}}],["spec",{"_index":454,"t":{"50":{"position":[[4,4],[885,4]]},"52":{"position":[[20,4]]},"96":{"position":[[106,4],[310,4],[1118,4]]},"98":{"position":[[231,4]]},"100":{"position":[[172,4]]},"108":{"position":[[208,4]]},"110":{"position":[[202,5],[786,4]]},"120":{"position":[[642,4]]},"170":{"position":[[1307,4]]},"174":{"position":[[493,6]]},"229":{"position":[[1640,4],[1691,4]]},"366":{"position":[[144,4]]},"459":{"position":[[12,4]]},"494":{"position":[[341,4],[364,4]]},"498":{"position":[[4,4]]},"500":{"position":[[12,4],[348,4],[957,4],[1118,4],[1410,5]]},"512":{"position":[[187,4]]},"514":{"position":[[432,4],[506,4]]},"520":{"position":[[43,4]]},"548":{"position":[[95,4],[480,4]]},"550":{"position":[[257,4]]},"552":{"position":[[366,4]]},"554":{"position":[[395,4]]},"562":{"position":[[574,4]]},"564":{"position":[[551,4]]},"730":{"position":[[54,4],[102,5]]},"732":{"position":[[225,4],[370,4],[497,4],[555,4]]},"734":{"position":[[137,4]]},"736":{"position":[[205,4]]},"746":{"position":[[406,4]]},"750":{"position":[[284,4]]},"777":{"position":[[183,4]]},"789":{"position":[[128,4]]},"791":{"position":[[129,4]]},"799":{"position":[[624,4]]},"801":{"position":[[126,4],[1667,4],[2295,4],[2564,4],[4315,4]]},"821":{"position":[[19,7],[62,4],[110,4]]},"823":{"position":[[267,4],[412,4]]},"825":{"position":[[62,4],[242,4],[322,5]]},"827":{"position":[[210,4]]},"831":{"position":[[91,5]]},"833":{"position":[[44,5],[82,5],[185,5],[250,5]]},"847":{"position":[[412,4]]},"855":{"position":[[88,6]]},"857":{"position":[[196,4]]},"871":{"position":[[44,5],[95,5],[152,6]]},"883":{"position":[[91,6]]},"917":{"position":[[621,4]]},"919":{"position":[[507,4]]},"925":{"position":[[541,4]]},"933":{"position":[[321,4],[625,4]]},"939":{"position":[[200,4]]},"967":{"position":[[155,4]]},"973":{"position":[[507,4]]},"977":{"position":[[671,4]]},"989":{"position":[[444,4],[599,5],[840,4],[1006,5]]},"991":{"position":[[35,5]]},"993":{"position":[[44,5],[95,5],[152,5]]},"1001":{"position":[[447,4],[652,5],[946,4],[1154,5]]},"1003":{"position":[[35,5],[260,4]]},"1005":{"position":[[44,5],[95,5],[152,5]]},"1047":{"position":[[44,5],[95,5],[152,6]]},"1051":{"position":[[44,5],[95,5],[152,6]]},"1053":{"position":[[314,4],[531,5],[769,4],[969,5]]},"1055":{"position":[[44,5],[95,5],[152,6]]},"1089":{"position":[[312,4],[541,5],[851,4]]},"1091":{"position":[[312,4],[541,5],[870,4]]},"1093":{"position":[[312,4],[541,5],[848,4]]},"1095":{"position":[[312,4],[651,4]]},"1097":{"position":[[312,4],[639,4]]}}}],["spec_file=./cogment.yaml",{"_index":2354,"t":{"449":{"position":[[87,24]]}}}],["spec_file=./path/to/cogment.yaml",{"_index":2363,"t":{"459":{"position":[[237,33]]}}}],["special",{"_index":939,"t":{"106":{"position":[[231,7]]},"144":{"position":[[1094,7]]},"156":{"position":[[1669,7]]},"239":{"position":[[7937,8]]},"255":{"position":[[1044,7]]},"298":{"position":[[2395,7]]},"308":{"position":[[340,7],[1077,7],[2592,7]]},"508":{"position":[[936,7]]},"602":{"position":[[927,7]]},"614":{"position":[[818,7]]},"626":{"position":[[1194,7]]},"801":{"position":[[1247,7]]},"811":{"position":[[242,7],[851,7],[5732,7]]},"1007":{"position":[[1198,7]]},"1078":{"position":[[268,7]]},"1100":{"position":[[206,7]]}}}],["special_ev",{"_index":2585,"t":{"626":{"position":[[182,14],[1045,15]]}}}],["specif",{"_index":239,"t":{"18":{"position":[[65,13]]},"30":{"position":[[147,8],[794,13],[889,13],[1087,13]]},"50":{"position":[[55,9]]},"52":{"position":[[146,8]]},"71":{"position":[[777,8],[798,8]]},"73":{"position":[[51,8]]},"78":{"position":[[53,8]]},"124":{"position":[[1008,13],[1674,13]]},"138":{"position":[[347,12],[1416,14]]},"152":{"position":[[355,9]]},"156":{"position":[[55,8]]},"198":{"position":[[236,8],[1524,13]]},"298":{"position":[[2317,8]]},"312":{"position":[[477,8]]},"346":{"position":[[401,8]]},"350":{"position":[[588,8]]},"366":{"position":[[230,8]]},"500":{"position":[[1395,14]]},"502":{"position":[[168,13]]},"508":{"position":[[115,8]]},"510":{"position":[[4,14],[147,9],[273,8],[583,8],[635,8],[683,8]]},"524":{"position":[[158,14]]},"526":{"position":[[757,8],[848,8]]},"530":{"position":[[296,8]]},"534":{"position":[[404,8]]},"536":{"position":[[844,8]]},"538":{"position":[[172,8]]},"552":{"position":[[259,8],[455,8]]},"554":{"position":[[293,8],[479,8]]},"562":{"position":[[460,8],[663,8]]},"564":{"position":[[447,8]]},"642":{"position":[[556,8]]},"658":{"position":[[1693,8]]},"730":{"position":[[4,14]]},"732":{"position":[[528,13]]},"734":{"position":[[39,13],[66,13]]},"736":{"position":[[167,8]]},"779":{"position":[[593,8]]},"793":{"position":[[99,8]]},"811":{"position":[[22,8],[139,8],[3253,8],[3567,8],[3601,8],[6460,8]]},"821":{"position":[[4,14]]},"825":{"position":[[20,14]]},"827":{"position":[[172,8]]},"829":{"position":[[377,8]]},"885":{"position":[[591,8]]},"887":{"position":[[692,8]]},"889":{"position":[[33,8],[377,8]]},"897":{"position":[[39,8]]},"899":{"position":[[73,8]]},"901":{"position":[[67,8]]},"905":{"position":[[41,8]]},"917":{"position":[[544,8]]},"931":{"position":[[587,8]]},"941":{"position":[[634,8]]},"943":{"position":[[48,9]]},"977":{"position":[[607,8]]},"987":{"position":[[331,8],[373,8]]},"1001":{"position":[[509,8],[1009,8]]},"1003":{"position":[[203,8]]},"1021":{"position":[[75,13],[396,13]]},"1027":{"position":[[188,8]]},"1029":{"position":[[29,8]]},"1053":{"position":[[705,8]]},"1065":{"position":[[422,8],[464,8]]},"1078":{"position":[[50,14],[114,13],[150,14],[438,14],[589,13]]},"1089":{"position":[[570,13],[781,8]]},"1091":{"position":[[570,13],[795,8]]},"1093":{"position":[[570,13],[779,8]]},"1095":{"position":[[417,13]]},"1097":{"position":[[417,13]]},"1134":{"position":[[33,8]]},"1152":{"position":[[33,8]]},"1157":{"position":[[128,8]]}}}],["specifc",{"_index":1211,"t":{"152":{"position":[[261,7]]}}}],["specifi",{"_index":245,"t":{"18":{"position":[[283,9]]},"24":{"position":[[283,9],[358,9]]},"26":{"position":[[780,7]]},"80":{"position":[[392,7]]},"90":{"position":[[739,7],[1759,9]]},"96":{"position":[[122,9],[265,9]]},"98":{"position":[[250,7]]},"100":{"position":[[76,9]]},"114":{"position":[[361,7]]},"124":{"position":[[402,7]]},"126":{"position":[[351,7],[945,9]]},"128":{"position":[[146,7],[713,9],[856,9]]},"130":{"position":[[440,7],[739,7]]},"132":{"position":[[615,9]]},"134":{"position":[[114,9],[578,10],[795,9]]},"136":{"position":[[1499,9]]},"138":{"position":[[1363,7],[1702,9]]},"156":{"position":[[1797,7]]},"170":{"position":[[2012,7]]},"172":{"position":[[41,9]]},"190":{"position":[[387,9]]},"198":{"position":[[308,9],[496,7],[1163,9]]},"200":{"position":[[667,9]]},"202":{"position":[[507,9]]},"208":{"position":[[1430,9]]},"212":{"position":[[859,9]]},"214":{"position":[[626,10]]},"216":{"position":[[1562,9],[1984,7]]},"227":{"position":[[258,9],[386,9],[559,9]]},"229":{"position":[[579,7],[711,7],[1337,9],[2088,7],[2195,9]]},"245":{"position":[[78,9],[258,9]]},"247":{"position":[[78,9]]},"249":{"position":[[236,9]]},"276":{"position":[[116,9]]},"278":{"position":[[82,9]]},"280":{"position":[[114,9]]},"282":{"position":[[163,9]]},"284":{"position":[[381,9]]},"286":{"position":[[208,9]]},"288":{"position":[[75,9]]},"290":{"position":[[405,9]]},"316":{"position":[[40,9]]},"318":{"position":[[186,9]]},"320":{"position":[[73,9]]},"322":{"position":[[84,9]]},"324":{"position":[[102,9]]},"326":{"position":[[99,9]]},"328":{"position":[[244,9]]},"330":{"position":[[162,9]]},"332":{"position":[[372,9]]},"334":{"position":[[236,9]]},"336":{"position":[[399,9]]},"338":{"position":[[325,9]]},"358":{"position":[[38,9]]},"360":{"position":[[272,9]]},"362":{"position":[[302,9]]},"364":{"position":[[157,9]]},"366":{"position":[[462,9]]},"368":{"position":[[526,9]]},"370":{"position":[[236,9]]},"372":{"position":[[294,9]]},"374":{"position":[[396,9]]},"376":{"position":[[324,9]]},"378":{"position":[[331,9]]},"380":{"position":[[109,10],[162,9]]},"382":{"position":[[681,9]]},"384":{"position":[[81,9]]},"386":{"position":[[68,9]]},"388":{"position":[[55,9]]},"390":{"position":[[247,9]]},"392":{"position":[[244,9]]},"394":{"position":[[162,9]]},"399":{"position":[[160,9]]},"401":{"position":[[195,9]]},"403":{"position":[[319,9]]},"405":{"position":[[268,9]]},"407":{"position":[[515,9]]},"413":{"position":[[78,9],[212,9],[593,9],[773,9],[1223,9]]},"415":{"position":[[351,9],[631,9]]},"419":{"position":[[456,9]]},"421":{"position":[[436,9],[745,9],[903,9],[1058,10]]},"425":{"position":[[41,9]]},"427":{"position":[[495,9]]},"429":{"position":[[73,9]]},"431":{"position":[[159,9]]},"433":{"position":[[119,9]]},"435":{"position":[[244,9]]},"437":{"position":[[162,9]]},"439":{"position":[[392,9]]},"441":{"position":[[236,9]]},"443":{"position":[[402,9]]},"445":{"position":[[327,9]]},"451":{"position":[[35,9]]},"453":{"position":[[59,9]]},"455":{"position":[[203,9]]},"457":{"position":[[185,9]]},"459":{"position":[[193,9]]},"461":{"position":[[79,9]]},"463":{"position":[[133,9]]},"465":{"position":[[244,9]]},"467":{"position":[[162,9]]},"469":{"position":[[394,9]]},"471":{"position":[[236,9]]},"473":{"position":[[389,9]]},"475":{"position":[[320,9]]},"512":{"position":[[30,7]]},"746":{"position":[[393,9]]},"750":{"position":[[267,9]]},"777":{"position":[[111,9]]},"825":{"position":[[501,9]]},"847":{"position":[[395,9]]},"857":{"position":[[179,9]]},"917":{"position":[[604,9]]},"919":{"position":[[490,9]]},"933":{"position":[[304,9],[608,9]]},"939":{"position":[[127,9]]},"973":{"position":[[447,9]]},"989":{"position":[[427,9],[823,9]]},"1001":{"position":[[430,9],[929,9]]},"1053":{"position":[[254,9]]}}}],["specifiy",{"_index":1329,"t":{"170":{"position":[[1892,8]]},"459":{"position":[[22,11]]}}}],["src",{"_index":497,"t":{"52":{"position":[[762,3]]},"174":{"position":[[373,3]]}}}],["src/*_pb*src/cog_set",{"_index":1485,"t":{"182":{"position":[[1783,26]]}}}],["ssl",{"_index":1885,"t":{"255":{"position":[[250,3]]},"263":{"position":[[368,3]]},"298":{"position":[[1052,3],[1111,3]]},"642":{"position":[[439,6],[521,6]]}}}],["ssl_requir",{"_index":1882,"t":{"255":{"position":[[192,13]]}}}],["stage",{"_index":794,"t":{"84":{"position":[[163,6]]},"180":{"position":[[4521,6]]},"227":{"position":[[682,6]]},"235":{"position":[[798,6]]}}}],["stale",{"_index":2267,"t":{"390":{"position":[[109,5]]}}}],["standard",{"_index":1698,"t":{"229":{"position":[[2031,8]]},"306":{"position":[[2759,8],[2852,8]]},"409":{"position":[[199,10],[378,10],[502,8]]},"530":{"position":[[23,12]]},"536":{"position":[[580,8],[632,8],[669,8]]},"582":{"position":[[225,8]]},"686":{"position":[[819,8]]},"803":{"position":[[1877,8]]},"809":{"position":[[216,8]]},"819":{"position":[[596,8],[803,8]]},"1029":{"position":[[320,8]]}}}],["star",{"_index":2282,"t":{"409":{"position":[[156,4],[255,4],[600,4],[673,4]]}}}],["start",{"_index":4,"t":{"2":{"position":[[83,5]]},"30":{"position":[[11,7]]},"38":{"position":[[154,8]]},"50":{"position":[[180,8]]},"54":{"position":[[276,8],[1014,5],[1041,8]]},"56":{"position":[[75,6]]},"58":{"position":[[701,6],[1636,6]]},"60":{"position":[[850,8],[1463,5]]},"64":{"position":[[11,7]]},"66":{"position":[[510,5],[623,5],[792,8]]},"80":{"position":[[5,8],[208,8]]},"84":{"position":[[10,6]]},"90":{"position":[[5,8],[137,8],[245,8],[1385,8]]},"96":{"position":[[508,7]]},"104":{"position":[[174,8]]},"106":{"position":[[39,8]]},"120":{"position":[[504,8]]},"126":{"position":[[765,6]]},"138":{"position":[[257,8],[1507,5],[1679,5]]},"142":{"position":[[50,5],[233,7],[295,5],[366,5],[418,8],[541,5]]},"144":{"position":[[963,5]]},"146":{"position":[[249,5]]},"154":{"position":[[87,8]]},"156":{"position":[[2228,5],[2406,10]]},"160":{"position":[[87,8]]},"164":{"position":[[215,5]]},"166":{"position":[[259,5]]},"170":{"position":[[1096,5],[1759,6],[1830,8]]},"174":{"position":[[55,5],[567,5]]},"178":{"position":[[863,7]]},"180":{"position":[[6,5],[1503,5],[1893,5],[2897,5],[3372,8],[4620,7],[4743,7]]},"182":{"position":[[35,6],[1303,5],[1960,5]]},"184":{"position":[[609,7]]},"186":{"position":[[38,5]]},"200":{"position":[[533,5]]},"202":{"position":[[306,7]]},"206":{"position":[[8,5],[243,6],[705,6]]},"216":{"position":[[513,6],[722,6],[1112,5],[1290,10],[1536,6],[2339,7],[5772,5],[5950,10]]},"222":{"position":[[448,8]]},"224":{"position":[[343,8],[515,8]]},"233":{"position":[[502,5]]},"235":{"position":[[527,5],[613,6],[721,5],[822,6],[1585,7],[1699,7],[1801,5]]},"284":{"position":[[185,5]]},"286":{"position":[[58,5]]},"300":{"position":[[404,5],[460,5]]},"302":{"position":[[486,5]]},"306":{"position":[[328,5],[1177,8],[3289,8],[3590,7]]},"308":{"position":[[192,7],[451,5],[1212,5]]},"366":{"position":[[347,7],[424,5]]},"378":{"position":[[89,7]]},"382":{"position":[[347,7]]},"390":{"position":[[10,9],[220,5]]},"415":{"position":[[936,7]]},"447":{"position":[[365,5]]},"478":{"position":[[63,5],[102,5]]},"482":{"position":[[164,8]]},"494":{"position":[[54,5]]},"502":{"position":[[982,5]]},"508":{"position":[[5,8],[206,5],[315,8],[790,7]]},"514":{"position":[[604,6],[670,5],[797,6]]},"530":{"position":[[157,5],[256,6]]},"566":{"position":[[283,9]]},"572":{"position":[[365,5]]},"574":{"position":[[411,5],[544,8],[600,8]]},"576":{"position":[[118,7]]},"586":{"position":[[542,5]]},"594":{"position":[[307,5]]},"596":{"position":[[368,8]]},"602":{"position":[[586,5]]},"604":{"position":[[501,5]]},"606":{"position":[[41,5],[915,5]]},"608":{"position":[[41,5],[209,5]]},"614":{"position":[[535,5]]},"616":{"position":[[489,5],[678,5]]},"618":{"position":[[41,5],[601,5],[844,5]]},"620":{"position":[[41,5]]},"624":{"position":[[216,5],[523,7]]},"626":{"position":[[1979,5]]},"632":{"position":[[175,7],[291,8],[337,7]]},"692":{"position":[[303,7]]},"694":{"position":[[318,7]]},"742":{"position":[[53,7]]},"750":{"position":[[10,5],[785,7]]},"770":{"position":[[154,8]]},"773":{"position":[[10,5]]},"781":{"position":[[122,9]]},"799":{"position":[[311,5],[556,5],[703,5],[829,5],[875,5]]},"801":{"position":[[79,5],[307,8],[1624,5],[2248,5]]},"805":{"position":[[41,5],[193,5],[585,5],[657,5],[743,7],[1002,8]]},"811":{"position":[[621,8],[1075,7],[2105,5],[2494,8],[4130,5],[5106,8]]},"827":{"position":[[79,5]]},"831":{"position":[[700,8]]},"835":{"position":[[10,5]]},"837":{"position":[[53,7]]},"849":{"position":[[91,8]]},"857":{"position":[[10,5],[1055,5],[1252,7],[1307,7]]},"885":{"position":[[264,5]]},"887":{"position":[[424,5]]},"905":{"position":[[10,5],[134,7]]},"915":{"position":[[154,8]]},"921":{"position":[[41,8],[261,8]]},"935":{"position":[[10,5]]},"947":{"position":[[51,7],[129,7]]},"949":{"position":[[330,7]]},"951":{"position":[[10,5]]},"963":{"position":[[122,9]]},"965":{"position":[[169,5]]},"1007":{"position":[[44,6]]},"1045":{"position":[[174,7]]},"1049":{"position":[[570,5]]},"1080":{"position":[[97,5]]},"1083":{"position":[[80,7]]},"1085":{"position":[[103,7]]},"1100":{"position":[[299,8],[1367,7]]},"1108":{"position":[[10,5],[269,7],[651,8]]},"1110":{"position":[[10,5],[620,7]]},"1112":{"position":[[10,5],[590,7]]},"1116":{"position":[[160,7],[455,5],[659,8]]},"1118":{"position":[[10,5],[54,7],[94,5],[176,7],[202,8],[275,5]]},"1120":{"position":[[70,9]]},"1122":{"position":[[58,8]]},"1124":{"position":[[51,9]]},"1126":{"position":[[56,9]]},"1136":{"position":[[351,7],[1017,7]]},"1138":{"position":[[10,5]]},"1142":{"position":[[88,7]]},"1146":{"position":[[109,7]]},"1150":{"position":[[124,8]]},"1159":{"position":[[106,7],[448,6],[797,5],[887,5],[927,5],[1195,8],[1448,5]]}}}],["start_data",{"_index":2542,"t":{"574":{"position":[[80,10]]}}}],["start_trial",{"_index":1120,"t":{"138":{"position":[[1728,11],[2033,11]]},"216":{"position":[[330,11],[596,11]]},"799":{"position":[[327,13]]},"823":{"position":[[50,11]]}}}],["starttrial",{"_index":1412,"t":{"180":{"position":[[1808,11],[2603,11],[2979,12],[2992,13],[3009,14]]},"182":{"position":[[465,12],[1640,11]]},"526":{"position":[[1002,10]]},"572":{"position":[[351,13]]},"574":{"position":[[24,10]]},"576":{"position":[[22,10]]}}}],["starttrial(trialstartrequest",{"_index":2529,"t":{"572":{"position":[[31,29]]}}}],["startup",{"_index":839,"t":{"90":{"position":[[1792,8]]},"732":{"position":[[90,8],[171,9]]},"823":{"position":[[131,8],[212,9]]},"849":{"position":[[244,8]]}}}],["stat",{"_index":1560,"t":{"202":{"position":[[412,5]]}}}],["state",{"_index":225,"t":{"16":{"position":[[36,7],[68,6],[117,6],[196,5],[349,5],[419,6]]},"18":{"position":[[647,6],[784,5],[906,5]]},"20":{"position":[[81,5]]},"22":{"position":[[43,5],[290,5]]},"28":{"position":[[268,6],[304,5],[325,6]]},"30":{"position":[[156,5],[266,5],[430,6]]},"38":{"position":[[201,5]]},"40":{"position":[[193,6],[330,5],[452,5]]},"54":{"position":[[237,5]]},"82":{"position":[[47,6],[95,5],[161,6]]},"84":{"position":[[116,6]]},"88":{"position":[[166,5],[746,5]]},"124":{"position":[[1842,5]]},"132":{"position":[[191,5]]},"138":{"position":[[292,6],[3801,5]]},"180":{"position":[[3534,5],[3657,5],[3765,6],[4461,6]]},"198":{"position":[[151,6],[262,7],[335,6]]},"204":{"position":[[1568,5],[1903,5]]},"206":{"position":[[603,5],[985,5]]},"208":{"position":[[230,6],[699,5],[1489,5],[1622,7],[1824,5]]},"216":{"position":[[2224,5],[2760,5],[3437,5]]},"239":{"position":[[3572,6],[4701,7],[6291,6],[6369,5]]},"415":{"position":[[967,6],[984,5]]},"536":{"position":[[120,6]]},"566":{"position":[[22,5]]},"568":{"position":[[22,5]]},"572":{"position":[[822,5]]},"586":{"position":[[119,5],[355,6],[366,5]]},"588":{"position":[[147,6],[197,5],[274,6],[394,6]]},"590":{"position":[[109,5],[213,6],[224,5]]},"602":{"position":[[108,5],[188,5],[282,5],[432,6],[443,5],[641,5],[1006,5]]},"604":{"position":[[104,5],[204,5],[346,6],[357,5],[556,5]]},"614":{"position":[[117,5],[197,5],[255,5],[381,6],[392,5],[590,5],[897,5]]},"616":{"position":[[113,5],[177,5],[334,6],[345,5],[544,5]]},"626":{"position":[[155,5],[942,6],[953,5],[1025,5]]},"692":{"position":[[259,6]]},"694":{"position":[[181,5],[440,6],[453,5]]},"756":{"position":[[61,6],[142,6],[246,6],[408,5],[483,5],[573,6]]},"781":{"position":[[30,6]]},"783":{"position":[[101,6],[141,5]]},"863":{"position":[[67,5],[159,5],[246,6],[428,5],[556,5]]},"963":{"position":[[30,6]]},"965":{"position":[[199,6],[239,5]]},"1007":{"position":[[209,5],[835,6],[867,5]]},"1045":{"position":[[247,5],[434,5]]},"1049":{"position":[[221,5]]}}}],["state[\"p1\"][\"scor",{"_index":1599,"t":{"208":{"position":[[1126,20]]},"214":{"position":[[1116,20]]},"216":{"position":[[3143,20],[5028,20]]}}}],["state[\"p2\"][\"scor",{"_index":1603,"t":{"208":{"position":[[1207,20]]},"214":{"position":[[1205,20]]},"216":{"position":[[3224,20],[5117,20]]}}}],["state['p1']['scor",{"_index":1616,"t":{"210":{"position":[[331,22],[464,20]]},"216":{"position":[[4046,22],[4179,20]]}}}],["state['p2']['scor",{"_index":1618,"t":{"210":{"position":[[395,22],[487,21]]},"216":{"position":[[4110,22],[4202,21]]}}}],["state['rounds_count",{"_index":1614,"t":{"210":{"position":[[259,23],[439,22]]},"216":{"position":[[3974,23],[4154,22]]}}}],["statement",{"_index":1490,"t":{"184":{"position":[[231,9]]},"208":{"position":[[753,11]]},"210":{"position":[[26,10]]},"239":{"position":[[5982,9]]}}}],["statist",{"_index":1657,"t":{"216":{"position":[[2188,10]]}}}],["statu",{"_index":1952,"t":{"294":{"position":[[259,6]]},"296":{"position":[[452,6],[920,6],[1092,6],[1131,6]]},"382":{"position":[[23,6]]},"396":{"position":[[0,6],[43,6],[133,7],[149,6]]},"399":{"position":[[145,7]]},"405":{"position":[[235,6]]},"409":{"position":[[165,6],[389,6],[678,6],[718,6],[738,6],[779,6]]},"536":{"position":[[20,6],[545,6],[619,6],[885,6]]},"538":{"position":[[22,6]]},"646":{"position":[[71,6],[115,6],[122,6],[199,7],[218,7],[473,7],[485,6],[606,6]]},"650":{"position":[[75,6],[119,6],[126,6],[161,7],[180,7],[396,7],[408,6],[537,6]]},"973":{"position":[[240,6],[579,6]]},"975":{"position":[[22,6],[66,6]]},"977":{"position":[[225,7],[269,6],[416,6],[727,6]]}}}],["status",{"_index":2271,"t":{"396":{"position":[[166,13]]},"405":{"position":[[54,9]]},"407":{"position":[[42,9]]},"409":{"position":[[17,8],[95,9],[210,8],[444,8],[457,8],[511,8],[575,8],[624,8]]},"536":{"position":[[131,8],[163,11],[280,8],[589,9],[678,8]]},"538":{"position":[[140,9],[159,8],[295,8],[327,9],[347,8]]}}}],["status_file=./path/to/statu",{"_index":2251,"t":{"382":{"position":[[725,29]]}}}],["statusrepli",{"_index":2480,"t":{"538":{"position":[[261,11]]}}}],["statusrequest",{"_index":2478,"t":{"536":{"position":[[212,13]]}}}],["stay",{"_index":1893,"t":{"255":{"position":[[592,4]]},"308":{"position":[[2993,4]]},"382":{"position":[[179,5]]},"887":{"position":[[167,4]]}}}],["stderr",{"_index":2026,"t":{"306":{"position":[[1116,8],[1248,8],[1653,10],[2795,7]]},"819":{"position":[[996,7]]}}}],["stdin",{"_index":2319,"t":{"421":{"position":[[422,6]]}}}],["stdout",{"_index":1927,"t":{"282":{"position":[[148,7]]},"306":{"position":[[952,8],[1321,8],[1637,11],[2783,7]]},"330":{"position":[[147,7]]},"394":{"position":[[147,7]]},"413":{"position":[[979,7]]},"419":{"position":[[406,6]]},"437":{"position":[[147,7]]},"467":{"position":[[147,7]]}}}],["step",{"_index":480,"t":{"52":{"position":[[238,4]]},"86":{"position":[[59,6]]},"88":{"position":[[610,6]]},"110":{"position":[[20,4]]},"122":{"position":[[130,4]]},"130":{"position":[[91,4]]},"132":{"position":[[88,4],[899,5]]},"134":{"position":[[494,5],[901,5]]},"136":{"position":[[1179,4],[1358,4]]},"138":{"position":[[2081,4],[2989,4],[3633,4]]},"140":{"position":[[152,5],[224,4]]},"148":{"position":[[3,4]]},"152":{"position":[[8,4]]},"154":{"position":[[39,4],[134,4],[198,4]]},"158":{"position":[[1662,4],[1787,4],[1922,4]]},"160":{"position":[[39,4],[134,4],[198,4]]},"164":{"position":[[16,6],[153,4]]},"174":{"position":[[101,5]]},"186":{"position":[[8,4],[772,4]]},"196":{"position":[[8,4],[219,4]]},"198":{"position":[[1839,4]]},"202":{"position":[[328,4]]},"216":{"position":[[6391,4]]},"218":{"position":[[8,4],[169,5]]},"222":{"position":[[25,4],[240,4],[414,4]]},"224":{"position":[[237,4]]},"235":{"position":[[1222,5],[1893,5]]},"530":{"position":[[140,6],[212,4],[251,4],[485,4]]},"766":{"position":[[58,6]]},"779":{"position":[[53,4]]},"783":{"position":[[252,4]]},"795":{"position":[[85,5]]},"801":{"position":[[439,5],[526,5],[556,7],[870,7]]},"859":{"position":[[315,5]]},"911":{"position":[[58,6]]},"917":{"position":[[666,5],[765,5]]},"931":{"position":[[53,4]]},"941":{"position":[[53,4]]},"965":{"position":[[346,4]]},"973":{"position":[[85,4]]},"977":{"position":[[81,4]]},"979":{"position":[[52,4]]},"981":{"position":[[84,5]]},"1007":{"position":[[569,4],[654,5],[797,4]]}}}],["step/tick",{"_index":3032,"t":{"1049":{"position":[[463,9],[583,9]]}}}],["still",{"_index":96,"t":{"8":{"position":[[532,5]]},"90":{"position":[[170,5]]},"96":{"position":[[666,5]]},"146":{"position":[[2140,5],[2331,6]]},"198":{"position":[[1541,5],[1759,5]]},"208":{"position":[[1692,5]]},"409":{"position":[[74,5]]},"447":{"position":[[23,5]]},"492":{"position":[[222,5]]},"801":{"position":[[1093,5]]},"927":{"position":[[101,5]]},"1078":{"position":[[520,5]]},"1128":{"position":[[105,5],[135,5]]},"1144":{"position":[[111,5]]}}}],["stop",{"_index":2524,"t":{"568":{"position":[[983,5]]},"742":{"position":[[61,5]]},"835":{"position":[[165,8]]},"837":{"position":[[61,5]]},"1087":{"position":[[304,7]]},"1120":{"position":[[45,5],[93,4],[210,7]]},"1124":{"position":[[10,4],[29,5]]},"1126":{"position":[[34,5]]},"1132":{"position":[[127,8]]},"1136":{"position":[[558,7],[591,4]]},"1142":{"position":[[10,4],[25,5]]},"1144":{"position":[[143,7]]},"1146":{"position":[[186,8]]},"1159":{"position":[[912,4]]},"1163":{"position":[[908,4],[953,5],[1041,4]]},"1165":{"position":[[578,4],[683,4]]}}}],["stoppag",{"_index":1835,"t":{"239":{"position":[[8148,9]]}}}],["storag",{"_index":425,"t":{"44":{"position":[[390,7]]},"312":{"position":[[466,7]]},"423":{"position":[[300,8],[437,7],[484,7]]},"431":{"position":[[62,7]]},"433":{"position":[[43,8],[103,8]]},"686":{"position":[[595,8]]},"885":{"position":[[40,7],[396,7]]},"887":{"position":[[150,8]]}}}],["store",{"_index":361,"t":{"30":{"position":[[782,7]]},"44":{"position":[[242,5]]},"136":{"position":[[526,5]]},"180":{"position":[[3621,5]]},"204":{"position":[[429,6]]},"208":{"position":[[490,6]]},"216":{"position":[[2729,6]]},"286":{"position":[[71,6]]},"312":{"position":[[38,5],[295,6],[380,6],[408,6]]},"322":{"position":[[25,5]]},"324":{"position":[[64,6]]},"411":{"position":[[351,6]]},"415":{"position":[[43,6],[1003,6]]},"417":{"position":[[43,6]]},"419":{"position":[[952,6]]},"423":{"position":[[70,5],[336,6],[445,6]]},"427":{"position":[[317,6]]},"492":{"position":[[252,6]]},"658":{"position":[[40,5]]},"686":{"position":[[573,6]]},"690":{"position":[[540,6]]},"692":{"position":[[30,6],[365,6]]},"811":{"position":[[3939,5]]},"841":{"position":[[34,5]]},"881":{"position":[[37,5]]},"885":{"position":[[76,7],[470,7],[630,6],[716,6]]},"891":{"position":[[38,6]]},"893":{"position":[[42,6],[158,6]]},"895":{"position":[[265,6]]},"899":{"position":[[10,5],[201,6]]},"903":{"position":[[83,6],[226,6]]},"1027":{"position":[[48,6]]},"1029":{"position":[[59,6],[209,6],[435,7],[471,7]]},"1045":{"position":[[44,6],[371,6]]},"1083":{"position":[[61,7]]},"1085":{"position":[[84,7]]}}}],["stored_trial_sample_field_act",{"_index":2733,"t":{"702":{"position":[[207,32]]}}}],["stored_trial_sample_field_observ",{"_index":2732,"t":{"702":{"position":[[164,37]]}}}],["stored_trial_sample_field_received_messag",{"_index":2737,"t":{"702":{"position":[[375,43]]}}}],["stored_trial_sample_field_received_reward",{"_index":2735,"t":{"702":{"position":[[283,42]]}}}],["stored_trial_sample_field_reward",{"_index":2734,"t":{"702":{"position":[[245,32]]}}}],["stored_trial_sample_field_sent_messag",{"_index":2738,"t":{"702":{"position":[[424,39]]}}}],["stored_trial_sample_field_sent_reward",{"_index":2736,"t":{"702":{"position":[[331,38]]}}}],["stored_trial_sample_field_unknown",{"_index":2731,"t":{"702":{"position":[[125,33]]}}}],["storedtrialactorsampl",{"_index":2718,"t":{"694":{"position":[[201,22]]},"696":{"position":[[490,22]]},"698":{"position":[[82,23]]},"700":{"position":[[83,23]]}}}],["storedtrialactorsamplemessag",{"_index":2726,"t":{"696":{"position":[[746,29],[808,29]]},"700":{"position":[[115,29]]}}}],["storedtrialactorsamplereward",{"_index":2723,"t":{"696":{"position":[[630,28],[690,28]]},"698":{"position":[[114,28]]}}}],["storedtrialinfo",{"_index":2715,"t":{"692":{"position":[[51,15]]},"706":{"position":[[84,15]]}}}],["storedtrialsampl",{"_index":2717,"t":{"694":{"position":[[66,17]]},"696":{"position":[[102,18],[419,17],[1010,18],[1136,17]]},"698":{"position":[[634,18]]},"700":{"position":[[441,18]]},"702":{"position":[[45,18]]},"710":{"position":[[94,17]]},"716":{"position":[[87,17]]}}}],["storedtrialsample.actorsampl",{"_index":2747,"t":{"708":{"position":[[683,29]]}}}],["storedtrialsamplefield",{"_index":2730,"t":{"702":{"position":[[100,22]]},"708":{"position":[[232,22]]}}}],["str",{"_index":2884,"t":{"831":{"position":[[21,3],[1046,3]]},"835":{"position":[[702,3]]},"843":{"position":[[154,3],[279,3],[308,3],[609,3]]},"845":{"position":[[207,3]]},"847":{"position":[[191,3]]},"857":{"position":[[672,3],[1236,3]]},"865":{"position":[[78,3]]},"867":{"position":[[144,6],[180,6]]},"885":{"position":[[443,3]]},"887":{"position":[[541,3]]},"889":{"position":[[157,3]]},"891":{"position":[[114,3]]},"895":{"position":[[115,3]]},"897":{"position":[[83,3]]},"899":{"position":[[119,3]]},"901":{"position":[[113,3]]},"903":{"position":[[351,3]]},"905":{"position":[[693,3]]},"909":{"position":[[86,3]]},"919":{"position":[[258,3],[563,3]]},"933":{"position":[[245,3],[365,3],[683,3],[743,3]]},"945":{"position":[[65,3]]},"947":{"position":[[95,3]]},"949":{"position":[[237,3],[296,3]]},"955":{"position":[[68,3],[133,3],[238,3],[502,3]]},"957":{"position":[[17,3]]},"959":{"position":[[210,5],[381,3]]},"965":{"position":[[50,3],[269,3]]},"967":{"position":[[53,3],[100,3]]},"979":{"position":[[101,3],[201,3]]},"981":{"position":[[145,3]]},"987":{"position":[[189,3]]},"989":{"position":[[726,3],[1049,3],[1075,3],[1107,3]]},"997":{"position":[[78,3]]},"1001":{"position":[[689,3],[764,3],[778,3],[798,3]]},"1003":{"position":[[146,3]]},"1007":{"position":[[1177,3]]},"1013":{"position":[[75,3]]},"1015":{"position":[[90,3]]},"1019":{"position":[[70,3]]},"1021":{"position":[[134,3]]},"1027":{"position":[[83,3]]},"1029":{"position":[[101,3],[277,3]]},"1031":{"position":[[93,3]]},"1045":{"position":[[79,3],[123,3]]},"1049":{"position":[[113,3]]},"1053":{"position":[[65,3]]},"1065":{"position":[[171,3],[221,3]]},"1067":{"position":[[65,3],[116,3]]},"1089":{"position":[[407,3]]},"1091":{"position":[[407,3]]},"1093":{"position":[[407,3]]},"1100":{"position":[[21,3],[645,3]]},"1108":{"position":[[186,3]]},"1116":{"position":[[77,3]]},"1136":{"position":[[24,3]]},"1150":{"position":[[10,3]]},"1152":{"position":[[69,3]]}}}],["strategi",{"_index":1537,"t":{"190":{"position":[[1618,8]]},"194":{"position":[[706,10]]},"212":{"position":[[359,9]]}}}],["stream",{"_index":2536,"t":{"572":{"position":[[270,7],[815,6]]},"590":{"position":[[0,6]]},"594":{"position":[[655,7]]},"596":{"position":[[689,7]]},"598":{"position":[[164,7],[252,7]]},"602":{"position":[[38,9],[662,7]]},"604":{"position":[[34,9],[577,7]]},"606":{"position":[[188,6]]},"612":{"position":[[70,7],[329,7],[418,7]]},"614":{"position":[[47,9],[611,7]]},"616":{"position":[[43,9],[565,7]]},"618":{"position":[[97,6]]},"624":{"position":[[321,6],[358,6]]},"626":{"position":[[0,6],[2041,7]]},"636":{"position":[[67,7],[142,7],[206,7]]},"658":{"position":[[621,7],[1369,7],[1401,6],[1789,7],[1855,6]]},"672":{"position":[[20,6],[267,6],[619,6]]},"682":{"position":[[18,6],[195,6]]},"690":{"position":[[233,7],[792,6],[1074,7],[1254,6]]},"710":{"position":[[18,6]]},"716":{"position":[[20,6]]},"819":{"position":[[1124,6]]}}}],["strict",{"_index":3026,"t":{"1041":{"position":[[156,6]]}}}],["strictli",{"_index":319,"t":{"26":{"position":[[400,8]]},"995":{"position":[[428,8]]},"1011":{"position":[[431,8]]}}}],["string",{"_index":826,"t":{"90":{"position":[[1035,6],[1078,6],[1127,6],[1144,6],[1168,6],[1189,6]]},"116":{"position":[[137,7]]},"122":{"position":[[321,9]]},"136":{"position":[[152,9]]},"146":{"position":[[1162,6]]},"150":{"position":[[114,6]]},"180":{"position":[[1246,6]]},"235":{"position":[[1119,7]]},"253":{"position":[[92,7],[111,6]]},"261":{"position":[[64,6]]},"286":{"position":[[163,7]]},"292":{"position":[[325,8]]},"296":{"position":[[1158,6],[1241,6]]},"298":{"position":[[2270,8],[2639,6],[2862,6]]},"306":{"position":[[3352,6],[3491,6],[3524,6],[3882,6]]},"308":{"position":[[54,7],[392,8],[547,7],[2650,6],[2776,7],[2805,6],[3017,6]]},"338":{"position":[[200,6]]},"376":{"position":[[199,6]]},"419":{"position":[[632,6]]},"445":{"position":[[202,6]]},"475":{"position":[[195,6]]},"502":{"position":[[758,6],[882,6]]},"508":{"position":[[124,6],[271,6]]},"530":{"position":[[640,8]]},"534":{"position":[[504,6],[521,6]]},"536":{"position":[[237,6]]},"538":{"position":[[287,7]]},"542":{"position":[[86,6],[116,6]]},"544":{"position":[[89,6],[140,6]]},"546":{"position":[[77,6],[94,6],[118,6],[139,6]]},"550":{"position":[[67,6],[84,6]]},"556":{"position":[[127,6],[151,6]]},"558":{"position":[[153,6]]},"560":{"position":[[211,6]]},"574":{"position":[[149,6],[169,6]]},"576":{"position":[[70,6]]},"586":{"position":[[66,6],[87,6]]},"590":{"position":[[77,6]]},"602":{"position":[[409,6]]},"604":{"position":[[323,6]]},"606":{"position":[[397,6],[420,6],[444,6],[466,6]]},"608":{"position":[[431,6],[455,6]]},"614":{"position":[[358,6]]},"616":{"position":[[311,6]]},"618":{"position":[[215,6],[232,6]]},"626":{"position":[[175,6]]},"640":{"position":[[113,7]]},"642":{"position":[[181,6]]},"646":{"position":[[134,6],[179,6],[730,6]]},"648":{"position":[[97,6],[164,6]]},"650":{"position":[[138,6]]},"664":{"position":[[71,6]]},"668":{"position":[[86,6],[133,6]]},"670":{"position":[[109,6]]},"676":{"position":[[90,6],[174,6]]},"678":{"position":[[131,6]]},"680":{"position":[[88,6]]},"684":{"position":[[73,6],[106,7]]},"686":{"position":[[79,6],[178,6],[235,7]]},"692":{"position":[[69,6],[117,6]]},"694":{"position":[[86,6],[106,6]]},"704":{"position":[[88,6],[155,6]]},"706":{"position":[[117,6]]},"708":{"position":[[90,6],[121,6],[154,6],[189,6]]},"712":{"position":[[67,6]]},"720":{"position":[[84,6]]},"740":{"position":[[20,6]]},"742":{"position":[[104,6]]},"744":{"position":[[153,6],[203,6],[266,6]]},"746":{"position":[[195,6],[292,6]]},"750":{"position":[[445,6],[766,6]]},"752":{"position":[[60,8]]},"754":{"position":[[63,8]]},"758":{"position":[[77,6]]},"760":{"position":[[89,8],[98,7],[159,9],[198,9]]},"764":{"position":[[86,6]]},"779":{"position":[[260,8]]},"783":{"position":[[49,6],[170,6]]},"795":{"position":[[145,6],[225,8]]},"797":{"position":[[12,6]]},"857":{"position":[[596,7],[1279,6]]},"905":{"position":[[822,6],[1051,6]]},"925":{"position":[[298,6]]},"979":{"position":[[179,8]]},"981":{"position":[[222,8]]},"995":{"position":[[229,6],[262,6]]},"997":{"position":[[16,6]]},"999":{"position":[[29,6],[114,6]]},"1011":{"position":[[232,6],[265,6]]},"1013":{"position":[[17,6]]},"1015":{"position":[[26,6],[103,6]]},"1033":{"position":[[413,6]]},"1065":{"position":[[267,6]]},"1067":{"position":[[163,6]]},"1136":{"position":[[88,7]]}}}],["structur",{"_index":243,"t":{"18":{"position":[[176,9]]},"26":{"position":[[723,11],[799,11]]},"48":{"position":[[407,11]]},"50":{"position":[[298,10]]},"76":{"position":[[212,9],[880,10]]},"134":{"position":[[1066,9]]},"136":{"position":[[247,10]]},"138":{"position":[[2630,10]]},"156":{"position":[[662,10]]},"202":{"position":[[61,10],[1098,9]]},"204":{"position":[[328,10],[680,9],[1579,9]]},"208":{"position":[[413,11]]},"212":{"position":[[678,9]]},"216":{"position":[[2161,9],[2771,10]]},"229":{"position":[[959,9],[1090,10]]},"233":{"position":[[403,10]]},"512":{"position":[[52,11],[433,10]]},"516":{"position":[[154,10]]}}}],["stuff",{"_index":275,"t":{"20":{"position":[[29,6]]}}}],["style",{"_index":1296,"t":{"168":{"position":[[104,6]]},"176":{"position":[[59,6]]},"178":{"position":[[814,6]]},"184":{"position":[[141,5]]},"801":{"position":[[254,6]]},"973":{"position":[[145,5]]},"977":{"position":[[312,5]]},"989":{"position":[[1197,5]]},"1007":{"position":[[976,5]]},"1049":{"position":[[541,5]]}}}],["sub",{"_index":2419,"t":{"514":{"position":[[142,3]]}}}],["subject",{"_index":1758,"t":{"239":{"position":[[3014,7],[3394,7]]},"294":{"position":[[733,9]]},"490":{"position":[[46,7]]}}}],["sublicens",{"_index":1768,"t":{"239":{"position":[[3278,11]]}}}],["submiss",{"_index":1802,"t":{"239":{"position":[[6318,10]]}}}],["submit",{"_index":57,"t":{"6":{"position":[[184,10]]},"8":{"position":[[90,9]]},"10":{"position":[[264,9]]},"239":{"position":[[2112,9],[2233,6],[2311,11],[3937,10],[6417,9]]}}}],["subscrib",{"_index":658,"t":{"68":{"position":[[35,9]]}}}],["subsequ",{"_index":249,"t":{"18":{"position":[[412,10]]},"218":{"position":[[158,10]]},"239":{"position":[[2940,12]]},"415":{"position":[[536,10]]},"1033":{"position":[[210,10]]}}}],["substitut",{"_index":2004,"t":{"302":{"position":[[431,12]]},"308":{"position":[[8,10],[477,12],[603,12],[1162,14],[1384,13],[1626,12],[1785,11],[2612,13],[2792,10]]}}}],["succe",{"_index":1956,"t":{"294":{"position":[[630,8]]}}}],["succeed",{"_index":2626,"t":{"646":{"position":[[337,9]]},"650":{"position":[[301,10]]}}}],["success",{"_index":1538,"t":{"190":{"position":[[1660,11]]},"204":{"position":[[1737,10]]},"253":{"position":[[3,11]]},"259":{"position":[[3,11]]},"265":{"position":[[3,11]]},"269":{"position":[[163,8]]},"294":{"position":[[392,11]]}}}],["successfulli",{"_index":1661,"t":{"216":{"position":[[6056,12]]}}}],["such",{"_index":169,"t":{"12":{"position":[[586,4]]},"56":{"position":[[748,4]]},"168":{"position":[[598,5],[613,4]]},"180":{"position":[[4468,4]]},"218":{"position":[[397,4]]},"229":{"position":[[774,5],[1650,4]]},"239":{"position":[[558,4],[714,4],[3318,4],[3704,4],[3767,4],[3912,4],[4287,4],[5197,4],[5566,4],[5869,4],[6156,4],[6735,4],[7780,5],[8251,4],[8307,4],[8615,4],[8880,4],[8929,4]]},"296":{"position":[[1271,4]]},"514":{"position":[[811,4]]},"524":{"position":[[1071,4]]},"734":{"position":[[151,5]]},"811":{"position":[[324,4]]},"817":{"position":[[103,5]]},"849":{"position":[[109,4]]},"851":{"position":[[120,4]]},"1074":{"position":[[101,4]]},"1078":{"position":[[545,4]]},"1132":{"position":[[326,5]]},"1159":{"position":[[1499,4]]}}}],["sudo",{"_index":874,"t":{"94":{"position":[[234,4]]}}}],["suffic",{"_index":1202,"t":{"148":{"position":[[624,8]]}}}],["suffici",{"_index":1186,"t":{"146":{"position":[[3231,10]]},"229":{"position":[[2411,10]]}}}],["suffix",{"_index":1856,"t":{"245":{"position":[[132,7]]},"282":{"position":[[54,8]]},"330":{"position":[[54,8]]},"394":{"position":[[54,8]]},"413":{"position":[[647,7]]},"437":{"position":[[54,8]]},"467":{"position":[[54,8]]},"524":{"position":[[1301,8]]}}}],["suit",{"_index":405,"t":{"42":{"position":[[393,6]]},"803":{"position":[[839,6]]}}}],["suitabl",{"_index":2846,"t":{"811":{"position":[[4508,8]]}}}],["sum",{"_index":2512,"t":{"560":{"position":[[609,4]]}}}],["summar",{"_index":430,"t":{"46":{"position":[[20,10]]}}}],["summari",{"_index":1126,"t":{"138":{"position":[[2378,7]]},"216":{"position":[[1813,7],[3841,7]]},"235":{"position":[[1376,7]]},"417":{"position":[[272,7],[380,8]]},"419":{"position":[[420,7],[1153,7],[1255,8]]},"421":{"position":[[1232,8]]}}}],["superced",{"_index":2351,"t":{"447":{"position":[[526,11]]}}}],["supersed",{"_index":1805,"t":{"239":{"position":[[6625,9]]}}}],["suppli",{"_index":2563,"t":{"598":{"position":[[343,8],[383,8]]}}}],["support",{"_index":474,"t":{"52":{"position":[[49,9]]},"104":{"position":[[121,10]]},"108":{"position":[[10,7],[407,7],[523,7]]},"116":{"position":[[87,8]]},"188":{"position":[[322,8]]},"216":{"position":[[197,7]]},"220":{"position":[[185,8]]},"239":{"position":[[8488,8]]},"486":{"position":[[63,9]]},"658":{"position":[[1131,8]]}}}],["sure",{"_index":62,"t":{"6":{"position":[[233,4]]},"10":{"position":[[486,4]]},"110":{"position":[[638,4]]},"154":{"position":[[52,4]]},"160":{"position":[[52,4]]},"235":{"position":[[69,4]]},"271":{"position":[[299,4]]}}}],["surround",{"_index":2076,"t":{"308":{"position":[[567,8]]}}}],["switch",{"_index":1407,"t":{"180":{"position":[[1313,6]]}}}],["sync",{"_index":962,"t":{"110":{"position":[[325,4],[421,4]]},"626":{"position":[[640,4],[1007,4],[1133,4],[1271,4],[1467,4],[2105,4]]},"801":{"position":[[1262,4]]},"1007":{"position":[[526,4],[691,4],[940,4],[1101,4],[1275,4]]},"1021":{"position":[[100,4],[421,4]]}}}],["sync/parti",{"_index":3012,"t":{"1007":{"position":[[498,12]]}}}],["synchron",{"_index":2246,"t":{"382":{"position":[[118,13]]}}}],["system",{"_index":67,"t":{"6":{"position":[[354,6]]},"12":{"position":[[58,7],[877,6]]},"14":{"position":[[142,7],[186,7]]},"229":{"position":[[442,6]]},"239":{"position":[[2523,8],[2551,7]]},"318":{"position":[[78,6]]},"360":{"position":[[164,6]]},"362":{"position":[[194,6]]},"427":{"position":[[387,6]]},"457":{"position":[[77,6]]},"835":{"position":[[445,6]]},"955":{"position":[[458,6]]},"961":{"position":[[114,6]]},"1108":{"position":[[495,7]]},"1116":{"position":[[386,7]]}}}],["t",{"_index":2248,"t":{"382":{"position":[[269,2],[528,3],[614,5]]}}}],["tabl",{"_index":429,"t":{"46":{"position":[[14,5]]}}}],["tag",{"_index":3092,"t":{"1132":{"position":[[316,6]]}}}],["take",{"_index":164,"t":{"12":{"position":[[404,4],[516,5]]},"14":{"position":[[302,4]]},"18":{"position":[[232,5]]},"20":{"position":[[47,4]]},"22":{"position":[[7,4],[355,5]]},"24":{"position":[[468,4],[576,5]]},"26":{"position":[[141,4],[198,4]]},"54":{"position":[[47,4],[2004,4],[2456,4]]},"56":{"position":[[134,5]]},"58":{"position":[[63,4],[1458,4],[2451,4]]},"62":{"position":[[821,5]]},"64":{"position":[[308,4],[446,4]]},"66":{"position":[[1427,4]]},"73":{"position":[[146,4]]},"118":{"position":[[77,4]]},"124":{"position":[[484,4],[1241,5],[2279,5]]},"130":{"position":[[189,4],[522,4]]},"132":{"position":[[277,5]]},"136":{"position":[[218,5],[590,4]]},"160":{"position":[[315,4]]},"170":{"position":[[701,4]]},"180":{"position":[[1845,5],[1971,5],[2104,5]]},"198":{"position":[[229,6],[873,6],[1215,5]]},"200":{"position":[[339,5]]},"202":{"position":[[862,5]]},"227":{"position":[[529,4]]},"233":{"position":[[52,6]]},"502":{"position":[[636,5],[717,5],[841,5]]},"510":{"position":[[294,5]]},"799":{"position":[[886,4]]},"999":{"position":[[0,5]]},"1015":{"position":[[0,5]]},"1157":{"position":[[272,4]]}}}],["taken",{"_index":223,"t":{"14":{"position":[[687,6]]},"16":{"position":[[272,6]]},"130":{"position":[[65,5]]},"202":{"position":[[441,5]]},"208":{"position":[[530,6]]},"514":{"position":[[316,5]]},"554":{"position":[[180,6]]},"811":{"position":[[2061,5]]},"835":{"position":[[787,5]]}}}],["talk",{"_index":555,"t":{"58":{"position":[[384,4],[479,4]]}}}],["tandem",{"_index":1914,"t":{"271":{"position":[[460,6]]}}}],["target",{"_index":748,"t":{"78":{"position":[[107,6]]},"210":{"position":[[1016,6]]},"214":{"position":[[309,6],[909,6],[1297,6]]},"216":{"position":[[1782,6],[4750,6],[5209,6]]},"413":{"position":[[181,6]]},"502":{"position":[[111,8]]},"556":{"position":[[474,6],[532,6]]},"716":{"position":[[195,6]]},"779":{"position":[[271,7]]},"917":{"position":[[151,6]]},"931":{"position":[[316,7]]},"941":{"position":[[310,7]]}}}],["target(",{"_index":2948,"t":{"917":{"position":[[288,9]]}}}],["target/receiv",{"_index":2507,"t":{"556":{"position":[[416,16]]}}}],["target_scor",{"_index":1627,"t":{"212":{"position":[[649,12],[910,12],[1251,12],[1422,12]]},"214":{"position":[[150,12],[413,12],[473,12],[532,12],[678,12],[781,12],[1140,13],[1229,13]]},"216":{"position":[[4450,12],[4600,12],[4854,12],[4914,12],[5052,13],[5141,13]]}}}],["task",{"_index":257,"t":{"18":{"position":[[721,5]]},"40":{"position":[[267,5]]},"42":{"position":[[665,5]]},"186":{"position":[[125,5]]},"744":{"position":[[67,4]]},"843":{"position":[[67,4]]},"905":{"position":[[121,4],[305,4],[1530,4]]},"1140":{"position":[[43,5]]}}}],["tcp",{"_index":1044,"t":{"124":{"position":[[926,3]]},"198":{"position":[[1047,3]]},"229":{"position":[[723,3]]},"255":{"position":[[157,3]]},"276":{"position":[[4,3]]},"294":{"position":[[351,3]]},"298":{"position":[[945,3],[1852,3]]},"318":{"position":[[4,3]]},"360":{"position":[[4,3]]},"362":{"position":[[4,3]]},"364":{"position":[[4,3]]},"380":{"position":[[4,3]]},"427":{"position":[[4,3],[95,3]]},"453":{"position":[[4,3]]},"457":{"position":[[4,3]]},"642":{"position":[[862,3]]}}}],["tcp/ip",{"_index":1985,"t":{"298":{"position":[[732,6]]},"835":{"position":[[584,6]]},"959":{"position":[[81,6]]},"961":{"position":[[28,6]]}}}],["team",{"_index":103,"t":{"10":{"position":[[96,4]]}}}],["techniqu",{"_index":1546,"t":{"194":{"position":[[853,11]]}}}],["technolog",{"_index":452,"t":{"48":{"position":[[510,10]]},"160":{"position":[[345,13]]}}}],["tell",{"_index":1065,"t":{"128":{"position":[[631,5]]},"130":{"position":[[131,5]]},"132":{"position":[[444,5]]},"138":{"position":[[71,5],[1655,5],[1908,4]]},"156":{"position":[[1713,5]]},"180":{"position":[[741,5],[4410,4]]},"206":{"position":[[718,5]]},"229":{"position":[[1918,5]]}}}],["temporarili",{"_index":1932,"t":{"284":{"position":[[353,11]]}}}],["term",{"_index":196,"t":{"14":{"position":[[214,6]]},"28":{"position":[[428,4]]},"60":{"position":[[65,5]]},"156":{"position":[[506,5]]},"198":{"position":[[79,6]]},"239":{"position":[[41,5],[3029,5],[3409,5],[6062,5],[6495,5],[6556,5],[6649,5]]},"308":{"position":[[2603,5]]},"312":{"position":[[461,4]]},"686":{"position":[[590,4]]}}}],["termin",{"_index":347,"t":{"28":{"position":[[316,8]]},"30":{"position":[[85,10]]},"38":{"position":[[261,12]]},"54":{"position":[[676,12],[1634,11],[1902,11],[1970,12]]},"58":{"position":[[156,12],[1362,11],[1424,12],[2349,11],[2414,15]]},"62":{"position":[[316,10],[951,11]]},"66":{"position":[[67,12],[373,9],[419,12],[497,12]]},"84":{"position":[[534,10]]},"88":{"position":[[182,12],[493,12],[511,11],[762,12],[944,11],[1172,12],[1190,11],[1394,10],[1653,11],[1920,12]]},"126":{"position":[[881,11]]},"134":{"position":[[1156,11]]},"138":{"position":[[1568,9],[2163,8],[2283,8]]},"142":{"position":[[318,8]]},"156":{"position":[[2063,11]]},"182":{"position":[[1950,9]]},"190":{"position":[[1570,11]]},"200":{"position":[[603,11]]},"202":{"position":[[593,11],[685,11]]},"208":{"position":[[2120,11]]},"210":{"position":[[44,11],[125,11],[662,11]]},"214":{"position":[[116,11]]},"216":{"position":[[41,11],[125,11],[1512,9],[3733,11],[3809,11],[3889,12],[4291,11],[4684,11]]},"224":{"position":[[398,9]]},"229":{"position":[[2595,10],[2622,9]]},"231":{"position":[[107,8]]},"235":{"position":[[116,9],[134,8],[305,8],[517,9],[711,9],[880,10],[916,9],[983,9],[1278,9],[1572,9],[1686,9],[1780,8]]},"239":{"position":[[4262,9]]},"300":{"position":[[264,11],[299,10]]},"306":{"position":[[3991,8]]},"382":{"position":[[568,10]]},"508":{"position":[[425,11],[474,11],[523,9]]},"566":{"position":[[115,11],[439,12]]},"568":{"position":[[1064,10],[1109,11]]},"572":{"position":[[444,9],[540,10]]},"602":{"position":[[150,12],[984,11]]},"614":{"position":[[159,12],[875,11]]},"752":{"position":[[101,10],[172,11]]},"781":{"position":[[235,12],[279,11],[312,9]]},"801":{"position":[[502,11],[649,11],[776,10],[3258,11],[3583,10],[3884,10]]},"859":{"position":[[103,10],[171,11]]},"923":{"position":[[312,11]]},"963":{"position":[[278,12]]},"1049":{"position":[[432,11]]},"1120":{"position":[[221,11]]},"1126":{"position":[[10,9],[99,11],[208,10],[252,9]]},"1132":{"position":[[136,11]]},"1140":{"position":[[10,9]]},"1161":{"position":[[133,12]]}}}],["terminate_tri",{"_index":1121,"t":{"138":{"position":[[1868,16]]}}}],["terminatetri",{"_index":2458,"t":{"526":{"position":[[922,14]]},"572":{"position":[[399,17]]},"578":{"position":[[24,14]]},"580":{"position":[[22,14]]}}}],["terminatetrial(terminatetrialrequest",{"_index":2531,"t":{"572":{"position":[[94,37]]}}}],["terminatetrialrepli",{"_index":2532,"t":{"572":{"position":[[140,21]]},"580":{"position":[[56,19]]}}}],["terminatetrialrequest",{"_index":2543,"t":{"578":{"position":[[58,21]]}}}],["terminolog",{"_index":1039,"t":{"124":{"position":[[637,11]]},"198":{"position":[[777,11]]},"218":{"position":[[270,11]]}}}],["test",{"_index":1621,"t":{"210":{"position":[[1102,4]]},"218":{"position":[[75,4]]},"222":{"position":[[20,4]]},"298":{"position":[[1875,6]]},"409":{"position":[[146,5]]},"548":{"position":[[269,7]]},"638":{"position":[[55,4]]},"803":{"position":[[1457,4]]}}}],["text",{"_index":22,"t":{"2":{"position":[[302,5]]},"158":{"position":[[12,4]]},"239":{"position":[[5039,4],[5353,4],[5835,4]]},"413":{"position":[[1009,5],[1375,5]]},"415":{"position":[[776,4]]},"417":{"position":[[223,4]]},"419":{"position":[[1111,4]]},"421":{"position":[[1023,4]]}}}],["th",{"_index":2201,"t":{"350":{"position":[[1020,2]]},"352":{"position":[[200,2]]}}}],["that'",{"_index":85,"t":{"8":{"position":[[261,6]]},"90":{"position":[[922,6]]},"174":{"position":[[539,6]]}}}],["that'll",{"_index":2887,"t":{"831":{"position":[[476,7]]}}}],["the.env",{"_index":1060,"t":{"126":{"position":[[1122,7]]},"200":{"position":[[844,7]]}}}],["them=p1_stat",{"_index":1584,"t":{"206":{"position":[[537,18]]},"208":{"position":[[1963,16]]},"216":{"position":[[2635,18],[3576,16]]}}}],["them=p2_stat",{"_index":1581,"t":{"206":{"position":[[479,16]]},"208":{"position":[[1905,16]]},"216":{"position":[[2577,16],[3518,16]]}}}],["theme",{"_index":1369,"t":{"178":{"position":[[458,5],[573,10]]}}}],["theme={them",{"_index":1379,"t":{"178":{"position":[[726,14]]}}}],["themeprovid",{"_index":1367,"t":{"178":{"position":[[410,15],[711,14],[749,16]]}}}],["themselv",{"_index":1082,"t":{"132":{"position":[[670,10]]},"144":{"position":[[176,10]]},"148":{"position":[[122,10]]},"732":{"position":[[127,11]]},"811":{"position":[[4345,11]]},"823":{"position":[[168,11]]}}}],["theori",{"_index":1821,"t":{"239":{"position":[[7674,7]]}}}],["there'",{"_index":444,"t":{"48":{"position":[[231,7]]}}}],["therefor",{"_index":770,"t":{"80":{"position":[[669,9]]},"118":{"position":[[50,9]]},"308":{"position":[[490,9]]},"366":{"position":[[187,9]]},"500":{"position":[[1089,9]]},"1029":{"position":[[519,9]]},"1136":{"position":[[511,9]]}}}],["thereof",{"_index":1746,"t":{"239":{"position":[[1911,8],[2081,8],[4404,7],[8418,8]]}}}],["they'r",{"_index":231,"t":{"16":{"position":[[215,7]]}}}],["thing",{"_index":1197,"t":{"148":{"position":[[222,7]]},"164":{"position":[[246,7]]},"180":{"position":[[401,6]]},"182":{"position":[[24,7]]},"190":{"position":[[1050,5]]},"510":{"position":[[344,7]]}}}],["think",{"_index":42,"t":{"4":{"position":[[208,5]]},"10":{"position":[[145,8]]},"186":{"position":[[44,8]]},"198":{"position":[[93,5],[719,6]]},"212":{"position":[[806,5]]}}}],["third",{"_index":1795,"t":{"239":{"position":[[5571,5]]}}}],["this.doact",{"_index":2782,"t":{"775":{"position":[[641,13]]}}}],["this.envnam",{"_index":2786,"t":{"779":{"position":[[384,14]]}}}],["those",{"_index":90,"t":{"8":{"position":[[388,5]]},"56":{"position":[[120,5]]},"124":{"position":[[551,5]]},"198":{"position":[[658,5]]},"227":{"position":[[356,5]]},"235":{"position":[[164,5]]},"239":{"position":[[3733,5],[4928,5],[5225,5]]}}}],["thread",{"_index":2943,"t":{"905":{"position":[[560,6]]}}}],["three",{"_index":507,"t":{"54":{"position":[[168,5]]},"58":{"position":[[109,5],[219,5]]},"146":{"position":[[2929,5]]},"174":{"position":[[95,5]]},"180":{"position":[[3127,5]]},"202":{"position":[[160,5]]},"382":{"position":[[248,5]]},"482":{"position":[[347,5]]}}}],["through",{"_index":383,"t":{"34":{"position":[[85,7]]},"42":{"position":[[336,7]]},"54":{"position":[[427,7],[2189,7]]},"60":{"position":[[216,7],[591,7]]},"90":{"position":[[1667,7]]},"98":{"position":[[138,7]]},"124":{"position":[[289,7]]},"128":{"position":[[1031,7]]},"138":{"position":[[3666,7]]},"140":{"position":[[38,7]]},"154":{"position":[[69,7]]},"160":{"position":[[69,7]]},"216":{"position":[[1877,7]]},"229":{"position":[[733,7]]},"239":{"position":[[127,7]]},"241":{"position":[[53,8]]},"316":{"position":[[57,7]]},"358":{"position":[[55,7]]},"413":{"position":[[95,7],[1137,7]]},"425":{"position":[[58,7]]},"451":{"position":[[52,7]]},"512":{"position":[[631,7]]},"756":{"position":[[43,7]]},"863":{"position":[[43,7]]},"875":{"position":[[28,7]]},"879":{"position":[[28,7]]}}}],["throughout",{"_index":2450,"t":{"524":{"position":[[972,10]]},"530":{"position":[[57,10]]}}}],["throw",{"_index":1408,"t":{"180":{"position":[[1412,5]]}}}],["thu",{"_index":263,"t":{"18":{"position":[[888,4]]},"26":{"position":[[936,4]]},"40":{"position":[[434,4]]},"146":{"position":[[682,4]]},"148":{"position":[[102,4]]},"186":{"position":[[540,4]]},"296":{"position":[[43,4],[1005,4],[1765,4]]},"298":{"position":[[578,4]]},"308":{"position":[[1618,4]]},"336":{"position":[[326,4]]},"374":{"position":[[323,4]]},"382":{"position":[[470,5],[620,4]]},"443":{"position":[[329,4]]},"473":{"position":[[316,4]]},"500":{"position":[[482,4],[1256,4]]},"514":{"position":[[156,4]]},"524":{"position":[[294,5],[1026,4]]},"799":{"position":[[921,4]]},"811":{"position":[[5526,4]]},"819":{"position":[[838,4]]},"833":{"position":[[256,5]]},"835":{"position":[[1050,4]]},"905":{"position":[[355,4]]},"1037":{"position":[[117,4]]}}}],["ti",{"_index":2209,"t":{"354":{"position":[[45,4]]}}}],["tick",{"_index":691,"t":{"71":{"position":[[853,5],[863,4],[940,4],[1038,4]]},"73":{"position":[[399,4],[910,4]]},"138":{"position":[[3110,4]]},"180":{"position":[[1741,5]]},"190":{"position":[[1527,4]]},"480":{"position":[[433,4]]},"508":{"position":[[515,4]]},"526":{"position":[[1038,5]]},"530":{"position":[[416,4]]},"552":{"position":[[118,4]]},"554":{"position":[[133,4]]},"556":{"position":[[220,4]]},"560":{"position":[[303,4],[426,5],[460,4]]},"562":{"position":[[209,4]]},"564":{"position":[[192,4]]},"586":{"position":[[407,4]]},"618":{"position":[[580,4]]},"626":{"position":[[783,4],[990,5]]},"694":{"position":[[52,5],[388,4]]},"696":{"position":[[64,5],[951,5],[1082,5],[1232,5],[1314,5],[1388,5],[1476,4],[1569,4]]},"752":{"position":[[286,5]]},"766":{"position":[[26,4],[111,4]]},"779":{"position":[[58,5]]},"795":{"position":[[71,4]]},"801":{"position":[[445,7],[864,5],[1188,4]]},"911":{"position":[[26,4],[108,4]]},"917":{"position":[[652,4]]},"931":{"position":[[58,5]]},"941":{"position":[[58,5]]},"981":{"position":[[70,4]]},"1049":{"position":[[96,6]]}}}],["tick_id",{"_index":676,"t":{"71":{"position":[[191,8]]},"73":{"position":[[426,7]]},"530":{"position":[[82,8]]},"552":{"position":[[53,7],[109,8]]},"554":{"position":[[64,7],[120,8]]},"556":{"position":[[114,7],[211,8]]},"560":{"position":[[198,7],[290,8]]},"562":{"position":[[95,7],[196,8]]},"564":{"position":[[74,7],[179,8]]},"586":{"position":[[137,7],[386,8]]},"618":{"position":[[261,7],[563,8]]},"626":{"position":[[108,7],[770,8]]},"694":{"position":[[134,7],[379,8]]},"917":{"position":[[633,8]]},"965":{"position":[[322,8]]},"973":{"position":[[61,8]]},"977":{"position":[[57,8]]},"979":{"position":[[28,8]]},"981":{"position":[[51,8]]},"1007":{"position":[[773,8]]},"1049":{"position":[[444,8]]}}}],["tickid",{"_index":720,"t":{"73":{"position":[[943,6]]},"783":{"position":[[226,7]]},"795":{"position":[[50,7]]}}}],["tie",{"_index":1509,"t":{"186":{"position":[[659,3]]}}}],["time",{"_index":358,"t":{"30":{"position":[[607,4]]},"71":{"position":[[603,5],[816,5]]},"73":{"position":[[87,4]]},"142":{"position":[[479,5]]},"154":{"position":[[271,4]]},"158":{"position":[[725,5],[873,4]]},"210":{"position":[[1307,5],[1337,5]]},"216":{"position":[[574,5]]},"222":{"position":[[176,4]]},"245":{"position":[[193,4]]},"284":{"position":[[213,5],[287,4]]},"290":{"position":[[222,4]]},"294":{"position":[[489,6]]},"296":{"position":[[1598,6]]},"378":{"position":[[508,6]]},"413":{"position":[[708,4]]},"526":{"position":[[720,5],[1112,4]]},"530":{"position":[[121,5],[314,5],[557,4],[623,6]]},"552":{"position":[[159,4]]},"554":{"position":[[202,4]]},"562":{"position":[[266,4]]},"564":{"position":[[244,4]]},"626":{"position":[[824,4],[883,4]]},"686":{"position":[[507,5]]},"694":{"position":[[420,4]]},"724":{"position":[[349,4],[415,5]]},"754":{"position":[[236,4]]},"756":{"position":[[37,5],[223,4]]},"766":{"position":[[53,4]]},"779":{"position":[[48,4]]},"783":{"position":[[247,4],[356,4]]},"787":{"position":[[532,7]]},"795":{"position":[[79,5]]},"801":{"position":[[434,4],[1049,4],[3064,4],[3404,4]]},"861":{"position":[[238,4]]},"863":{"position":[[37,5],[231,5]]},"869":{"position":[[66,5]]},"875":{"position":[[162,4],[492,4]]},"879":{"position":[[141,4]]},"887":{"position":[[210,5]]},"889":{"position":[[133,5]]},"905":{"position":[[1377,5]]},"911":{"position":[[53,4]]},"917":{"position":[[660,5],[760,4]]},"931":{"position":[[48,4]]},"941":{"position":[[48,4]]},"965":{"position":[[341,4],[449,4]]},"973":{"position":[[80,4],[182,5]]},"975":{"position":[[265,4]]},"977":{"position":[[76,4],[349,5]]},"979":{"position":[[47,4]]},"981":{"position":[[78,5]]},"1007":{"position":[[564,4],[792,4],[1013,5],[1127,4],[1238,4]]},"1029":{"position":[[250,4]]},"1045":{"position":[[289,4],[416,4]]},"1110":{"position":[[676,4]]},"1112":{"position":[[646,4]]},"1132":{"position":[[223,4],[357,5]]},"1146":{"position":[[270,4],[319,5]]},"1148":{"position":[[288,6]]},"1157":{"position":[[137,5]]}}}],["timeout",{"_index":609,"t":{"62":{"position":[[173,8]]},"88":{"position":[[1712,7]]},"245":{"position":[[177,9]]},"269":{"position":[[105,7]]},"413":{"position":[[506,8],[692,9]]},"704":{"position":[[117,7],[261,8]]},"801":{"position":[[3315,8],[3341,8],[3661,8],[3687,8]]},"1132":{"position":[[198,8]]},"1146":{"position":[[245,8]]}}}],["timeout=1m",{"_index":1864,"t":{"245":{"position":[[302,11]]},"413":{"position":[[817,11]]}}}],["times/d",{"_index":2037,"t":{"306":{"position":[[1862,11]]}}}],["timestamp",{"_index":1961,"t":{"296":{"position":[[257,9]]},"530":{"position":[[521,10]]},"552":{"position":[[74,9],[144,10]]},"554":{"position":[[85,9],[187,10]]},"562":{"position":[[116,9],[251,10]]},"564":{"position":[[95,9],[229,10]]},"626":{"position":[[129,9],[809,10]]},"694":{"position":[[155,9],[409,10]]},"973":{"position":[[123,10],[157,9]]},"977":{"position":[[290,10],[324,9]]},"1007":{"position":[[954,10],[988,9]]},"1029":{"position":[[169,10]]},"1049":{"position":[[519,10],[553,9]]}}}],["tip",{"_index":469,"t":{"50":{"position":[[835,3]]},"66":{"position":[[328,3]]},"92":{"position":[[0,3]]},"170":{"position":[[187,3]]},"340":{"position":[[4,3]]},"482":{"position":[[0,3]]},"500":{"position":[[968,3]]}}}],["titl",{"_index":1816,"t":{"239":{"position":[[7351,6]]}}}],["tl",{"_index":2965,"t":{"955":{"position":[[146,3],[253,3],[387,3],[517,3]]},"959":{"position":[[225,3],[396,3]]}}}],["to=['an_actor_nam",{"_index":677,"t":{"71":{"position":[[203,21]]}}}],["to=['pedestrian",{"_index":733,"t":{"76":{"position":[[240,20]]}}}],["to=[p1.actor_name])environment_session.add_reward(valu",{"_index":1525,"t":{"188":{"position":[[661,56]]}}}],["to=[p1.actor_name])environment_session.add_reward(value=1",{"_index":1528,"t":{"188":{"position":[[867,58]]}}}],["to=[p2.actor_nam",{"_index":1526,"t":{"188":{"position":[[735,19],[940,19]]}}}],["to_environ",{"_index":978,"t":{"114":{"position":[[293,14]]},"116":{"position":[[1052,14]]},"488":{"position":[[630,14]]},"502":{"position":[[58,14]]}}}],["togeth",{"_index":19,"t":{"2":{"position":[[273,8]]},"36":{"position":[[51,9]]},"73":{"position":[[105,8]]},"130":{"position":[[724,8]]},"140":{"position":[[334,8]]},"231":{"position":[[29,9]]},"235":{"position":[[293,9]]},"354":{"position":[[63,8]]}}}],["token",{"_index":1204,"t":{"150":{"position":[[55,6],[473,5],[530,5],[602,5]]},"249":{"position":[[15,5],[138,5],[198,5],[222,6]]},"263":{"position":[[125,5]]},"292":{"position":[[830,6],[842,5],[1046,5],[1189,6],[1239,5]]},"298":{"position":[[2853,6],[2993,5]]},"334":{"position":[[15,5],[138,5],[198,5],[222,6]]},"370":{"position":[[15,5],[138,5],[198,5],[222,6]]},"401":{"position":[[15,5],[72,5],[96,6],[150,5]]},"441":{"position":[[15,5],[138,5],[198,5],[222,6]]},"463":{"position":[[50,7]]},"471":{"position":[[15,5],[138,5],[198,5],[222,6]]},"480":{"position":[[143,5],[273,5],[313,5],[555,5],[595,5]]},"636":{"position":[[392,5],[668,5],[720,5],[874,5],[926,5]]},"811":{"position":[[5180,5],[6039,6]]},"831":{"position":[[1067,5],[1107,5],[1177,6],[1220,5],[1369,6]]},"1100":{"position":[[666,5],[706,5],[776,6],[819,5],[968,6]]}}}],["took",{"_index":1080,"t":{"132":{"position":[[370,5]]}}}],["tool",{"_index":959,"t":{"110":{"position":[[75,5],[680,4]]},"194":{"position":[[672,5]]},"233":{"position":[[273,4]]},"413":{"position":[[1175,4]]},"500":{"position":[[1014,5]]},"510":{"position":[[250,5],[268,4]]},"534":{"position":[[479,6]]},"732":{"position":[[659,4]]},"734":{"position":[[214,4]]}}}],["top",{"_index":415,"t":{"44":{"position":[[3,3]]},"136":{"position":[[426,3]]},"204":{"position":[[864,3]]},"304":{"position":[[156,3],[202,3]]},"500":{"position":[[183,3]]},"510":{"position":[[375,3]]},"803":{"position":[[226,3],[280,3]]},"871":{"position":[[122,3]]},"993":{"position":[[122,3]]},"1005":{"position":[[122,3]]},"1047":{"position":[[122,3]]},"1051":{"position":[[122,3]]},"1055":{"position":[[122,3]]}}}],["topolog",{"_index":1220,"t":{"156":{"position":[[375,8]]}}}],["tort",{"_index":1822,"t":{"239":{"position":[[7693,4]]}}}],["total",{"_index":2675,"t":{"672":{"position":[[447,5]]}}}],["touch",{"_index":102,"t":{"10":{"position":[[81,5]]}}}],["trace",{"_index":1922,"t":{"280":{"position":[[100,6]]},"306":{"position":[[787,6],[834,6],[905,6],[1030,6],[1399,6],[1456,6],[1522,7]]},"328":{"position":[[100,6],[129,5]]},"392":{"position":[[100,6],[129,5]]},"435":{"position":[[100,6],[129,5]]},"465":{"position":[[100,6],[129,5]]},"819":{"position":[[313,5],[567,5]]},"1076":{"position":[[346,6]]}}}],["track",{"_index":1559,"t":{"202":{"position":[[398,5]]},"204":{"position":[[493,5],[536,5],[1424,5],[1641,5]]},"206":{"position":[[114,6]]},"208":{"position":[[678,5],[1043,5]]},"216":{"position":[[2179,5],[3060,5]]},"239":{"position":[[2542,8]]},"905":{"position":[[30,8],[173,5],[717,6]]},"1161":{"position":[[238,9]]}}}],["trade",{"_index":1807,"t":{"239":{"position":[[6820,5]]}}}],["trademark",{"_index":1789,"t":{"239":{"position":[[4849,10],[6758,11],[6833,11]]}}}],["train",{"_index":420,"t":{"44":{"position":[[275,8],[424,7]]},"186":{"position":[[267,5]]},"312":{"position":[[254,9]]},"427":{"position":[[354,10]]},"558":{"position":[[103,8]]},"560":{"position":[[72,8]]},"686":{"position":[[761,9]]},"803":{"position":[[1007,9]]},"1100":{"position":[[1155,9],[1438,9],[1620,9]]},"1110":{"position":[[16,8],[128,5]]},"1112":{"position":[[16,8],[101,5]]},"1134":{"position":[[14,5]]},"1136":{"position":[[146,9],[227,9],[295,9],[390,9]]},"1138":{"position":[[16,9]]},"1140":{"position":[[20,9]]},"1142":{"position":[[15,9],[110,9]]},"1144":{"position":[[30,8],[99,8],[130,8]]},"1146":{"position":[[23,8],[48,8],[165,8]]},"1148":{"position":[[38,5],[106,5]]},"1152":{"position":[[14,5],[261,8]]},"1163":{"position":[[370,5],[676,8],[828,8]]}}}],["trainer",{"_index":3095,"t":{"1136":{"position":[[525,7]]}}}],["trainertrialsess",{"_index":3137,"t":{"1165":{"position":[[419,19]]}}}],["trajectori",{"_index":2327,"t":{"423":{"position":[[80,10]]}}}],["transfer",{"_index":187,"t":{"12":{"position":[[904,8]]},"239":{"position":[[3679,8]]}}}],["transform",{"_index":1731,"t":{"239":{"position":[[1062,14]]}}}],["transient",{"_index":2125,"t":{"312":{"position":[[150,9],[264,9]]},"324":{"position":[[78,9]]},"887":{"position":[[123,9]]},"889":{"position":[[82,9]]},"891":{"position":[[49,9]]},"895":{"position":[[311,9]]},"1029":{"position":[[529,11]]}}}],["translat",{"_index":1312,"t":{"170":{"position":[[434,9]]},"239":{"position":[[1080,11]]},"526":{"position":[[155,9]]}}}],["transpar",{"_index":2401,"t":{"504":{"position":[[42,11]]}}}],["travers",{"_index":402,"t":{"42":{"position":[[348,10]]}}}],["treat",{"_index":311,"t":{"24":{"position":[[951,6]]}}}],["tri",{"_index":1012,"t":{"120":{"position":[[196,6]]},"194":{"position":[[830,3]]},"407":{"position":[[208,5]]},"574":{"position":[[745,3]]},"750":{"position":[[698,3]]},"857":{"position":[[925,3]]},"995":{"position":[[371,3]]},"1011":{"position":[[374,3]]}}}],["trial",{"_index":152,"t":{"12":{"position":[[173,8]]},"14":{"position":[[48,6]]},"18":{"position":[[547,7],[677,6],[738,6]]},"24":{"position":[[259,7],[1000,5],[1066,5]]},"28":{"position":[[0,6],[109,5],[194,6],[436,6]]},"30":{"position":[[0,6],[55,5],[204,6],[623,6],[720,5],[841,5]]},"32":{"position":[[8,6]]},"36":{"position":[[95,6]]},"38":{"position":[[124,7],[163,7],[233,7],[255,5]]},"40":{"position":[[93,7],[223,6],[284,6]]},"42":{"position":[[164,7],[214,5],[621,6],[682,6]]},"44":{"position":[[167,5],[302,5]]},"46":{"position":[[485,5],[515,5],[544,5],[663,5],[683,5],[761,5],[1080,5],[1106,5],[1141,5]]},"50":{"position":[[78,6],[143,5]]},"54":{"position":[[127,6],[373,6],[467,5],[570,5],[624,5],[756,5],[957,5],[1024,5],[1351,5],[1541,5],[1628,5]]},"56":{"position":[[774,5]]},"58":{"position":[[692,5],[964,5],[1627,5],[1916,5]]},"60":{"position":[[835,5],[1366,5]]},"62":{"position":[[37,5],[87,6],[297,5],[937,5]]},"64":{"position":[[0,6]]},"66":{"position":[[42,6],[383,5],[516,5],[527,5],[600,5],[633,6],[680,5],[711,5],[770,5],[805,6]]},"68":{"position":[[71,6],[303,5],[459,5]]},"71":{"position":[[833,6],[1100,5]]},"73":{"position":[[191,5]]},"76":{"position":[[76,5],[945,5]]},"78":{"position":[[205,5]]},"80":{"position":[[16,5],[170,5],[269,5],[350,5],[639,6],[654,5],[712,7],[783,5],[975,5],[1093,5]]},"82":{"position":[[20,6],[108,5],[155,5]]},"84":{"position":[[4,5],[87,5],[129,5],[185,5],[225,5],[457,5]]},"86":{"position":[[15,5]]},"88":{"position":[[0,5],[61,5],[160,5],[467,5],[624,5],[740,5],[891,5],[1380,5],[1494,5],[1533,5],[1579,5],[1822,5],[1906,5],[2005,5]]},"90":{"position":[[115,5],[148,6],[256,6],[314,5],[373,5],[397,5],[490,6],[580,5],[955,6],[1396,5],[1679,5]]},"96":{"position":[[145,5],[298,7],[479,5],[516,6]]},"98":{"position":[[4,5]]},"100":{"position":[[95,5],[354,5],[371,5]]},"104":{"position":[[75,7],[187,6],[202,5],[227,5],[391,6],[564,5]]},"114":{"position":[[43,5]]},"116":{"position":[[115,5],[783,5],[804,5]]},"120":{"position":[[412,5]]},"128":{"position":[[392,6]]},"134":{"position":[[251,5],[1392,6]]},"136":{"position":[[1567,6]]},"138":{"position":[[130,6],[187,6],[270,6],[314,6],[393,6],[431,5],[1393,5],[1469,5],[1519,6],[1534,5],[1582,5],[1642,5],[1687,5],[1785,6],[1796,5],[1857,5],[1949,5],[3177,5],[3230,6],[3286,5]]},"146":{"position":[[264,5],[1996,5],[2345,5]]},"148":{"position":[[336,5]]},"156":{"position":[[33,7],[225,6],[304,6],[1072,5],[2003,6],[2057,5],[2146,5],[2240,5],[2256,5]]},"164":{"position":[[40,6],[103,5],[176,5]]},"170":{"position":[[1905,5],[2024,5]]},"172":{"position":[[63,5]]},"174":{"position":[[487,5]]},"180":{"position":[[793,7],[1905,5],[2905,5],[3263,5],[4455,5]]},"182":{"position":[[44,6],[59,6],[1313,5]]},"202":{"position":[[1012,6]]},"204":{"position":[[1700,6]]},"206":{"position":[[16,6]]},"208":{"position":[[1683,5],[2031,5],[2114,5]]},"210":{"position":[[111,6]]},"212":{"position":[[435,5],[1056,6],[1186,5],[1356,5]]},"214":{"position":[[135,5],[660,6],[893,5]]},"216":{"position":[[16,5],[60,5],[144,6],[176,5],[277,5],[507,5],[709,5],[733,6],[780,5],[1124,5],[1140,5],[1314,5],[1417,6],[1526,6],[1547,5],[1601,5],[3644,5],[3727,5],[4970,5],[5358,5],[5440,5],[5784,5],[5800,5],[5974,5]]},"218":{"position":[[93,6]]},"227":{"position":[[642,6]]},"229":{"position":[[1380,6],[1514,5]]},"235":{"position":[[382,6],[478,5],[731,5],[809,5],[833,6],[895,6],[1711,5],[1735,5],[1822,6],[1846,5]]},"298":{"position":[[1363,5]]},"354":{"position":[[83,7]]},"360":{"position":[[32,5]]},"366":{"position":[[68,7],[248,7],[263,5],[341,5],[418,5]]},"368":{"position":[[170,7]]},"378":{"position":[[37,5],[83,5],[183,6],[317,6]]},"390":{"position":[[20,6],[35,5],[115,7],[233,6]]},"411":{"position":[[4,5],[80,5],[141,5],[273,5],[344,6],[365,5],[406,6],[422,5],[456,6],[490,5],[524,6],[556,5]]},"413":{"position":[[188,5]]},"415":{"position":[[36,6],[55,5],[324,6],[460,5],[572,5],[858,6],[865,5],[896,6],[960,6],[978,5],[1067,6],[1120,6],[1151,6],[1171,5]]},"417":{"position":[[36,6],[55,5],[421,5],[455,5]]},"419":{"position":[[53,7],[817,6],[1350,5]]},"421":{"position":[[38,6],[627,6],[709,5],[888,7],[1092,7],[1290,9],[1337,5],[1369,5],[1436,6]]},"423":{"position":[[8,5],[116,6],[218,5],[520,5]]},"425":{"position":[[4,5]]},"427":{"position":[[47,5],[129,5],[206,5],[244,5]]},"431":{"position":[[112,6]]},"433":{"position":[[69,5]]},"439":{"position":[[114,5],[193,5],[368,5]]},"443":{"position":[[66,5],[113,5]]},"445":{"position":[[74,5]]},"447":{"position":[[357,7],[371,6],[418,6],[433,6]]},"459":{"position":[[38,5]]},"463":{"position":[[44,5]]},"478":{"position":[[5,7],[52,7],[71,6],[110,5],[127,5],[203,5]]},"480":{"position":[[7,6],[54,5],[137,5],[160,6],[225,5],[267,5],[307,5],[549,5],[589,5]]},"486":{"position":[[270,6]]},"488":{"position":[[382,5],[403,5]]},"500":{"position":[[400,7],[471,6],[525,5],[854,5],[1233,5],[1270,5],[1389,5],[1446,6]]},"502":{"position":[[226,5],[416,5],[1030,5]]},"506":{"position":[[107,5]]},"508":{"position":[[16,5],[98,5],[191,5],[252,6],[302,5],[444,6],[715,6]]},"510":{"position":[[170,7],[563,6],[577,5]]},"516":{"position":[[47,5],[57,5],[199,5],[218,6]]},"520":{"position":[[143,7]]},"524":{"position":[[152,5],[985,5],[1003,5],[1098,5]]},"530":{"position":[[170,6],[242,6],[678,6]]},"540":{"position":[[24,5],[35,5],[328,6],[432,6],[493,6],[651,6]]},"542":{"position":[[43,5]]},"544":{"position":[[42,5]]},"546":{"position":[[36,5]]},"548":{"position":[[431,6]]},"550":{"position":[[39,6],[200,6]]},"552":{"position":[[291,6]]},"554":{"position":[[325,6]]},"562":{"position":[[56,6],[499,6],[934,6]]},"564":{"position":[[40,6],[481,6],[760,6]]},"566":{"position":[[33,6],[256,5],[306,5],[421,5],[456,5],[588,5],[632,6]]},"568":{"position":[[490,5],[722,5],[843,5],[1126,6]]},"570":{"position":[[232,7]]},"572":{"position":[[377,6],[483,5],[607,6],[624,5],[722,5],[792,7],[841,7]]},"574":{"position":[[213,5],[265,5],[382,6],[421,6],[476,5],[557,6],[613,6],[644,5],[683,6]]},"576":{"position":[[126,6],[156,5]]},"582":{"position":[[203,5]]},"584":{"position":[[90,5],[102,6],[139,7],[175,5],[191,5],[316,7]]},"586":{"position":[[39,6],[291,6],[348,6],[379,6],[419,6],[462,5],[499,5],[562,6],[856,6]]},"588":{"position":[[179,5],[324,5],[375,5],[388,5]]},"590":{"position":[[173,6],[237,6],[283,5]]},"594":{"position":[[273,7],[318,5],[540,5]]},"596":{"position":[[278,7],[290,5],[381,6],[474,5]]},"598":{"position":[[35,6],[79,6],[270,5],[298,5]]},"602":{"position":[[597,6],[704,5],[838,6],[895,6]]},"604":{"position":[[512,6],[633,6],[721,6],[777,6]]},"606":{"position":[[52,6],[93,5],[205,6],[216,5],[362,6],[573,6],[643,6],[733,6],[849,5]]},"608":{"position":[[52,6],[107,6],[219,6],[304,6],[315,5],[509,5],[592,5]]},"610":{"position":[[253,7],[295,6],[352,7],[513,5]]},"612":{"position":[[201,6],[245,6],[436,5],[464,5]]},"614":{"position":[[546,6],[654,5],[729,6],[786,6]]},"616":{"position":[[500,6],[634,6],[655,5],[794,6],[848,6],[904,6]]},"618":{"position":[[52,6],[114,6],[125,5],[401,6],[497,6],[685,6],[808,6]]},"620":{"position":[[52,6],[148,6]]},"622":{"position":[[161,5],[258,5]]},"624":{"position":[[202,6],[229,6],[403,6],[420,5],[448,5],[535,6]]},"626":{"position":[[966,5],[1928,5],[1956,6],[1990,6]]},"630":{"position":[[65,5],[173,5]]},"632":{"position":[[166,5],[223,6],[240,5],[272,5],[349,6]]},"688":{"position":[[75,5]]},"690":{"position":[[71,7],[547,6],[707,7],[715,6],[840,5],[883,5],[1040,5],[1186,5],[1208,5],[1331,6],[1380,5]]},"692":{"position":[[37,5],[223,6],[253,5],[315,6],[381,6],[414,6]]},"694":{"position":[[35,5],[330,6],[372,6],[447,5]]},"696":{"position":[[47,5],[165,5]]},"704":{"position":[[208,5],[240,6],[298,6],[396,6]]},"708":{"position":[[311,5]]},"710":{"position":[[149,5]]},"712":{"position":[[165,6],[204,6]]},"716":{"position":[[142,5],[202,6]]},"720":{"position":[[130,5],[163,5]]},"724":{"position":[[15,5],[502,6]]},"730":{"position":[[24,5]]},"732":{"position":[[4,5],[115,5],[409,5],[470,5]]},"738":{"position":[[52,7]]},"740":{"position":[[137,6]]},"742":{"position":[[46,6],[228,7]]},"744":{"position":[[55,6],[178,5],[305,6]]},"746":{"position":[[83,6]]},"748":{"position":[[56,7]]},"750":{"position":[[22,6],[51,5],[80,5],[165,5],[248,6],[415,5],[458,5],[497,6],[539,6],[584,6],[605,6],[793,5]]},"752":{"position":[[31,6],[75,5],[257,5]]},"754":{"position":[[34,6],[78,5],[177,7],[201,6],[307,5],[334,6],[360,5]]},"756":{"position":[[55,5],[179,7],[556,5]]},"758":{"position":[[49,6],[90,5],[197,6]]},"762":{"position":[[41,6]]},"764":{"position":[[30,5],[107,6]]},"766":{"position":[[41,5]]},"768":{"position":[[33,5],[97,5]]},"770":{"position":[[56,6],[331,5]]},"773":{"position":[[357,5]]},"775":{"position":[[245,5],[330,6]]},"779":{"position":[[340,6],[668,5]]},"781":{"position":[[40,7],[95,5],[145,5],[217,5],[252,5],[395,5],[439,6],[520,5]]},"783":{"position":[[33,6],[62,5],[154,6],[219,6],[387,5]]},"787":{"position":[[160,6],[233,5],[365,5],[440,5],[637,5],[702,6],[899,5]]},"799":{"position":[[4,5],[74,6],[205,5],[305,5],[397,6],[432,5],[469,5],[569,6],[643,5],[714,6],[741,5],[835,5],[869,5],[992,5]]},"801":{"position":[[53,5],[92,6],[290,6],[462,5],[630,5],[758,5],[1006,5],[1637,6],[2261,6],[2447,7],[3123,6],[3179,5],[3245,5],[3274,5],[3570,5],[3620,5],[3803,5],[3870,5]]},"803":{"position":[[854,7]]},"805":{"position":[[35,5],[84,5],[120,5],[203,6],[214,5],[298,6],[541,5],[579,5],[671,6],[737,5],[924,5]]},"811":{"position":[[2099,5],[3765,5],[3822,5],[4110,5],[4142,6]]},"821":{"position":[[32,5]]},"823":{"position":[[4,5],[156,5],[451,5],[512,5]]},"829":{"position":[[60,7]]},"831":{"position":[[120,6]]},"837":{"position":[[46,6],[252,7]]},"843":{"position":[[55,6],[176,5],[344,6],[455,5],[477,5],[646,6],[757,5],[779,5]]},"845":{"position":[[89,6]]},"847":{"position":[[83,6]]},"849":{"position":[[82,5],[349,6],[528,5]]},"851":{"position":[[82,5],[186,5]]},"853":{"position":[[56,7]]},"855":{"position":[[82,5]]},"857":{"position":[[22,6],[160,6],[336,5],[366,5],[391,5],[452,5],[682,5],[721,6],[763,6],[808,6],[829,6],[1069,6],[1101,5],[1155,5],[1260,5],[1293,5]]},"859":{"position":[[31,6],[77,5],[275,5]]},"861":{"position":[[34,6],[80,5],[179,7],[203,6],[322,5],[349,6],[375,5]]},"863":{"position":[[55,6],[139,6],[240,5],[543,5],[644,5]]},"865":{"position":[[49,6],[88,5],[208,6]]},"869":{"position":[[72,5],[142,6]]},"873":{"position":[[56,6],[165,6],[225,5],[334,6],[418,5],[440,5],[511,5],[538,6],[564,5],[598,5]]},"875":{"position":[[40,6],[138,6],[348,6],[394,6],[513,6],[555,6],[653,5],[675,5],[708,6],[743,5],[827,6],[919,6]]},"877":{"position":[[28,6],[95,5]]},"879":{"position":[[53,6],[116,5],[152,5],[223,6]]},"883":{"position":[[85,5]]},"907":{"position":[[41,6]]},"909":{"position":[[30,5],[104,6]]},"911":{"position":[[41,5]]},"913":{"position":[[33,5],[94,5]]},"915":{"position":[[56,6],[356,5]]},"917":{"position":[[359,6]]},"919":{"position":[[98,6]]},"921":{"position":[[61,6],[274,6],[449,5],[776,5]]},"923":{"position":[[238,5],[331,6],[837,7]]},"925":{"position":[[419,5]]},"927":{"position":[[75,6]]},"929":{"position":[[47,6],[157,6]]},"931":{"position":[[385,6],[663,5]]},"933":{"position":[[98,6],[785,5]]},"935":{"position":[[357,5]]},"937":{"position":[[246,5],[331,6]]},"941":{"position":[[379,6],[710,5]]},"943":{"position":[[17,5],[63,6],[129,5],[229,5],[454,6]]},"945":{"position":[[33,6],[81,6]]},"947":{"position":[[63,6],[141,6]]},"949":{"position":[[77,5],[255,5],[342,6],[420,6]]},"963":{"position":[[40,7],[95,5],[145,5],[260,5],[295,5],[427,5],[471,6],[552,5]]},"965":{"position":[[33,6],[60,5],[163,5],[180,5],[252,6],[315,6],[480,5]]},"971":{"position":[[160,6],[233,5],[424,5],[643,6],[840,5]]},"977":{"position":[[171,5],[541,6]]},"989":{"position":[[39,5],[50,5]]},"991":{"position":[[64,6]]},"1001":{"position":[[60,5]]},"1003":{"position":[[64,6],[225,5]]},"1007":{"position":[[198,5],[593,6],[738,5],[880,5]]},"1009":{"position":[[63,6]]},"1017":{"position":[[51,6],[124,6],[220,6]]},"1019":{"position":[[229,6]]},"1021":{"position":[[298,6]]},"1045":{"position":[[38,5],[89,5],[107,6],[149,5],[168,5],[260,6],[387,6],[428,5],[535,6]]},"1049":{"position":[[31,5],[90,5],[133,5],[234,5],[396,5]]},"1078":{"position":[[44,5],[610,6]]},"1083":{"position":[[24,5],[74,5]]},"1085":{"position":[[24,5],[62,5],[97,5]]},"1087":{"position":[[24,5],[68,5],[163,5],[192,5],[262,5]]},"1089":{"position":[[306,5],[611,5]]},"1091":{"position":[[306,5],[611,5]]},"1093":{"position":[[306,5],[611,5]]},"1095":{"position":[[306,5],[458,5]]},"1097":{"position":[[306,5],[458,5],[542,6]]},"1100":{"position":[[123,6],[1360,6]]},"1102":{"position":[[158,7]]},"1108":{"position":[[27,7],[78,6],[133,6],[253,6],[367,5],[387,6],[642,5],[794,6]]},"1110":{"position":[[39,6],[172,6],[247,7],[607,6],[684,7],[736,5]]},"1112":{"position":[[39,7],[145,6],[220,7],[387,5],[577,6],[654,7],[706,5]]},"1114":{"position":[[32,7]]},"1116":{"position":[[144,6],[258,5],[278,6],[461,7],[496,6],[650,5],[705,6],[761,5],[897,5],[1064,6],[1119,7],[1239,7]]},"1118":{"position":[[40,5],[104,6],[169,6],[217,5],[265,6],[394,6]]},"1120":{"position":[[59,5],[116,7],[144,6]]},"1122":{"position":[[74,6]]},"1124":{"position":[[39,6],[83,6],[129,6]]},"1126":{"position":[[44,6],[88,6],[183,6]]},"1128":{"position":[[141,6]]},"1130":{"position":[[32,6],[92,6]]},"1132":{"position":[[78,6],[310,5]]},"1134":{"position":[[51,7]]},"1136":{"position":[[128,6],[209,6],[274,5],[344,6],[928,6],[1004,6],[1067,6],[1147,6]]},"1142":{"position":[[42,6],[73,6]]},"1146":{"position":[[84,6]]},"1148":{"position":[[28,6],[96,6],[179,5],[277,5]]},"1150":{"position":[[68,5],[112,6],[228,5]]},"1152":{"position":[[51,7],[85,6],[157,6]]},"1154":{"position":[[40,6],[138,5]]},"1159":{"position":[[97,5],[128,5],[439,5],[604,5],[621,5],[699,5],[748,5],[811,6],[872,5],[941,6],[960,6],[1208,6],[1553,5]]},"1161":{"position":[[94,5],[326,5]]},"1163":{"position":[[111,6],[194,6],[446,5],[540,5]]},"1165":{"position":[[103,5],[175,6],[229,5],[470,6]]}}}],["trial'",{"_index":659,"t":{"68":{"position":[[162,7]]},"216":{"position":[[466,7]]},"696":{"position":[[275,7]]}}}],["trial(",{"_index":2538,"t":{"572":{"position":[[463,9],[528,8],[670,8]]}}}],["trial:config_typ",{"_index":763,"t":{"80":{"position":[[84,17]]},"548":{"position":[[517,18]]},"750":{"position":[[312,18]]},"801":{"position":[[150,18]]},"857":{"position":[[224,18]]},"989":{"position":[[472,18]]},"1097":{"position":[[614,17]]}}}],["trial:pr",{"_index":906,"t":{"98":{"position":[[198,9]]},"498":{"position":[[357,9]]}}}],["trial_actor_port",{"_index":970,"t":{"112":{"position":[[122,18]]},"494":{"position":[[156,16]]}}}],["trial_callback",{"_index":3087,"t":{"1112":{"position":[[228,15]]},"1136":{"position":[[795,15]]}}}],["trial_config",{"_index":777,"t":{"80":{"position":[[1042,12]]},"90":{"position":[[1863,12]]},"540":{"position":[[94,12],[257,12]]},"857":{"position":[[98,13],[1214,13]]}}}],["trial_config.actor",{"_index":855,"t":{"90":{"position":[[2401,19]]}}}],["trial_config.environment.config",{"_index":843,"t":{"90":{"position":[[1958,31]]}}}],["trial_config.environment.endpoint",{"_index":845,"t":{"90":{"position":[[2036,33]]}}}],["trial_config.environment.implement",{"_index":847,"t":{"90":{"position":[[2122,39]]}}}],["trial_config.max_inact",{"_index":859,"t":{"90":{"position":[[2533,27]]}}}],["trial_config.max_step",{"_index":857,"t":{"90":{"position":[[2464,22]]}}}],["trial_datastor",{"_index":433,"t":{"46":{"position":[[579,15],[723,15]]},"411":{"position":[[202,15]]},"413":{"position":[[480,15]]},"415":{"position":[[116,15]]},"419":{"position":[[105,15]]},"421":{"position":[[142,15]]},"423":{"position":[[589,15]]}}}],["trial_datastore.proto",{"_index":2693,"t":{"688":{"position":[[23,22]]}}}],["trial_dur",{"_index":2548,"t":{"586":{"position":[[158,14],[426,15]]}}}],["trial_handl",{"_index":2741,"t":{"704":{"position":[[162,12],[460,13]]}}}],["trial_id",{"_index":628,"t":{"66":{"position":[[98,8]]},"90":{"position":[[1461,8]]},"156":{"position":[[2393,12],[2581,12]]},"216":{"position":[[299,8],[556,8],[635,8],[1042,9],[1277,12],[1362,12],[5702,9],[5937,12],[6022,12]]},"417":{"position":[[389,11]]},"419":{"position":[[1312,12]]},"421":{"position":[[1353,11]]},"480":{"position":[[60,8]]},"488":{"position":[[752,8],[778,10],[838,8],[864,10]]},"502":{"position":[[703,9],[827,9]]},"530":{"position":[[630,9]]},"574":{"position":[[761,9]]},"576":{"position":[[77,8],[92,9]]},"586":{"position":[[73,8],[259,9]]},"590":{"position":[[84,8],[141,9]]},"692":{"position":[[76,8],[188,9]]},"694":{"position":[[113,8],[337,9]]},"704":{"position":[[95,9],[181,10]]},"708":{"position":[[97,9],[284,10]]},"710":{"position":[[185,9]]},"720":{"position":[[91,9],[107,10]]},"843":{"position":[[144,9]]},"857":{"position":[[941,9]]},"859":{"position":[[50,10]]},"861":{"position":[[53,10]]},"865":{"position":[[68,9]]},"949":{"position":[[227,9]]},"965":{"position":[[40,9]]},"1045":{"position":[[69,9]]},"1049":{"position":[[103,9]]},"1152":{"position":[[59,9]]}}}],["trial_id1",{"_index":2304,"t":{"417":{"position":[[185,11]]},"419":{"position":[[169,11]]}}}],["trial_id=trial_id",{"_index":591,"t":{"60":{"position":[[1072,18]]}}}],["trial_id_request",{"_index":1123,"t":{"138":{"position":[[1997,18]]},"508":{"position":[[56,18]]},"574":{"position":[[176,18],[620,19]]},"857":{"position":[[652,19]]}}}],["trial_index",{"_index":3102,"t":{"1150":{"position":[[32,12]]}}}],["trial_index_in_batch",{"_index":3057,"t":{"1085":{"position":[[147,20]]}}}],["trial_info",{"_index":660,"t":{"68":{"position":[[203,10]]},"216":{"position":[[929,10],[5589,10]]},"706":{"position":[[100,11]]},"879":{"position":[[183,12]]},"1150":{"position":[[175,11]]},"1159":{"position":[[475,11]]}}}],["trial_info.trial_id",{"_index":666,"t":{"68":{"position":[[319,23]]},"216":{"position":[[1019,19],[5679,19]]}}}],["trial_life_cycle_servic",{"_index":2608,"t":{"638":{"position":[[112,24],[464,25]]}}}],["trial_lifecycle_port",{"_index":968,"t":{"112":{"position":[[65,22]]},"494":{"position":[[104,20]]}}}],["trial_param",{"_index":900,"t":{"96":{"position":[[738,12]]},"100":{"position":[[256,13]]},"102":{"position":[[237,12]]},"172":{"position":[[148,13]]},"498":{"position":[[142,12]]},"500":{"position":[[201,13],[598,13],[799,13]]},"626":{"position":[[504,12],[1419,13],[1914,13]]},"712":{"position":[[99,12],[172,13]]},"724":{"position":[[202,12],[432,13]]},"803":{"position":[[256,13],[962,13]]},"857":{"position":[[557,13],[986,13]]},"1157":{"position":[[448,12],[898,12],[1285,12]]},"1159":{"position":[[262,12],[344,12]]}}}],["trial_paramet",{"_index":2961,"t":{"943":{"position":[[390,17]]},"949":{"position":[[349,17]]},"1108":{"position":[[700,17]]},"1116":{"position":[[970,17]]},"1163":{"position":[[329,17],[469,17]]}}}],["trial_parameters.properti",{"_index":3062,"t":{"1087":{"position":[[393,27]]}}}],["trial_parameters.properties[cogment_enterprise.runner.batch_id_properti",{"_index":3056,"t":{"1083":{"position":[[135,72]]}}}],["trial_parameters.properties[cogment_enterprise.runner.batch_trial_index_properti",{"_index":3058,"t":{"1085":{"position":[[170,81]]}}}],["trial_params:actors:actor_class",{"_index":2900,"t":{"843":{"position":[[812,31]]}}}],["trial_params:actors:endpoint",{"_index":2899,"t":{"843":{"position":[[540,28],[849,28]]}}}],["trial_params:actors:nam",{"_index":2898,"t":{"843":{"position":[[510,24]]},"925":{"position":[[442,25]]}}}],["trial_params=cogment.trialparamet",{"_index":651,"t":{"66":{"position":[[1143,41]]},"146":{"position":[[2526,37]]}}}],["trial_params=trial_params)print(f\"tri",{"_index":1249,"t":{"156":{"position":[[2353,39]]},"216":{"position":[[1237,39],[5897,39]]}}}],["trial_paramsmy_data",{"_index":3114,"t":{"1157":{"position":[[980,19]]}}}],["trial_paramsrunn",{"_index":3109,"t":{"1157":{"position":[[530,18]]}}}],["trial_paramsshared_data",{"_index":3122,"t":{"1157":{"position":[[1367,23]]}}}],["trial_runn",{"_index":1692,"t":{"227":{"position":[[539,13]]},"235":{"position":[[408,13]]}}}],["trial_runner/main.pi",{"_index":1104,"t":{"138":{"position":[[18,20],[852,20]]},"146":{"position":[[277,25]]},"164":{"position":[[123,21]]},"194":{"position":[[3,21],[212,20]]},"212":{"position":[[1074,20]]},"216":{"position":[[229,20],[663,20],[4492,20]]}}}],["trial_runner_start",{"_index":1286,"t":{"164":{"position":[[67,19]]},"235":{"position":[[771,18]]}}}],["trial_sampl",{"_index":2748,"t":{"710":{"position":[[112,12],[131,13]]},"716":{"position":[[105,12],[124,13]]}}}],["trial_stat",{"_index":3030,"t":{"1045":{"position":[[182,12]]},"1049":{"position":[[174,12],[305,11]]}}}],["trial_state_filt",{"_index":2914,"t":{"863":{"position":[[295,20]]}}}],["trialactor",{"_index":2498,"t":{"550":{"position":[[54,10]]},"586":{"position":[[226,10]]},"618":{"position":[[283,10]]}}}],["trialawait",{"_index":1250,"t":{"156":{"position":[[2446,10]]}}}],["trialbatch",{"_index":3079,"t":{"1108":{"position":[[809,10],[850,10]]},"1110":{"position":[[93,10]]},"1112":{"position":[[66,10]]},"1136":{"position":[[61,10],[323,11],[426,10],[967,10]]},"1159":{"position":[[1122,11],[1845,10]]}}}],["trialconfig",{"_index":633,"t":{"66":{"position":[[263,17]]},"90":{"position":[[879,11],[1248,11]]},"750":{"position":[[191,12]]}}}],["trialdatastoresp",{"_index":2619,"t":{"638":{"position":[[1003,17]]},"690":{"position":[[87,16]]}}}],["trialdatastoresp.addsampl",{"_index":2750,"t":{"716":{"position":[[30,29]]},"718":{"position":[[10,29]]}}}],["trialdatastoresp.addtri",{"_index":2749,"t":{"712":{"position":[[12,28]]},"714":{"position":[[10,28]]}}}],["trialdatastoresp.deletetri",{"_index":2751,"t":{"720":{"position":[[12,32]]},"722":{"position":[[10,32]]}}}],["trialdatastoresp.retrievesampl",{"_index":2744,"t":{"708":{"position":[[12,35]]},"710":{"position":[[28,35]]}}}],["trialdatastoresp.retrievetri",{"_index":2739,"t":{"704":{"position":[[12,34]]},"706":{"position":[[10,34]]}}}],["trialhookssp",{"_index":2591,"t":{"632":{"position":[[8,12]]},"638":{"position":[[856,13]]}}}],["trialid",{"_index":631,"t":{"66":{"position":[[221,7]]},"76":{"position":[[686,11]]},"182":{"position":[[1483,7]]},"744":{"position":[[144,8]]},"750":{"position":[[714,8]]},"752":{"position":[[50,9]]},"754":{"position":[[53,9]]},"758":{"position":[[68,8]]},"783":{"position":[[40,8]]}}}],["trialidrequest",{"_index":2768,"t":{"750":{"position":[[427,17]]}}}],["trialinfo",{"_index":2546,"t":{"584":{"position":[[80,9]]},"586":{"position":[[54,9]]},"590":{"position":[[120,9]]},"754":{"position":[[285,11]]},"756":{"position":[[514,9]]},"863":{"position":[[501,9]]}}}],["trialinforepli",{"_index":2534,"t":{"572":{"position":[[208,16]]},"584":{"position":[[54,14]]}}}],["trialinforequest",{"_index":2544,"t":{"582":{"position":[[56,16]]},"586":{"position":[[788,17]]}}}],["triallifecyclesp",{"_index":2528,"t":{"572":{"position":[[8,16]]},"638":{"position":[[533,17]]}}}],["triallistentri",{"_index":667,"t":{"68":{"position":[[368,14]]},"572":{"position":[[278,15]]},"590":{"position":[[60,14]]}}}],["triallistentry.gettrialid",{"_index":670,"t":{"68":{"position":[[475,30]]}}}],["triallistrequest",{"_index":2553,"t":{"588":{"position":[[55,16]]},"590":{"position":[[411,17]]}}}],["trialparam",{"_index":2483,"t":{"540":{"position":[[62,11]]},"574":{"position":[[123,11]]},"626":{"position":[[492,11]]},"692":{"position":[[163,11]]},"712":{"position":[[87,11]]},"724":{"position":[[189,12]]},"995":{"position":[[121,11]]}}}],["trialparamet",{"_index":2801,"t":{"799":{"position":[[222,15]]},"857":{"position":[[1000,15]]},"943":{"position":[[408,15]]},"989":{"position":[[251,16]]},"999":{"position":[[49,15],[147,15]]},"1159":{"position":[[1229,15]]}}}],["trialparameters(set",{"_index":2998,"t":{"991":{"position":[[226,25]]}}}],["trialparameters.datalog_exclude_field",{"_index":3010,"t":{"1007":{"position":[[376,40]]}}}],["trialparams.actor",{"_index":2720,"t":{"696":{"position":[[178,18]]}}}],["trialrunn",{"_index":3067,"t":{"1102":{"position":[[35,12]]},"1104":{"position":[[34,12]]},"1106":{"position":[[39,12]]},"1152":{"position":[[274,11]]},"1159":{"position":[[1629,11]]},"1163":{"position":[[689,11]]}}}],["trialrunner(1",{"_index":3110,"t":{"1157":{"position":[[551,14],[1024,14],[1467,14]]}}}],["trialrunner.run_simple_batch",{"_index":3105,"t":{"1157":{"position":[[34,28]]},"1159":{"position":[[31,28]]},"1161":{"position":[[31,28]]}}}],["trialrunner.run_simple_train",{"_index":3106,"t":{"1157":{"position":[[66,31]]},"1163":{"position":[[31,30]]}}}],["trialrunner.run_simple_trial_train",{"_index":3134,"t":{"1165":{"position":[[31,36]]}}}],["trials_count",{"_index":2740,"t":{"704":{"position":[[137,12],[349,13]]}}}],["trialsamplesfilehead",{"_index":2752,"t":{"724":{"position":[[92,22]]}}}],["trialsasync",{"_index":1647,"t":{"216":{"position":[[888,11],[5548,11]]}}}],["trialstartrepli",{"_index":2530,"t":{"572":{"position":[[69,17]]},"576":{"position":[[52,15]]}}}],["trialstartrequest",{"_index":2226,"t":{"366":{"position":[[435,19]]},"574":{"position":[[54,17]]}}}],["trialstat",{"_index":2516,"t":{"566":{"position":[[45,10]]},"586":{"position":[[108,10]]},"588":{"position":[[83,10]]},"590":{"position":[[98,10]]},"626":{"position":[[144,10]]},"692":{"position":[[90,10]]},"694":{"position":[[170,10]]}}}],["trialstate.end",{"_index":3009,"t":{"1007":{"position":[[243,18]]},"1045":{"position":[[301,17],[447,17]]},"1049":{"position":[[320,17]]}}}],["trialstatefilt",{"_index":2772,"t":{"756":{"position":[[281,18]]}}}],["trigger",{"_index":637,"t":{"66":{"position":[[404,7],[482,7]]},"88":{"position":[[530,9],[1209,9]]},"164":{"position":[[26,9],[166,7]]}}}],["true",{"_index":639,"t":{"66":{"position":[[474,4]]},"306":{"position":[[2704,4],[2846,5],[2950,4],[3631,4]]},"310":{"position":[[337,4]]},"348":{"position":[[458,5]]},"350":{"position":[[278,5],[465,5],[891,5],[1326,5]]},"508":{"position":[[821,4]]},"582":{"position":[[136,5]]},"588":{"position":[[313,5]]},"626":{"position":[[618,5]]},"686":{"position":[[526,5]]},"752":{"position":[[162,5]]},"768":{"position":[[85,4]]},"770":{"position":[[231,5]]},"773":{"position":[[208,5]]},"801":{"position":[[3731,7]]},"803":{"position":[[1628,4],[1793,4]]},"833":{"position":[[32,4]]},"855":{"position":[[39,4]]},"859":{"position":[[161,5]]},"863":{"position":[[464,5]]},"871":{"position":[[32,4]]},"883":{"position":[[39,4]]},"913":{"position":[[82,4]]},"915":{"position":[[256,5]]},"921":{"position":[[631,5]]},"935":{"position":[[207,5]]},"993":{"position":[[32,4]]},"1005":{"position":[[32,4]]},"1007":{"position":[[474,4]]},"1035":{"position":[[102,4]]},"1037":{"position":[[79,4]]},"1047":{"position":[[32,4]]},"1051":{"position":[[32,4]]},"1055":{"position":[[32,4]]},"1126":{"position":[[174,4]]},"1128":{"position":[[84,4]]},"1132":{"position":[[263,4]]},"1144":{"position":[[87,4]]},"1146":{"position":[[330,4],[349,5],[388,5]]},"1163":{"position":[[818,5]]},"1165":{"position":[[520,5]]}}}],["true/fals",{"_index":1884,"t":{"255":{"position":[[222,12],[546,12]]}}}],["trust",{"_index":824,"t":{"90":{"position":[[819,8]]},"386":{"position":[[35,7]]},"388":{"position":[[35,5]]}}}],["trust_chain=./path/to/chain.pem",{"_index":2262,"t":{"388":{"position":[[99,32]]}}}],["tupl",{"_index":546,"t":{"56":{"position":[[152,6]]},"925":{"position":[[312,5]]},"959":{"position":[[285,6]]},"1033":{"position":[[480,5]]},"1159":{"position":[[581,5],[735,5],[860,7]]}}}],["tuple(data",{"_index":3021,"t":{"1033":{"position":[[339,11]]}}}],["tuple(str",{"_index":2994,"t":{"989":{"position":[[754,10]]},"1159":{"position":[[512,10]]}}}],["turn",{"_index":1474,"t":{"182":{"position":[[837,4],[1397,4]]},"819":{"position":[[544,5]]},"953":{"position":[[87,6]]}}}],["tutori",{"_index":1030,"t":{"122":{"position":[[142,9]]},"124":{"position":[[265,8]]},"136":{"position":[[1370,8]]},"138":{"position":[[2093,9],[3645,9]]},"140":{"position":[[236,9]]},"144":{"position":[[1146,9]]},"148":{"position":[[23,8],[258,9]]},"150":{"position":[[409,8]]},"152":{"position":[[252,8],[345,9],[663,8]]},"154":{"position":[[22,8],[210,9]]},"158":{"position":[[1676,9],[1807,9]]},"160":{"position":[[22,8],[210,9]]},"170":{"position":[[8,8],[635,8]]},"172":{"position":[[100,9]]},"180":{"position":[[2084,9]]},"184":{"position":[[63,9]]},"186":{"position":[[20,9]]},"194":{"position":[[784,8],[888,10]]},"196":{"position":[[20,9]]},"198":{"position":[[1851,9]]},"202":{"position":[[340,9]]},"216":{"position":[[6403,9]]},"218":{"position":[[20,9],[182,9]]},"222":{"position":[[120,8],[252,8]]},"224":{"position":[[148,8],[251,8]]},"229":{"position":[[2396,9]]},"235":{"position":[[1235,9]]}}}],["tutorial'",{"_index":1132,"t":{"140":{"position":[[193,10]]},"154":{"position":[[167,10]]},"160":{"position":[[167,10]]},"174":{"position":[[301,10]]},"178":{"position":[[163,10]]}}}],["two",{"_index":82,"t":{"8":{"position":[[223,3],[394,3]]},"42":{"position":[[26,3]]},"60":{"position":[[22,3]]},"62":{"position":[[239,3]]},"96":{"position":[[572,3]]},"132":{"position":[[340,3],[1015,3]]},"138":{"position":[[442,3],[1439,3]]},"152":{"position":[[692,3]]},"170":{"position":[[1066,3]]},"178":{"position":[[37,3]]},"180":{"position":[[397,3]]},"204":{"position":[[436,3],[1484,3]]},"206":{"position":[[625,3]]},"208":{"position":[[593,3],[618,3],[792,3]]},"212":{"position":[[469,3]]},"216":{"position":[[1758,3],[2809,3]]},"224":{"position":[[656,3]]},"235":{"position":[[112,3]]},"306":{"position":[[1836,3]]},"312":{"position":[[140,3]]},"423":{"position":[[282,3]]},"427":{"position":[[70,3]]},"526":{"position":[[1034,3]]},"592":{"position":[[10,3]]},"807":{"position":[[81,3]]},"811":{"position":[[50,3],[3157,3]]}}}],["type",{"_index":323,"t":{"26":{"position":[[712,5],[816,6]]},"50":{"position":[[70,4],[163,6],[381,5],[453,5]]},"58":{"position":[[231,5]]},"60":{"position":[[26,5]]},"80":{"position":[[68,4]]},"86":{"position":[[132,5],[298,5]]},"88":{"position":[[246,4],[429,4],[826,4],[1003,4],[1967,4]]},"96":{"position":[[136,5]]},"124":{"position":[[1252,4],[1284,4]]},"126":{"position":[[543,4],[669,5]]},"128":{"position":[[477,5],[927,5],[986,5]]},"130":{"position":[[205,4],[338,4],[476,4],[793,4]]},"132":{"position":[[603,4],[749,4]]},"136":{"position":[[568,5]]},"138":{"position":[[570,4],[750,5]]},"180":{"position":[[1992,4]]},"182":{"position":[[430,5]]},"192":{"position":[[462,5]]},"194":{"position":[[54,4]]},"198":{"position":[[1655,4]]},"204":{"position":[[601,4],[746,5]]},"239":{"position":[[1217,6]]},"255":{"position":[[318,5],[336,5]]},"263":{"position":[[389,4]]},"267":{"position":[[68,4],[112,5],[130,4]]},"292":{"position":[[65,4]]},"294":{"position":[[172,4]]},"298":{"position":[[1127,5],[1137,4],[1721,4],[1788,4]]},"308":{"position":[[774,5],[796,10]]},"346":{"position":[[263,7],[337,7],[611,7]]},"366":{"position":[[239,5]]},"405":{"position":[[162,4],[214,4]]},"407":{"position":[[4,4],[148,4],[168,4],[194,5]]},"486":{"position":[[6,5]]},"500":{"position":[[279,4],[289,4],[1438,4]]},"502":{"position":[[967,4]]},"510":{"position":[[162,4]]},"512":{"position":[[273,5],[570,5],[605,5]]},"516":{"position":[[143,4]]},"518":{"position":[[128,4]]},"520":{"position":[[100,5],[405,4],[567,4],[724,4],[852,6]]},"524":{"position":[[28,4],[227,4],[442,5]]},"548":{"position":[[457,4]]},"552":{"position":[[317,4]]},"554":{"position":[[351,4]]},"556":{"position":[[557,4]]},"558":{"position":[[682,4]]},"562":{"position":[[525,4]]},"564":{"position":[[507,4]]},"638":{"position":[[0,4],[1280,5]]},"640":{"position":[[91,4],[138,5],[148,4]]},"730":{"position":[[30,4],[295,5],[397,5],[452,5],[474,4],[519,5],[529,4]]},"750":{"position":[[259,4]]},"775":{"position":[[704,4]]},"777":{"position":[[340,5]]},"785":{"position":[[183,5],[189,5],[207,4]]},"787":{"position":[[22,4],[195,5]]},"789":{"position":[[0,4]]},"791":{"position":[[0,4]]},"795":{"position":[[0,4]]},"801":{"position":[[103,4],[1648,4],[2272,4],[4292,4]]},"811":{"position":[[1293,4],[2133,4],[3229,5],[3270,6],[3334,5],[3610,4]]},"821":{"position":[[38,4],[308,5],[410,5],[465,5],[487,4],[552,4],[639,4],[676,5],[704,4]]},"829":{"position":[[369,4]]},"857":{"position":[[171,4]]},"859":{"position":[[492,4]]},"919":{"position":[[460,4]]},"925":{"position":[[77,4]]},"933":{"position":[[578,4]]},"937":{"position":[[710,4]]},"939":{"position":[[352,5]]},"969":{"position":[[183,5],[189,5],[212,4]]},"971":{"position":[[22,4],[195,5],[280,4]]},"979":{"position":[[406,4],[519,4]]},"987":{"position":[[453,4],[566,4]]},"989":{"position":[[419,4],[815,4]]},"995":{"position":[[11,4],[86,4],[203,4],[254,4],[313,4],[400,4]]},"999":{"position":[[166,4],[171,5],[177,5],[189,4],[284,4],[320,4],[344,6]]},"1001":{"position":[[422,4],[921,4]]},"1003":{"position":[[217,4]]},"1011":{"position":[[12,4],[87,4],[206,4],[257,4],[316,4],[403,4]]},"1015":{"position":[[158,5]]},"1065":{"position":[[544,4],[657,4]]},"1067":{"position":[[381,4],[494,4]]},"1089":{"position":[[529,4],[704,4]]},"1091":{"position":[[529,4],[708,4]]},"1093":{"position":[[529,4],[703,4],[766,4]]},"1095":{"position":[[600,4]]},"1097":{"position":[[594,4]]}}}],["type=\"actor",{"_index":1876,"t":{"251":{"position":[[175,12]]},"263":{"position":[[243,12]]}}}],["type=actor",{"_index":2280,"t":{"407":{"position":[[559,11]]}}}],["typescript",{"_index":1343,"t":{"174":{"position":[[145,10],[221,10]]}}}],["typic",{"_index":364,"t":{"30":{"position":[[908,9]]},"58":{"position":[[520,7]]},"271":{"position":[[108,10]]},"298":{"position":[[886,9]]},"366":{"position":[[154,10]]},"427":{"position":[[329,10]]},"510":{"position":[[24,10]]},"730":{"position":[[121,9]]},"811":{"position":[[2084,10]]},"821":{"position":[[134,9]]},"975":{"position":[[241,10]]},"1007":{"position":[[629,10]]},"1049":{"position":[[44,10]]}}}],["typographi",{"_index":1388,"t":{"180":{"position":[[262,10],[4563,12],[4669,13],[4683,12],[4795,13],[4809,12],[4908,13],[4922,12],[5027,13]]}}}],["typography>gam",{"_index":1446,"t":{"180":{"position":[[4504,16]]}}}],["u",{"_index":2123,"t":{"310":{"position":[[844,1]]}}}],["ui",{"_index":1293,"t":{"168":{"position":[[26,2],[214,2],[591,3],[671,2]]},"178":{"position":[[837,2]]},"180":{"position":[[209,2]]},"184":{"position":[[53,2]]}}}],["uint32",{"_index":834,"t":{"90":{"position":[[1330,6],[1352,6]]},"540":{"position":[[207,6],[229,6]]},"564":{"position":[[147,6]]},"626":{"position":[[378,6],[414,6]]},"642":{"position":[[198,6]]},"668":{"position":[[108,6]]},"676":{"position":[[147,6]]},"686":{"position":[[100,6]]},"692":{"position":[[137,6]]},"696":{"position":[[515,6],[542,6],[575,6]]},"698":{"position":[[232,6]]},"700":{"position":[[185,6]]},"704":{"position":[[110,6],[130,6]]}}}],["uint64",{"_index":2501,"t":{"552":{"position":[[46,6]]},"554":{"position":[[57,6]]},"562":{"position":[[88,6]]},"564":{"position":[[67,6]]},"586":{"position":[[130,6]]},"618":{"position":[[254,6]]},"626":{"position":[[101,6]]},"646":{"position":[[156,6]]},"648":{"position":[[74,6]]},"652":{"position":[[146,6]]},"654":{"position":[[97,6]]},"694":{"position":[[127,6]]}}}],["uint64/sint64",{"_index":2464,"t":{"530":{"position":[[91,15]]}}}],["uint8array",{"_index":760,"t":{"78":{"position":[[917,11]]}}}],["unavail",{"_index":610,"t":{"62":{"position":[[212,12],[280,12],[390,12],[456,12],[530,12],[680,12]]},"84":{"position":[[518,12]]},"88":{"position":[[1283,11],[1346,11],[1777,11]]},"290":{"position":[[143,11]]},"801":{"position":[[3159,11],[3528,12],[4153,13],[4230,11]]},"889":{"position":[[114,11]]},"975":{"position":[[229,11]]}}}],["unavailable_actor",{"_index":2513,"t":{"564":{"position":[[154,18],[767,19]]},"626":{"position":[[421,18],[1743,19]]}}}],["unclear",{"_index":1663,"t":{"218":{"position":[[285,8]]}}}],["undefin",{"_index":1997,"t":{"300":{"position":[[359,10]]},"308":{"position":[[636,9]]},"626":{"position":[[1034,10]]},"750":{"position":[[338,9]]},"777":{"position":[[197,10]]},"785":{"position":[[334,9]]},"973":{"position":[[221,9],[560,9]]},"977":{"position":[[403,9],[714,9]]},"995":{"position":[[349,9]]},"1007":{"position":[[919,9]]},"1011":{"position":[[352,9]]}}}],["under",{"_index":445,"t":{"48":{"position":[[260,5]]},"156":{"position":[[328,5]]},"239":{"position":[[391,5],[1315,5],[4223,5],[6485,5],[7595,5],[7659,5]]},"306":{"position":[[82,5],[4510,5],[4968,5]]},"746":{"position":[[416,5]]},"750":{"position":[[294,5]]},"801":{"position":[[136,5],[1677,5],[2305,5],[2574,5],[4325,5]]},"847":{"position":[[422,5]]},"857":{"position":[[206,5]]},"925":{"position":[[436,5]]},"989":{"position":[[454,5],[850,5]]},"1001":{"position":[[457,5],[956,5]]},"1003":{"position":[[270,5]]}}}],["underli",{"_index":377,"t":{"32":{"position":[[403,10]]},"482":{"position":[[182,10]]},"905":{"position":[[337,10]]}}}],["underscor",{"_index":1990,"t":{"298":{"position":[[2445,10]]},"308":{"position":[[1232,10]]},"801":{"position":[[330,10]]},"811":{"position":[[5028,10],[5129,10]]},"1159":{"position":[[1477,10]]}}}],["understand",{"_index":1038,"t":{"124":{"position":[[581,10]]},"140":{"position":[[75,10]]},"198":{"position":[[696,10]]},"229":{"position":[[2425,10]]},"233":{"position":[[7,10]]},"522":{"position":[[512,13]]},"556":{"position":[[542,10]]},"558":{"position":[[667,10]]}}}],["union",{"_index":1719,"t":{"239":{"position":[[301,5]]}}}],["uniqu",{"_index":977,"t":{"114":{"position":[[245,7]]},"138":{"position":[[1759,6]]},"146":{"position":[[3245,8]]},"292":{"position":[[174,6],[191,6]]},"298":{"position":[[204,6]]},"415":{"position":[[879,6]]},"421":{"position":[[730,7]]},"574":{"position":[[701,7]]},"658":{"position":[[798,6]]},"660":{"position":[[138,6]]},"684":{"position":[[140,6]]},"686":{"position":[[269,6],[352,6]]},"692":{"position":[[198,6]]},"694":{"position":[[347,6]]},"750":{"position":[[515,6]]},"801":{"position":[[2433,6]]},"857":{"position":[[739,6],[1328,6]]},"1108":{"position":[[306,6]]},"1116":{"position":[[197,6]]},"1150":{"position":[[137,6]]}}}],["unit",{"_index":1855,"t":{"245":{"position":[[127,4],[198,5]]},"413":{"position":[[642,4],[713,5]]}}}],["unix",{"_index":1665,"t":{"218":{"position":[[374,4]]},"530":{"position":[[611,5]]},"686":{"position":[[496,4]]},"724":{"position":[[403,5]]},"973":{"position":[[140,4]]},"977":{"position":[[307,4]]},"1007":{"position":[[971,4]]},"1029":{"position":[[239,4]]},"1049":{"position":[[536,4]]}}}],["unknown",{"_index":1024,"t":{"120":{"position":[[707,7],[797,9]]},"130":{"position":[[418,7],[579,7]]},"524":{"position":[[300,7]]},"566":{"position":[[58,7],[144,8]]},"642":{"position":[[106,7],[270,8]]},"646":{"position":[[80,7],[226,8]]},"650":{"position":[[84,7],[188,8]]},"781":{"position":[[48,8]]},"963":{"position":[[48,8]]},"1043":{"position":[[68,8]]}}}],["unknown_com_st",{"_index":2518,"t":{"568":{"position":[[104,17],[188,18]]}}}],["unknown_servic",{"_index":2607,"t":{"638":{"position":[[91,15],[362,16]]}}}],["unless",{"_index":1678,"t":{"224":{"position":[[85,6]]},"239":{"position":[[6347,6],[7058,6],[7746,6]]},"294":{"position":[[620,6]]},"306":{"position":[[4597,6],[5047,6]]},"905":{"position":[[430,7]]}}}],["unlik",{"_index":1981,"t":{"298":{"position":[[276,9]]},"492":{"position":[[27,6]]},"502":{"position":[[328,7]]}}}],["unpack",{"_index":754,"t":{"78":{"position":[[543,8],[845,8]]},"180":{"position":[[3140,8],[3186,6]]},"979":{"position":[[528,6]]},"987":{"position":[[575,6]]},"1065":{"position":[[666,6]]},"1067":{"position":[[503,6]]}}}],["unpredict",{"_index":2457,"t":{"526":{"position":[[33,16]]}}}],["unservic",{"_index":1935,"t":{"284":{"position":[[534,13]]},"296":{"position":[[620,13],[1776,17]]}}}],["unsign",{"_index":1973,"t":{"296":{"position":[[1215,8]]},"298":{"position":[[102,8]]},"419":{"position":[[1024,8]]},"811":{"position":[[3403,8]]}}}],["unsur",{"_index":97,"t":{"8":{"position":[[585,7]]}}}],["until",{"_index":807,"t":{"88":{"position":[[681,5]]},"134":{"position":[[301,5]]},"186":{"position":[[416,5]]},"216":{"position":[[6137,5]]},"255":{"position":[[626,6]]},"294":{"position":[[610,5]]},"508":{"position":[[694,5]]},"885":{"position":[[115,5]]},"905":{"position":[[442,5]]},"921":{"position":[[494,5]]},"1120":{"position":[[189,5]]}}}],["up",{"_index":217,"t":{"14":{"position":[[578,2]]},"18":{"position":[[144,2]]},"30":{"position":[[864,2]]},"138":{"position":[[3722,2]]},"182":{"position":[[569,2],[2020,2]]},"200":{"position":[[58,2]]},"202":{"position":[[362,2]]},"204":{"position":[[1725,2]]},"208":{"position":[[257,2]]},"212":{"position":[[185,2],[406,2],[1160,2]]},"216":{"position":[[1930,2],[3870,2],[4256,2]]},"218":{"position":[[59,2]]},"233":{"position":[[496,2]]},"235":{"position":[[1549,2]]},"286":{"position":[[64,2]]},"302":{"position":[[309,2]]},"403":{"position":[[206,2]]},"423":{"position":[[362,2]]},"514":{"position":[[626,2]]},"805":{"position":[[270,2]]},"985":{"position":[[52,2],[200,2]]}}}],["updat",{"_index":264,"t":{"18":{"position":[[893,8]]},"22":{"position":[[495,6]]},"30":{"position":[[409,7]]},"40":{"position":[[439,8]]},"42":{"position":[[903,6]]},"94":{"position":[[37,7],[70,6],[260,6],[346,7],[604,6],[748,6]]},"96":{"position":[[722,6],[902,6]]},"98":{"position":[[180,6]]},"100":{"position":[[129,6]]},"104":{"position":[[352,6]]},"106":{"position":[[12,6],[281,6]]},"108":{"position":[[163,6],[893,6]]},"110":{"position":[[385,6],[591,6],[814,6]]},"112":{"position":[[9,6]]},"114":{"position":[[265,6]]},"116":{"position":[[9,6],[437,6],[981,6],[1086,6]]},"118":{"position":[[417,7]]},"126":{"position":[[1115,6]]},"144":{"position":[[942,6]]},"156":{"position":[[1618,6],[2644,8]]},"170":{"position":[[536,6]]},"200":{"position":[[837,6]]},"208":{"position":[[210,6],[1816,7]]},"216":{"position":[[3429,7]]},"255":{"position":[[753,7]]},"292":{"position":[[691,6]]},"296":{"position":[[272,8]]},"298":{"position":[[2144,7]]},"312":{"position":[[218,7]]},"658":{"position":[[750,6]]},"660":{"position":[[220,6]]},"686":{"position":[[734,6]]},"799":{"position":[[186,7]]},"805":{"position":[[779,6]]},"899":{"position":[[19,6]]}}}],["upgrad",{"_index":1008,"t":{"120":{"position":[[68,8]]},"484":{"position":[[170,7]]},"496":{"position":[[39,7]]}}}],["upload",{"_index":2654,"t":{"658":{"position":[[1355,8]]}}}],["upon",{"_index":283,"t":{"22":{"position":[[361,4]]},"138":{"position":[[3196,4]]},"142":{"position":[[212,5]]},"983":{"position":[[57,5]]}}}],["url",{"_index":823,"t":{"90":{"position":[[747,4]]},"98":{"position":[[285,5]]},"106":{"position":[[33,5],[196,3]]},"255":{"position":[[23,4]]},"298":{"position":[[465,4]]},"502":{"position":[[914,3],[972,3]]},"644":{"position":[[73,3]]},"742":{"position":[[113,3]]},"744":{"position":[[212,3]]},"807":{"position":[[28,4]]},"809":{"position":[[207,3]]},"811":{"position":[[1141,4],[2806,3],[2892,3],[3011,3],[3087,3]]},"831":{"position":[[999,3]]},"955":{"position":[[63,4],[78,3]]},"957":{"position":[[12,4],[27,3],[100,3]]},"1100":{"position":[[598,3]]}}}],["us",{"_index":49,"t":{"6":{"position":[[100,6],[302,5],[315,5],[396,6]]},"10":{"position":[[311,3]]},"12":{"position":[[284,4],[458,3]]},"18":{"position":[[555,5]]},"24":{"position":[[252,3],[437,4],[707,3]]},"26":{"position":[[743,4]]},"28":{"position":[[364,4],[405,5]]},"32":{"position":[[349,3],[447,5],[510,5]]},"38":{"position":[[32,5]]},"40":{"position":[[101,5]]},"42":{"position":[[463,5],[889,5],[1036,5]]},"44":{"position":[[127,4],[449,4]]},"46":{"position":[[79,4],[288,3],[523,3],[757,3],[906,3],[1042,3],[1058,3]]},"48":{"position":[[91,5],[358,3]]},"50":{"position":[[349,5],[558,3]]},"52":{"position":[[12,3],[178,6],[287,5],[336,6],[409,6],[676,6]]},"56":{"position":[[260,5],[442,6]]},"60":{"position":[[18,3]]},"64":{"position":[[50,5]]},"66":{"position":[[27,4],[563,4]]},"68":{"position":[[27,4],[143,4]]},"71":{"position":[[125,4],[542,4]]},"76":{"position":[[82,5],[229,4]]},"78":{"position":[[166,3]]},"80":{"position":[[682,4]]},"88":{"position":[[124,5],[560,5],[1104,5],[1250,5]]},"90":{"position":[[212,3],[640,3]]},"94":{"position":[[450,3]]},"96":{"position":[[323,4],[389,4],[438,4],[471,3],[644,5],[672,3],[1032,3]]},"98":{"position":[[317,5]]},"104":{"position":[[30,4],[554,3]]},"106":{"position":[[19,3]]},"108":{"position":[[911,5],[953,3]]},"110":{"position":[[611,5],[685,5],[834,5]]},"114":{"position":[[120,4],[283,5],[350,3]]},"116":{"position":[[179,5],[254,5],[691,3],[1042,5]]},"118":{"position":[[292,5]]},"120":{"position":[[248,3],[578,5]]},"124":{"position":[[338,4],[1372,3],[1937,3]]},"126":{"position":[[478,5],[590,5],[1109,5]]},"128":{"position":[[196,5],[1154,3]]},"132":{"position":[[224,3]]},"134":{"position":[[223,4],[320,4]]},"136":{"position":[[1408,4]]},"138":{"position":[[459,3],[540,4],[1809,4]]},"144":{"position":[[142,3]]},"146":{"position":[[89,7],[632,5],[805,3],[839,5],[1430,3],[1587,5]]},"148":{"position":[[187,5],[278,7]]},"150":{"position":[[125,4],[167,6],[449,3]]},"152":{"position":[[19,3]]},"156":{"position":[[1665,3],[2031,3],[2246,5]]},"158":{"position":[[1102,5]]},"164":{"position":[[109,5],[182,5]]},"168":{"position":[[11,5],[172,3],[435,5]]},"170":{"position":[[172,5],[330,3],[377,3],[414,5],[622,3],[1582,3],[1972,5]]},"172":{"position":[[118,3]]},"174":{"position":[[156,6]]},"180":{"position":[[430,3],[1260,3],[1755,3],[3720,7]]},"186":{"position":[[143,4],[879,3]]},"188":{"position":[[509,3]]},"190":{"position":[[181,3],[1604,4]]},"192":{"position":[[14,3],[383,4]]},"198":{"position":[[759,3],[806,4],[1370,3],[1445,3]]},"200":{"position":[[297,3],[382,3],[831,5]]},"202":{"position":[[677,3],[1066,3]]},"206":{"position":[[961,4]]},"208":{"position":[[543,3]]},"210":{"position":[[1213,3]]},"212":{"position":[[219,6],[291,3],[1607,4]]},"216":{"position":[[1130,5],[1444,3],[4477,3],[5790,5],[6322,5],[6435,3]]},"218":{"position":[[304,6]]},"227":{"position":[[482,3]]},"229":{"position":[[342,4],[687,4],[854,3],[1215,3],[1536,3]]},"233":{"position":[[338,4],[428,4]]},"235":{"position":[[1301,5]]},"239":{"position":[[66,4],[3631,4],[6087,4],[6204,4],[6812,3],[6942,3],[7496,5],[8050,3],[8070,3]]},"241":{"position":[[123,4]]},"251":{"position":[[16,4]]},"255":{"position":[[473,4],[1063,4]]},"257":{"position":[[16,4]]},"263":{"position":[[16,4]]},"267":{"position":[[106,5],[275,4],[374,5],[663,5]]},"284":{"position":[[160,4]]},"290":{"position":[[272,3]]},"296":{"position":[[474,5]]},"298":{"position":[[322,4],[1257,4],[2502,3]]},"300":{"position":[[134,5],[510,4],[542,5]]},"302":{"position":[[414,4],[535,4]]},"306":{"position":[[1954,5],[3066,5],[3844,3],[4105,4],[4483,5]]},"308":{"position":[[36,5],[1154,4]]},"312":{"position":[[79,4],[199,4],[447,4]]},"318":{"position":[[141,4]]},"332":{"position":[[93,4]]},"336":{"position":[[164,3],[630,6]]},"352":{"position":[[222,3]]},"360":{"position":[[227,4]]},"362":{"position":[[257,4]]},"364":{"position":[[13,4]]},"368":{"position":[[93,4]]},"372":{"position":[[139,4]]},"374":{"position":[[161,3],[625,6]]},"378":{"position":[[282,4]]},"382":{"position":[[60,6]]},"399":{"position":[[93,4]]},"407":{"position":[[462,4]]},"409":{"position":[[179,4]]},"413":{"position":[[1167,5]]},"415":{"position":[[19,4]]},"417":{"position":[[21,4]]},"419":{"position":[[14,4],[639,4]]},"421":{"position":[[14,4],[670,6],[867,3]]},"423":{"position":[[418,4]]},"427":{"position":[[450,4]]},"431":{"position":[[107,4]]},"433":{"position":[[26,4],[90,3],[178,3]]},"439":{"position":[[93,4]]},"443":{"position":[[167,3],[634,6]]},"447":{"position":[[147,3],[238,4],[307,5],[378,5],[542,3]]},"455":{"position":[[159,4]]},"457":{"position":[[140,4]]},"459":{"position":[[99,4]]},"463":{"position":[[11,4]]},"469":{"position":[[93,4]]},"473":{"position":[[154,3],[620,6]]},"482":{"position":[[294,3]]},"484":{"position":[[53,5]]},"488":{"position":[[292,3]]},"492":{"position":[[62,4]]},"494":{"position":[[416,5]]},"496":{"position":[[167,4]]},"498":{"position":[[21,4],[64,4]]},"502":{"position":[[50,3],[120,5],[508,5],[1015,4]]},"508":{"position":[[1092,4]]},"510":{"position":[[96,3],[128,4],[226,4],[419,4]]},"512":{"position":[[22,4],[306,4],[556,5]]},"514":{"position":[[72,5],[773,5]]},"518":{"position":[[133,4]]},"520":{"position":[[729,4]]},"522":{"position":[[55,5]]},"524":{"position":[[45,4],[244,4],[476,4],[597,4],[842,3],[1240,4]]},"534":{"position":[[296,4],[355,4],[449,3]]},"536":{"position":[[440,4]]},"542":{"position":[[162,4],[213,5]]},"544":{"position":[[186,4],[241,5]]},"546":{"position":[[363,4],[412,5],[554,5]]},"558":{"position":[[393,4]]},"566":{"position":[[167,4]]},"568":{"position":[[221,4]]},"570":{"position":[[144,5],[183,4]]},"574":{"position":[[249,4],[752,3]]},"576":{"position":[[178,5]]},"594":{"position":[[87,5],[177,5],[216,4]]},"596":{"position":[[81,5],[176,5],[215,4]]},"602":{"position":[[670,4]]},"604":{"position":[[585,4]]},"606":{"position":[[59,4],[793,5]]},"608":{"position":[[59,4]]},"610":{"position":[[91,5],[179,5],[218,4]]},"614":{"position":[[619,4]]},"616":{"position":[[573,4]]},"618":{"position":[[557,5]]},"622":{"position":[[87,5]]},"626":{"position":[[1945,4]]},"630":{"position":[[88,5]]},"634":{"position":[[87,5]]},"638":{"position":[[393,4]]},"642":{"position":[[293,4],[396,5],[482,5],[911,5]]},"646":{"position":[[249,4]]},"650":{"position":[[211,4]]},"660":{"position":[[203,3]]},"668":{"position":[[457,3]]},"670":{"position":[[243,4]]},"672":{"position":[[476,4]]},"676":{"position":[[642,3]]},"678":{"position":[[283,4]]},"682":{"position":[[293,5]]},"686":{"position":[[713,4],[889,4],[1076,4]]},"690":{"position":[[924,5]]},"702":{"position":[[64,4]]},"704":{"position":[[522,3]]},"706":{"position":[[265,4]]},"724":{"position":[[55,5],[288,4]]},"727":{"position":[[69,5]]},"730":{"position":[[272,5]]},"732":{"position":[[520,3]]},"734":{"position":[[180,5]]},"742":{"position":[[213,4]]},"750":{"position":[[705,3]]},"775":{"position":[[674,4]]},"781":{"position":[[71,5]]},"799":{"position":[[453,4],[730,3]]},"801":{"position":[[380,4]]},"803":{"position":[[169,4]]},"805":{"position":[[100,5],[176,4],[629,4]]},"807":{"position":[[211,4],[254,4],[376,5]]},"809":{"position":[[19,4],[53,5]]},"811":{"position":[[122,4],[276,3],[2677,4],[3305,4],[3586,4],[4098,4],[4265,3],[4329,3],[5455,4],[5644,4],[5723,4],[5826,4],[5962,4],[6101,4],[6396,4],[6586,4],[6722,4]]},"814":{"position":[[65,5]]},"817":{"position":[[66,5]]},"819":{"position":[[15,4],[653,3],[889,4]]},"821":{"position":[[285,5]]},"825":{"position":[[12,3],[195,4]]},"829":{"position":[[327,4]]},"831":{"position":[[377,5],[487,4],[772,4],[987,4],[1357,4]]},"837":{"position":[[237,4]]},"843":{"position":[[380,4],[681,4]]},"845":{"position":[[410,4]]},"847":{"position":[[580,4]]},"849":{"position":[[694,4]]},"851":{"position":[[444,4]]},"857":{"position":[[518,5],[932,3],[1089,4]]},"869":{"position":[[127,4]]},"875":{"position":[[284,4]]},"905":{"position":[[584,4],[624,3],[652,3]]},"921":{"position":[[428,4]]},"923":{"position":[[797,4]]},"933":{"position":[[822,5]]},"937":{"position":[[680,4]]},"955":{"position":[[142,3],[247,5],[381,5],[511,5]]},"957":{"position":[[109,4]]},"959":{"position":[[221,3],[390,5],[561,3]]},"963":{"position":[[71,5]]},"1043":{"position":[[91,5]]},"1074":{"position":[[4,3],[64,4]]},"1076":{"position":[[12,4]]},"1078":{"position":[[103,3],[312,4]]},"1100":{"position":[[371,4],[586,4],[956,4],[1324,4],[1404,4]]},"1102":{"position":[[23,4],[143,4]]},"1104":{"position":[[22,4]]},"1106":{"position":[[27,4]]},"1108":{"position":[[431,4]]},"1110":{"position":[[151,4],[799,5]]},"1112":{"position":[[124,4],[769,5]]},"1116":{"position":[[322,4],[447,4]]},"1136":{"position":[[138,3],[219,3],[287,3],[381,4],[569,3],[665,4],[1187,6]]},"1152":{"position":[[322,4]]},"1157":{"position":[[238,4],[688,3],[1130,3],[1209,5]]},"1159":{"position":[[672,5],[1665,5],[1754,4],[1828,4],[2005,3]]},"1163":{"position":[[205,4],[737,4]]},"1165":{"position":[[186,4]]}}}],["usag",{"_index":453,"t":{"48":{"position":[[529,5]]},"110":{"position":[[404,5]]},"116":{"position":[[151,5],[479,5],[999,5]]},"423":{"position":[[146,6]]}}}],["useact",{"_index":1004,"t":{"118":{"position":[[302,10]]},"180":{"position":[[455,12],[572,10],[1578,9],[2629,11]]},"182":{"position":[[273,10]]}}}],["useeffect",{"_index":1383,"t":{"180":{"position":[[141,9],[2958,12],[3503,12]]},"182":{"position":[[225,10],[648,12]]}}}],["user",{"_index":376,"t":{"32":{"position":[[321,4]]},"48":{"position":[[349,5]]},"66":{"position":[[587,4]]},"71":{"position":[[661,4]]},"88":{"position":[[554,5],[1244,5]]},"104":{"position":[[53,4]]},"108":{"position":[[98,4]]},"158":{"position":[[17,4],[1176,4]]},"182":{"position":[[1294,4]]},"276":{"position":[[74,5]]},"292":{"position":[[863,5]]},"298":{"position":[[2885,5],[2940,4]]},"310":{"position":[[846,11]]},"312":{"position":[[235,6]]},"415":{"position":[[903,4],[926,4]]},"421":{"position":[[856,4]]},"482":{"position":[[334,5]]},"492":{"position":[[388,5]]},"548":{"position":[[83,4]]},"558":{"position":[[574,4]]},"574":{"position":[[531,4],[587,4]]},"624":{"position":[[486,4],[513,4]]},"626":{"position":[[1540,4]]},"632":{"position":[[300,4],[327,4]]},"638":{"position":[[1395,5]]},"684":{"position":[[42,4],[186,4]]},"686":{"position":[[41,4],[1015,4]]},"692":{"position":[[289,4]]},"694":{"position":[[304,4]]},"696":{"position":[[349,4]]},"698":{"position":[[559,4]]},"712":{"position":[[141,4]]},"730":{"position":[[425,4]]},"740":{"position":[[48,4]]},"744":{"position":[[100,4]]},"773":{"position":[[319,4]]},"801":{"position":[[8,4],[199,4],[732,4],[1566,4],[2196,4]]},"803":{"position":[[454,4]]},"811":{"position":[[1542,4],[3048,4]]},"821":{"position":[[438,4]]},"831":{"position":[[46,4]]},"843":{"position":[[100,4]]},"905":{"position":[[834,4],[974,4],[1128,4]]},"917":{"position":[[814,4]]},"919":{"position":[[351,4]]},"921":{"position":[[725,4]]},"933":{"position":[[475,4]]},"935":{"position":[[318,4]]},"947":{"position":[[41,4],[119,4]]},"949":{"position":[[320,4]]},"965":{"position":[[127,4]]},"987":{"position":[[326,4]]},"1033":{"position":[[425,4]]},"1035":{"position":[[215,4],[233,4]]},"1045":{"position":[[133,4]]},"1065":{"position":[[417,4]]},"1100":{"position":[[46,4]]},"1157":{"position":[[173,4],[208,5]]},"1159":{"position":[[1392,4]]}}}],["user_data",{"_index":2511,"t":{"558":{"position":[[236,9],[552,10]]},"660":{"position":[[190,9]]},"684":{"position":[[114,9],[165,10]]},"686":{"position":[[243,9],[994,10]]},"698":{"position":[[239,9],[548,10]]},"917":{"position":[[771,10]]},"987":{"position":[[273,10]]},"1065":{"position":[[364,10]]}}}],["user_data/payload",{"_index":745,"t":{"76":{"position":[[817,18]]}}}],["user_data=myprotobufdatastructur",{"_index":732,"t":{"76":{"position":[[152,39]]}}}],["user_id",{"_index":2323,"t":{"421":{"position":[[843,8]]},"574":{"position":[[156,7],[508,8],[564,8]]},"692":{"position":[[124,7],[266,8]]},"694":{"position":[[93,7],[273,8]]},"712":{"position":[[74,7],[118,8]]},"831":{"position":[[12,8]]},"949":{"position":[[287,8]]},"1045":{"position":[[114,8]]},"1100":{"position":[[12,8]]}}}],["user_id=\"jan",{"_index":2324,"t":{"421":{"position":[[947,13]]}}}],["user_id=\"my_user_id\")context.register_actor",{"_index":586,"t":{"60":{"position":[[930,44]]}}}],["user_id=\"my_user_id\")context.register_actor(impl=actor",{"_index":578,"t":{"60":{"position":[[297,55]]}}}],["user_id=\"rp",{"_index":1152,"t":{"144":{"position":[[409,14]]}}}],["user_id=\"rps\")async",{"_index":1231,"t":{"156":{"position":[[1155,19]]}}}],["userdata",{"_index":2173,"t":{"346":{"position":[[249,11],[323,11],[597,11]]},"797":{"position":[[133,9]]}}}],["userid",{"_index":2761,"t":{"740":{"position":[[12,7]]}}}],["usest",{"_index":1425,"t":{"180":{"position":[[3350,10]]},"182":{"position":[[236,8],[354,10]]}}}],["usestate(nul",{"_index":1465,"t":{"182":{"position":[[495,15],[547,15]]}}}],["usestate(tru",{"_index":1432,"t":{"180":{"position":[[3487,15]]}}}],["usethem",{"_index":1390,"t":{"180":{"position":[[305,8]]}}}],["usingimport",{"_index":1386,"t":{"180":{"position":[[235,11]]}}}],["usual",{"_index":228,"t":{"16":{"position":[[132,7]]},"32":{"position":[[28,7]]},"50":{"position":[[15,7]]},"54":{"position":[[148,7]]},"210":{"position":[[963,7]]},"413":{"position":[[1050,7]]},"536":{"position":[[735,7]]},"558":{"position":[[76,7]]},"560":{"position":[[45,7]]},"564":{"position":[[278,8]]},"626":{"position":[[1151,7]]}}}],["utc",{"_index":2979,"t":{"973":{"position":[[203,3]]},"977":{"position":[[370,3]]},"1007":{"position":[[1034,3]]},"1049":{"position":[[624,3]]}}}],["util",{"_index":1304,"t":{"168":{"position":[[497,7]]},"170":{"position":[[267,8]]},"190":{"position":[[545,7]]},"229":{"position":[[2347,7]]},"241":{"position":[[26,7]]},"300":{"position":[[12,7]]},"396":{"position":[[12,7]]},"534":{"position":[[456,7]]}}}],["uuid",{"_index":2403,"t":{"508":{"position":[[155,5]]},"574":{"position":[[784,4]]},"690":{"position":[[1196,4]]},"744":{"position":[[166,4]]},"750":{"position":[[736,4]]},"764":{"position":[[18,4],[95,4]]},"843":{"position":[[164,4]]},"857":{"position":[[964,4]]},"909":{"position":[[18,4],[92,4]]},"949":{"position":[[243,4]]}}}],["v",{"_index":2274,"t":{"403":{"position":[[188,3],[373,2]]}}}],["v1",{"_index":864,"t":{"92":{"position":[[64,2]]},"102":{"position":[[458,2],[495,2]]},"484":{"position":[[80,2]]},"490":{"position":[[187,2]]},"492":{"position":[[244,2],[281,2],[424,2]]},"504":{"position":[[59,2]]}}}],["v2",{"_index":865,"t":{"92":{"position":[[70,3]]},"94":{"position":[[66,3]]},"484":{"position":[[118,3],[181,3]]},"492":{"position":[[123,3]]},"496":{"position":[[58,3],[185,3]]}}}],["v2.1.0",{"_index":818,"t":{"90":{"position":[[50,6]]}}}],["v2.2.0",{"_index":817,"t":{"90":{"position":[[28,6]]}}}],["val",{"_index":2083,"t":{"308":{"position":[[984,4],[1024,4]]}}}],["valid",{"_index":789,"t":{"80":{"position":[[1564,9]]},"130":{"position":[[38,5],[767,5]]},"138":{"position":[[2211,5]]},"245":{"position":[[171,5],[187,5]]},"298":{"position":[[380,5]]},"312":{"position":[[507,10]]},"413":{"position":[[686,5],[702,5]]},"560":{"position":[[454,5]]},"646":{"position":[[363,6]]},"672":{"position":[[498,8]]},"682":{"position":[[248,8]]},"686":{"position":[[897,8]]},"807":{"position":[[150,5]]},"811":{"position":[[1578,7]]}}}],["valu",{"_index":679,"t":{"71":{"position":[[267,5],[358,5],[533,5],[906,5]]},"73":{"position":[[486,5],[507,5],[1003,5],[1030,5]]},"106":{"position":[[332,5]]},"130":{"position":[[560,7],[653,6]]},"146":{"position":[[1720,5]]},"188":{"position":[[236,5],[295,5]]},"212":{"position":[[1008,5],[1237,5]]},"214":{"position":[[519,5],[601,5]]},"216":{"position":[[4536,5]]},"229":{"position":[[1159,6]]},"245":{"position":[[384,5]]},"247":{"position":[[244,5]]},"249":{"position":[[420,6]]},"255":{"position":[[216,5],[540,5],[917,5],[950,6]]},"267":{"position":[[493,5],[551,6]]},"276":{"position":[[228,5]]},"280":{"position":[[54,6],[237,5]]},"282":{"position":[[317,5]]},"284":{"position":[[517,5]]},"286":{"position":[[344,5]]},"290":{"position":[[296,7]]},"296":{"position":[[1361,5],[1458,5],[1504,5],[1639,5],[1686,5]]},"298":{"position":[[120,5],[2264,5],[2537,6],[2788,6]]},"306":{"position":[[2695,5],[4269,6],[4367,6]]},"308":{"position":[[646,6],[679,7],[1033,7],[2325,6],[2336,7]]},"318":{"position":[[319,5]]},"322":{"position":[[255,5]]},"324":{"position":[[261,5]]},"326":{"position":[[283,5]]},"328":{"position":[[54,6],[364,5]]},"330":{"position":[[316,5]]},"332":{"position":[[544,6]]},"334":{"position":[[420,6]]},"336":{"position":[[588,5]]},"338":{"position":[[297,6],[554,6]]},"360":{"position":[[410,5]]},"362":{"position":[[432,5]]},"364":{"position":[[294,5]]},"366":{"position":[[130,6],[635,6]]},"368":{"position":[[698,6]]},"370":{"position":[[420,6]]},"372":{"position":[[266,6],[455,5]]},"374":{"position":[[583,5]]},"376":{"position":[[296,6],[551,6]]},"378":{"position":[[741,6]]},"380":{"position":[[313,5]]},"382":{"position":[[841,6]]},"384":{"position":[[248,6]]},"386":{"position":[[233,6]]},"388":{"position":[[226,6]]},"390":{"position":[[369,5]]},"392":{"position":[[54,6],[368,5]]},"394":{"position":[[316,5]]},"399":{"position":[[326,5]]},"401":{"position":[[379,6]]},"403":{"position":[[411,5]]},"405":{"position":[[359,5]]},"407":{"position":[[326,6],[589,6]]},"413":{"position":[[395,5],[899,5],[1366,5]]},"415":{"position":[[417,5],[702,5]]},"419":{"position":[[546,6],[681,5]]},"421":{"position":[[526,6],[836,6],[979,5]]},"427":{"position":[[629,5]]},"431":{"position":[[354,5]]},"433":{"position":[[194,5],[422,6]]},"435":{"position":[[54,6],[364,5]]},"437":{"position":[[316,5]]},"439":{"position":[[564,6]]},"441":{"position":[[420,6]]},"443":{"position":[[592,5]]},"445":{"position":[[299,6],[557,6]]},"453":{"position":[[189,5]]},"455":{"position":[[375,5]]},"457":{"position":[[313,5]]},"459":{"position":[[355,5]]},"461":{"position":[[251,5]]},"463":{"position":[[68,5],[269,5]]},"465":{"position":[[54,6],[364,5]]},"467":{"position":[[316,5]]},"469":{"position":[[566,6]]},"471":{"position":[[420,6]]},"473":{"position":[[578,5]]},"475":{"position":[[292,6],[549,6]]},"498":{"position":[[402,6]]},"530":{"position":[[5,6],[444,6]]},"538":{"position":[[319,7]]},"558":{"position":[[183,5],[419,6],[440,5]]},"560":{"position":[[243,5],[571,6],[593,5],[694,5]]},"566":{"position":[[230,7]]},"568":{"position":[[284,7]]},"626":{"position":[[700,5]]},"638":{"position":[[456,7]]},"640":{"position":[[252,7]]},"642":{"position":[[356,7]]},"646":{"position":[[312,7]]},"650":{"position":[[274,7]]},"696":{"position":[[1173,5]]},"698":{"position":[[436,5]]},"756":{"position":[[336,6]]},"760":{"position":[[177,5]]},"779":{"position":[[297,5]]},"785":{"position":[[511,6]]},"795":{"position":[[234,6],[249,5]]},"797":{"position":[[48,6],[64,5]]},"801":{"position":[[1308,5],[2551,5]]},"811":{"position":[[2054,6],[4903,5],[4963,6],[5071,6],[6154,5]]},"819":{"position":[[271,7]]},"831":{"position":[[594,5]]},"863":{"position":[[356,6]]},"867":{"position":[[159,5]]},"917":{"position":[[59,6],[74,5],[207,5],[316,5]]},"931":{"position":[[342,5]]},"941":{"position":[[336,5]]},"969":{"position":[[558,6]]},"981":{"position":[[231,6],[246,5]]},"987":{"position":[[65,6],[80,5],[169,6]]},"991":{"position":[[198,5]]},"995":{"position":[[419,5]]},"1003":{"position":[[246,6],[388,5]]},"1011":{"position":[[422,5]]},"1065":{"position":[[69,6],[84,5],[156,6]]},"1076":{"position":[[304,7]]},"1087":{"position":[[101,5]]},"1157":{"position":[[385,7]]},"1159":{"position":[[832,5]]}}}],["var",{"_index":2070,"t":{"308":{"position":[[42,8]]}}}],["variabl",{"_index":905,"t":{"98":{"position":[[161,9]]},"112":{"position":[[47,10]]},"124":{"position":[[958,8]]},"126":{"position":[[1047,8]]},"144":{"position":[[649,8]]},"146":{"position":[[329,9],[1947,8],[2073,9],[2193,8],[2420,9],[2733,8]]},"150":{"position":[[332,8]]},"152":{"position":[[47,9],[129,9],[269,10]]},"170":{"position":[[823,9],[1185,9]]},"180":{"position":[[3203,8]]},"198":{"position":[[1084,8]]},"200":{"position":[[769,8]]},"202":{"position":[[250,9]]},"229":{"position":[[366,10],[552,9],[1123,9]]},"245":{"position":[[329,9]]},"247":{"position":[[173,9]]},"249":{"position":[[337,9]]},"276":{"position":[[181,9]]},"278":{"position":[[158,9]]},"280":{"position":[[190,9]]},"282":{"position":[[254,9]]},"284":{"position":[[458,9]]},"286":{"position":[[285,9]]},"288":{"position":[[150,9]]},"290":{"position":[[482,9]]},"302":{"position":[[422,8]]},"306":{"position":[[425,9],[1909,10],[1944,9],[4431,10],[4473,9],[4539,9]]},"308":{"position":[[26,9],[167,9],[222,10],[249,9],[305,10],[348,9],[462,8],[1085,10],[1132,9],[1202,9],[1261,9],[1336,10],[1375,8],[1464,9],[1507,10],[1600,9],[2580,8]]},"316":{"position":[[97,10]]},"318":{"position":[[257,9]]},"320":{"position":[[147,9]]},"322":{"position":[[174,9]]},"324":{"position":[[182,9]]},"326":{"position":[[190,9]]},"328":{"position":[[320,9]]},"330":{"position":[[253,9]]},"332":{"position":[[467,9]]},"334":{"position":[[337,9]]},"336":{"position":[[495,9]]},"338":{"position":[[441,9]]},"358":{"position":[[95,10]]},"360":{"position":[[353,9]]},"362":{"position":[[379,9]]},"364":{"position":[[237,9]]},"366":{"position":[[551,9]]},"368":{"position":[[621,9]]},"370":{"position":[[337,9]]},"372":{"position":[[380,9]]},"374":{"position":[[492,9]]},"376":{"position":[[440,9]]},"378":{"position":[[604,8]]},"380":{"position":[[243,9]]},"382":{"position":[[770,9]]},"384":{"position":[[171,9]]},"386":{"position":[[157,9]]},"388":{"position":[[147,9]]},"390":{"position":[[322,9]]},"392":{"position":[[320,9]]},"394":{"position":[[253,9]]},"399":{"position":[[255,9]]},"401":{"position":[[296,9]]},"413":{"position":[[135,10],[306,9],[844,9],[1303,9]]},"425":{"position":[[98,10]]},"427":{"position":[[566,9]]},"429":{"position":[[147,9]]},"431":{"position":[[261,9]]},"433":{"position":[[317,9]]},"435":{"position":[[320,9]]},"437":{"position":[[253,9]]},"439":{"position":[[487,9]]},"441":{"position":[[337,9]]},"443":{"position":[[498,9]]},"445":{"position":[[443,9]]},"451":{"position":[[92,10]]},"453":{"position":[[131,9]]},"455":{"position":[[301,9]]},"457":{"position":[[256,9]]},"459":{"position":[[286,9]]},"461":{"position":[[172,9]]},"463":{"position":[[208,9]]},"465":{"position":[[320,9]]},"467":{"position":[[253,9]]},"469":{"position":[[489,9]]},"471":{"position":[[337,9]]},"473":{"position":[[485,9]]},"475":{"position":[[436,9]]},"494":{"position":[[16,9]]},"500":{"position":[[914,9]]},"526":{"position":[[1138,10]]},"630":{"position":[[301,11]]},"805":{"position":[[987,9]]},"819":{"position":[[230,8]]},"831":{"position":[[909,8],[1267,8]]},"1076":{"position":[[252,8]]},"1100":{"position":[[508,8],[866,8]]}}}],["variablescogment_lifecycle_port=9000cogment_actor_port=9000cogment_directory_port=9005cogment_directory_endpoint=\"grpc://localhost:${cogment_directory_port}\"cogment_directory_authentication_token=\"project",{"_index":1215,"t":{"152":{"position":[[458,204]]}}}],["variablesenvironment_port=9001random_agent_port=9002dqn_agent_port=9003",{"_index":1214,"t":{"152":{"position":[[365,72]]}}}],["variou",{"_index":473,"t":{"52":{"position":[[41,7]]},"160":{"position":[[333,7]]},"194":{"position":[[698,7]]},"512":{"position":[[338,7],[466,7]]},"526":{"position":[[57,7],[299,7]]},"775":{"position":[[288,7]]},"781":{"position":[[22,7]]},"829":{"position":[[142,7]]},"923":{"position":[[281,7]]},"937":{"position":[[289,7]]},"963":{"position":[[22,7]]},"1043":{"position":[[22,7]]},"1078":{"position":[[407,7]]}}}],["vector",{"_index":408,"t":{"42":{"position":[[750,11]]}}}],["vehicl",{"_index":267,"t":{"18":{"position":[[972,7],[1089,7]]},"40":{"position":[[518,7],[635,7]]}}}],["veloc",{"_index":266,"t":{"18":{"position":[[951,8]]},"40":{"position":[[497,8]]}}}],["verbal",{"_index":1751,"t":{"239":{"position":[[2353,7]]}}}],["verbos",{"_index":2276,"t":{"403":{"position":[[363,8],[431,10]]}}}],["veri",{"_index":686,"t":{"71":{"position":[[444,4],[482,4]]},"156":{"position":[[536,4]]},"166":{"position":[[56,4]]},"180":{"position":[[1874,4]]},"186":{"position":[[688,4]]},"200":{"position":[[90,4]]},"218":{"position":[[246,4]]},"296":{"position":[[1543,4]]},"298":{"position":[[271,4]]},"811":{"position":[[134,4]]}}}],["verifi",{"_index":2971,"t":{"959":{"position":[[568,6]]}}}],["vers",{"_index":33,"t":{"4":{"position":[[87,6]]},"6":{"position":[[88,6]]},"10":{"position":[[60,6],[679,5]]}}}],["version",{"_index":65,"t":{"6":{"position":[[275,7],[329,9]]},"90":{"position":[[19,8]]},"94":{"position":[[99,7],[126,7],[252,7],[292,8],[439,7],[615,7],[759,7]]},"102":{"position":[[498,8]]},"118":{"position":[[340,7],[425,7]]},"120":{"position":[[593,7]]},"162":{"position":[[73,7]]},"168":{"position":[[516,7],[720,7]]},"184":{"position":[[188,7]]},"220":{"position":[[194,8]]},"229":{"position":[[2245,7]]},"237":{"position":[[0,7]]},"239":{"position":[[1993,7]]},"306":{"position":[[4078,7]]},"328":{"position":[[208,7]]},"392":{"position":[[208,7]]},"435":{"position":[[208,7]]},"447":{"position":[[86,8]]},"465":{"position":[[208,7]]},"492":{"position":[[284,8]]},"496":{"position":[[136,8]]},"522":{"position":[[672,7]]},"526":{"position":[[206,8]]},"532":{"position":[[46,7]]},"534":{"position":[[22,7],[113,7],[198,8],[269,7],[339,7],[391,8],[494,7],[528,7],[572,7],[580,8],[595,9],[613,7],[679,7],[717,8],[730,7]]},"572":{"position":[[864,10],[883,7]]},"600":{"position":[[8,7]]},"612":{"position":[[507,10],[536,7]]},"624":{"position":[[542,10],[571,7]]},"632":{"position":[[356,10],[385,7]]},"636":{"position":[[958,10],[987,7]]},"686":{"position":[[1150,10]]},"704":{"position":[[623,9]]},"706":{"position":[[214,9],[291,8]]},"724":{"position":[[260,7],[554,10],[583,7]]},"760":{"position":[[18,8],[190,7]]},"867":{"position":[[18,8],[172,7]]},"1078":{"position":[[287,8]]}}}],["version(versionrequest",{"_index":2537,"t":{"572":{"position":[[301,23]]},"594":{"position":[[691,23]]},"596":{"position":[[724,23]]},"612":{"position":[[104,23]]},"624":{"position":[[117,23]]},"632":{"position":[[86,23]]},"636":{"position":[[235,23]]},"658":{"position":[[667,23]]},"690":{"position":[[463,23]]}}}],["version:2.16.0]2023",{"_index":2028,"t":{"306":{"position":[[1211,20]]}}}],["version_handl",{"_index":2679,"t":{"676":{"position":[[181,14],[578,15]]}}}],["version_info",{"_index":2671,"t":{"672":{"position":[[134,12],[296,13]]},"674":{"position":[[89,12],[108,13]]},"678":{"position":[[112,13],[164,14]]},"706":{"position":[[148,14]]},"724":{"position":[[129,12],[221,13]]}}}],["version_numb",{"_index":2202,"t":{"350":{"position":[[1090,21]]},"352":{"position":[[226,15]]},"672":{"position":[[363,14]]},"674":{"position":[[205,15]]},"676":{"position":[[126,15],[273,16]]},"680":{"position":[[115,14],[206,16]]},"686":{"position":[[107,14],[336,15]]}}}],["version_number\\\":1",{"_index":2203,"t":{"352":{"position":[[36,22]]}}}],["version_numbers\\\":[1",{"_index":2200,"t":{"350":{"position":[[656,25]]}}}],["versioninfo",{"_index":2189,"t":{"348":{"position":[[352,14]]},"350":{"position":[[159,15],[772,15],[1207,15]]},"534":{"position":[[549,11]]},"572":{"position":[[333,13]]},"594":{"position":[[723,13]]},"596":{"position":[[756,13]]},"612":{"position":[[136,13]]},"624":{"position":[[149,13]]},"632":{"position":[[118,13]]},"636":{"position":[[267,13]]},"658":{"position":[[699,13]]},"690":{"position":[[495,13]]},"724":{"position":[[117,11]]}}}],["versionnumb",{"_index":2190,"t":{"348":{"position":[[392,16]]},"350":{"position":[[202,16],[389,16],[815,16],[1250,16]]}}}],["versionrequest",{"_index":2473,"t":{"532":{"position":[[131,14]]}}}],["versions_count",{"_index":2678,"t":{"676":{"position":[[154,14],[422,15]]}}}],["via",{"_index":321,"t":{"26":{"position":[[509,3]]},"138":{"position":[[2667,4]]}}}],["view",{"_index":437,"t":{"48":{"position":[[33,4]]},"50":{"position":[[527,4]]},"56":{"position":[[501,4]]}}}],["virtual",{"_index":1699,"t":{"229":{"position":[[2155,7]]},"233":{"position":[[153,7]]}}}],["virtualenv",{"_index":1674,"t":{"220":{"position":[[212,10]]}}}],["visibl",{"_index":259,"t":{"18":{"position":[[831,7]]},"40":{"position":[[377,7]]},"626":{"position":[[1072,7]]}}}],["visit",{"_index":2390,"t":{"492":{"position":[[479,5]]},"498":{"position":[[487,5]]}}}],["voic",{"_index":21,"t":{"2":{"position":[[293,5]]}}}],["void",{"_index":2764,"t":{"744":{"position":[[320,4]]},"746":{"position":[[524,4]]},"752":{"position":[[390,4]]},"770":{"position":[[372,4]]},"773":{"position":[[381,4]]},"777":{"position":[[354,4]]},"779":{"position":[[752,4]]}}}],["vulner",{"_index":73,"t":{"8":{"position":[[23,14]]}}}],["vv",{"_index":2277,"t":{"403":{"position":[[377,3]]}}}],["vvv",{"_index":2278,"t":{"403":{"position":[[382,4]]}}}],["vvvv",{"_index":2275,"t":{"403":{"position":[[213,4],[388,4]]}}}],["wait",{"_index":313,"t":{"24":{"position":[[1053,4]]},"60":{"position":[[1413,4]]},"68":{"position":[[151,4]]},"84":{"position":[[282,4]]},"86":{"position":[[188,5],[357,5]]},"88":{"position":[[675,5],[1547,7],[1838,7]]},"146":{"position":[[2798,4]]},"156":{"position":[[1739,4]]},"216":{"position":[[1301,4],[5961,4]]},"269":{"position":[[16,4]]},"284":{"position":[[33,4],[618,4]]},"508":{"position":[[497,4]]},"566":{"position":[[315,7]]},"596":{"position":[[325,4]]},"704":{"position":[[289,4]]},"752":{"position":[[207,4],[268,4],[316,4]]},"775":{"position":[[120,4]]},"781":{"position":[[154,7]]},"801":{"position":[[3085,4],[3202,4],[3284,4],[3361,6],[3425,4],[3548,4],[3630,4],[3707,6]]},"805":{"position":[[716,6]]},"809":{"position":[[280,7]]},"859":{"position":[[225,4],[286,4],[345,4]]},"863":{"position":[[207,5]]},"875":{"position":[[335,4]]},"903":{"position":[[196,4]]},"905":{"position":[[1182,4],[1539,4]]},"923":{"position":[[106,4]]},"937":{"position":[[120,4]]},"953":{"position":[[66,8]]},"963":{"position":[[154,7]]},"1033":{"position":[[98,4]]},"1039":{"position":[[10,4]]},"1041":{"position":[[10,4],[225,4]]},"1110":{"position":[[594,4]]},"1112":{"position":[[564,4]]},"1132":{"position":[[10,4],[231,4]]},"1136":{"position":[[913,4],[988,4],[1055,4]]},"1146":{"position":[[10,4],[278,4]]}}}],["wait_for_tri",{"_index":2924,"t":{"875":{"position":[[289,16]]}}}],["wall",{"_index":2467,"t":{"530":{"position":[[546,4]]},"724":{"position":[[338,4]]}}}],["want",{"_index":124,"t":{"10":{"position":[[541,4]]},"24":{"position":[[509,4]]},"90":{"position":[[554,4]]},"118":{"position":[[491,4]]},"124":{"position":[[1177,4]]},"138":{"position":[[1939,4]]},"146":{"position":[[2146,4]]},"158":{"position":[[110,4]]},"184":{"position":[[6,4]]},"204":{"position":[[1380,4]]},"208":{"position":[[442,4]]},"212":{"position":[[394,4]]},"214":{"position":[[846,4]]},"216":{"position":[[90,4],[789,4],[5449,4]]},"229":{"position":[[2018,4]]},"235":{"position":[[56,4]]},"676":{"position":[[239,4]]},"680":{"position":[[173,4]]}}}],["warn",{"_index":1920,"t":{"280":{"position":[[78,8]]},"328":{"position":[[78,8]]},"392":{"position":[[78,8]]},"435":{"position":[[78,8]]},"465":{"position":[[78,8]]},"496":{"position":[[189,8]]},"819":{"position":[[111,8],[291,8],[958,8]]},"1076":{"position":[[115,8],[324,8]]}}}],["warranti",{"_index":1812,"t":{"239":{"position":[[7048,9],[7223,10],[7323,10],[8334,8],[8497,9],[8934,8]]}}}],["wasn't",{"_index":1539,"t":{"190":{"position":[[1697,7]]}}}],["watch",{"_index":398,"t":{"38":{"position":[[186,8]]},"216":{"position":[[1585,7]]}}}],["watch_trial",{"_index":1244,"t":{"156":{"position":[[2035,12]]},"857":{"position":[[876,13]]}}}],["watchtrial",{"_index":2541,"t":{"572":{"position":[[800,14]]},"588":{"position":[[24,11]]},"590":{"position":[[29,11]]},"750":{"position":[[650,12]]}}}],["watchtrials(triallistrequest",{"_index":2535,"t":{"572":{"position":[[232,29]]}}}],["way",{"_index":380,"t":{"32":{"position":[[506,3]]},"42":{"position":[[40,5]]},"60":{"position":[[192,3]]},"80":{"position":[[837,3]]},"88":{"position":[[51,3],[1231,5]]},"110":{"position":[[161,3]]},"144":{"position":[[619,3]]},"148":{"position":[[309,3]]},"150":{"position":[[290,3]]},"156":{"position":[[467,3]]},"168":{"position":[[93,3]]},"170":{"position":[[657,3]]},"174":{"position":[[12,3]]},"180":{"position":[[1886,3]]},"186":{"position":[[82,3],[759,4]]},"210":{"position":[[1263,4]]},"212":{"position":[[202,3]]},"216":{"position":[[701,3],[6374,4]]},"298":{"position":[[2768,3]]},"312":{"position":[[144,5]]},"314":{"position":[[41,3]]},"356":{"position":[[39,3]]},"411":{"position":[[180,4]]},"415":{"position":[[94,4]]},"417":{"position":[[94,4]]},"419":{"position":[[83,4]]},"421":{"position":[[120,4]]},"423":{"position":[[566,3]]},"449":{"position":[[36,3]]},"502":{"position":[[523,3]]},"592":{"position":[[198,3]]},"596":{"position":[[415,3]]},"727":{"position":[[13,3]]},"799":{"position":[[763,3]]},"814":{"position":[[13,3]]},"825":{"position":[[205,4]]},"1136":{"position":[[468,3]]},"1157":{"position":[[258,5]]}}}],["wc",{"_index":2183,"t":{"348":{"position":[[128,2]]}}}],["we'd",{"_index":29,"t":{"4":{"position":[[0,4]]}}}],["we'll",{"_index":554,"t":{"58":{"position":[[378,5],[473,5]]},"136":{"position":[[0,5]]},"146":{"position":[[303,5],[1969,5],[2087,5]]},"152":{"position":[[13,5]]},"158":{"position":[[104,5]]},"164":{"position":[[254,5]]},"178":{"position":[[927,5]]},"180":{"position":[[0,5],[72,5],[226,5],[2055,5]]},"190":{"position":[[116,5]]},"202":{"position":[[671,5]]},"208":{"position":[[537,5],[662,5]]},"216":{"position":[[684,5]]}}}],["we'r",{"_index":1393,"t":{"180":{"position":[[377,5],[2922,5]]},"182":{"position":[[2070,5]]}}}],["we'v",{"_index":1411,"t":{"180":{"position":[[1721,5]]}}}],["web",{"_index":378,"t":{"32":{"position":[[493,3],[521,3]]},"42":{"position":[[437,3]]},"118":{"position":[[498,3]]},"158":{"position":[[1852,3]]},"160":{"position":[[238,3],[341,3]]},"162":{"position":[[13,3]]},"164":{"position":[[196,3]]},"168":{"position":[[38,3]]},"170":{"position":[[70,3],[161,3],[279,3],[297,3],[448,3],[1004,3],[1106,3],[1566,3],[1994,3],[2320,3]]},"174":{"position":[[38,3],[335,3],[584,3]]},"180":{"position":[[751,3],[2330,3],[2472,3]]},"182":{"position":[[1970,3]]},"364":{"position":[[137,3]]},"447":{"position":[[107,3],[167,3],[250,3],[317,3],[388,3],[508,3],[558,3]]},"449":{"position":[[4,3]]},"451":{"position":[[4,3]]},"453":{"position":[[32,3]]},"461":{"position":[[260,4]]},"469":{"position":[[114,3],[223,3],[376,3]]},"473":{"position":[[66,3],[106,3]]},"475":{"position":[[74,3]]}}}],["web_client",{"_index":1289,"t":{"166":{"position":[[126,10]]},"168":{"position":[[270,10]]},"174":{"position":[[252,10]]}}}],["web_client/.eslintignor",{"_index":1483,"t":{"182":{"position":[[1690,24]]}}}],["web_client_build",{"_index":1318,"t":{"170":{"position":[[1127,18],[2442,17]]},"174":{"position":[[509,16]]}}}],["web_client_start",{"_index":1325,"t":{"170":{"position":[[1476,18]]},"182":{"position":[[1991,16]]}}}],["web_clientnpm",{"_index":1291,"t":{"166":{"position":[[245,13]]}}}],["web_port=80",{"_index":2355,"t":{"453":{"position":[[103,12]]}}}],["web_port=8080",{"_index":2353,"t":{"449":{"position":[[71,13]]}}}],["web_proxi",{"_index":2352,"t":{"449":{"position":[[59,9]]}}}],["web_proxy_secret",{"_index":2369,"t":{"463":{"position":[[278,17]]}}}],["websocket",{"_index":2221,"t":{"364":{"position":[[78,10]]}}}],["weight",{"_index":682,"t":{"71":{"position":[[344,8]]},"188":{"position":[[359,6]]},"558":{"position":[[486,6]]},"560":{"position":[[599,9]]},"658":{"position":[[88,7]]},"698":{"position":[[482,6]]},"917":{"position":[[185,6]]}}}],["well",{"_index":404,"t":{"42":{"position":[[388,4]]},"50":{"position":[[121,4]]},"52":{"position":[[499,4],[850,4]]},"54":{"position":[[502,4]]},"80":{"position":[[601,4]]},"118":{"position":[[190,4]]},"156":{"position":[[2751,4]]},"158":{"position":[[1304,4]]},"168":{"position":[[134,4]]},"180":{"position":[[530,4]]},"229":{"position":[[158,4],[2635,5]]},"300":{"position":[[313,5]]},"340":{"position":[[95,4]]},"346":{"position":[[79,4]]},"419":{"position":[[787,4]]},"524":{"position":[[132,4]]},"526":{"position":[[799,4]]},"734":{"position":[[309,4]]}}}],["what'",{"_index":1415,"t":{"180":{"position":[[2147,6],[2389,6],[2531,6]]}}}],["whatev",{"_index":1270,"t":{"158":{"position":[[1163,8]]},"875":{"position":[[504,8]]}}}],["whenev",{"_index":1265,"t":{"158":{"position":[[660,8]]},"168":{"position":[[604,8]]},"180":{"position":[[966,8]]},"212":{"position":[[1455,8]]}}}],["wherea",{"_index":614,"t":{"62":{"position":[[403,7]]},"308":{"position":[[2947,7]]},"500":{"position":[[336,7]]},"799":{"position":[[482,7]]}}}],["wherev",{"_index":1794,"t":{"239":{"position":[[5557,8]]}}}],["whether",{"_index":79,"t":{"8":{"position":[[157,7]]},"124":{"position":[[152,7]]},"206":{"position":[[158,7]]},"208":{"position":[[1321,7]]},"239":{"position":[[571,7],[1266,7],[1501,7],[7682,7]]},"278":{"position":[[0,7]]},"288":{"position":[[0,7]]},"290":{"position":[[0,7]]},"298":{"position":[[1069,7]]},"320":{"position":[[0,7]]},"429":{"position":[[0,7]]},"736":{"position":[[0,7]]},"1029":{"position":[[450,7]]},"1128":{"position":[[18,7]]},"1144":{"position":[[18,7]]}}}],["whichev",{"_index":308,"t":{"24":{"position":[[837,9]]}}}],["whole",{"_index":1742,"t":{"239":{"position":[[1684,6],[6183,6]]},"799":{"position":[[292,5]]},"1152":{"position":[[243,5]]},"1163":{"position":[[658,5]]}}}],["wide",{"_index":912,"t":{"100":{"position":[[46,4]]}}}],["wildcard",{"_index":2787,"t":{"779":{"position":[[443,11],[499,8],[701,8]]},"795":{"position":[[216,8]]},"917":{"position":[[449,8]]},"931":{"position":[[436,11],[492,8],[696,8]]},"941":{"position":[[483,11],[539,8],[743,8]]},"979":{"position":[[170,8]]},"981":{"position":[[213,8]]},"1065":{"position":[[288,8]]},"1067":{"position":[[184,8]]}}}],["win",{"_index":1261,"t":{"158":{"position":[[456,4],[547,4]]},"180":{"position":[[4832,3],[4948,3]]},"188":{"position":[[573,4],[778,4]]},"190":{"position":[[1631,8]]},"204":{"position":[[1358,3],[1676,4],[1766,7]]},"208":{"position":[[605,5],[656,5],[779,5]]},"210":{"position":[[1285,3],[1322,3]]},"216":{"position":[[2796,5]]}}}],["window",{"_index":1669,"t":{"218":{"position":[[430,8]]},"801":{"position":[[1054,6]]}}}],["winner",{"_index":1516,"t":{"188":{"position":[[217,6]]},"204":{"position":[[1262,6],[1531,7]]}}}],["winner/los",{"_index":1595,"t":{"208":{"position":[[1052,12]]},"216":{"position":[[3069,12]]}}}],["wins!\")elif",{"_index":1601,"t":{"208":{"position":[[1176,11]]},"216":{"position":[[3193,11]]}}}],["wins!\")els",{"_index":1605,"t":{"208":{"position":[[1257,12]]},"216":{"position":[[3274,12]]}}}],["winsp1_stat",{"_index":1588,"t":{"208":{"position":[[830,12]]},"216":{"position":[[2847,12]]}}}],["wip",{"_index":3040,"t":{"1069":{"position":[[0,3]]}}}],["wish",{"_index":1078,"t":{"130":{"position":[[673,4]]},"158":{"position":[[1086,6]]}}}],["with_human",{"_index":2815,"t":{"803":{"position":[[1020,12]]}}}],["within",{"_index":209,"t":{"14":{"position":[[444,6]]},"30":{"position":[[564,6]]},"52":{"position":[[30,6]]},"54":{"position":[[747,6]]},"76":{"position":[[67,6]]},"212":{"position":[[702,6]]},"227":{"position":[[609,6]]},"239":{"position":[[2966,6],[4111,6],[5190,6],[5337,6],[5408,6],[5498,6],[5748,6]]},"269":{"position":[[94,6]]},"524":{"position":[[1082,6]]},"526":{"position":[[690,6]]},"658":{"position":[[805,7]]},"660":{"position":[[162,6]]},"686":{"position":[[288,6]]},"704":{"position":[[327,6]]},"732":{"position":[[565,6]]},"825":{"position":[[35,6]]},"875":{"position":[[480,6]]},"905":{"position":[[1360,6]]}}}],["without",{"_index":1784,"t":{"239":{"position":[[4435,7],[6533,7],[7215,7],[7299,7]]},"292":{"position":[[1150,7]]},"500":{"position":[[271,7]]},"524":{"position":[[867,7]]},"590":{"position":[[313,7]]},"602":{"position":[[1019,7]]},"614":{"position":[[910,7]]},"809":{"position":[[97,7]]},"833":{"position":[[177,7],[242,7]]},"989":{"position":[[591,7],[998,7]]},"1001":{"position":[[644,7],[1146,7]]},"1053":{"position":[[523,7],[961,7]]},"1078":{"position":[[32,7]]}}}],["won",{"_index":1088,"t":{"132":{"position":[[1027,3]]},"180":{"position":[[4488,4]]},"188":{"position":[[162,4]]},"190":{"position":[[1010,3],[1233,3],[1726,3]]},"204":{"position":[[1465,3]]},"206":{"position":[[171,3],[646,3]]},"208":{"position":[[186,3],[1334,3]]},"210":{"position":[[327,3],[391,3],[987,3],[1047,3]]},"212":{"position":[[485,3]]},"214":{"position":[[93,4],[1159,3],[1248,3]]},"216":{"position":[[2720,4],[4042,3],[4106,3],[4341,3],[5071,3],[5160,3],[6158,3]]}}}],["won't",{"_index":1110,"t":{"138":{"position":[[695,5]]}}}],["won/lost",{"_index":1561,"t":{"202":{"position":[[464,8]]}}}],["won_last=p1_action.mov",{"_index":1589,"t":{"208":{"position":[[858,23]]},"216":{"position":[[2875,23]]}}}],["won_last=p2_action.mov",{"_index":1592,"t":{"208":{"position":[[959,23]]},"216":{"position":[[2976,23]]}}}],["word",{"_index":1173,"t":{"146":{"position":[[1531,6]]},"308":{"position":[[2854,6]]},"811":{"position":[[2952,6]]}}}],["work",{"_index":3,"t":{"2":{"position":[[55,7]]},"4":{"position":[[52,7]]},"10":{"position":[[719,4]]},"18":{"position":[[208,5]]},"30":{"position":[[985,5]]},"94":{"position":[[48,4]]},"122":{"position":[[19,7]]},"156":{"position":[[2714,4]]},"162":{"position":[[40,7]]},"188":{"position":[[1158,5]]},"194":{"position":[[499,6]]},"198":{"position":[[1316,5]]},"204":{"position":[[136,4]]},"208":{"position":[[450,4]]},"216":{"position":[[1672,5]]},"218":{"position":[[130,7]]},"220":{"position":[[29,7]]},"222":{"position":[[341,8]]},"224":{"position":[[66,7]]},"227":{"position":[[196,4],[413,4]]},"229":{"position":[[2006,5]]},"231":{"position":[[24,4]]},"235":{"position":[[1339,7],[1467,4]]},"239":{"position":[[1224,6],[1246,4],[1408,4],[1473,6],[1495,5],[1574,4],[1703,4],[1768,5],[1792,5],[1885,4],[1905,5],[1950,4],[2008,4],[2056,4],[2075,5],[2155,4],[2658,5],[2977,5],[3232,5],[3309,4],[3334,5],[3692,5],[3898,4],[4075,4],[4122,4],[4251,4],[4379,4],[4398,5],[4583,4],[4602,5],[4799,5],[4912,5],[4992,6],[5014,4],[5098,5],[5289,6],[5401,6],[5487,6],[5543,6],[5766,5],[5849,5],[6172,5],[6247,4],[6448,4],[6978,4],[7139,4],[7524,4],[8078,4],[8143,4],[8393,4],[8412,5]]},"271":{"position":[[451,5]]},"306":{"position":[[2227,7],[2267,7],[2415,7],[2558,7],[4758,7],[4798,7],[5352,7],[5431,7]]},"407":{"position":[[234,5]]},"423":{"position":[[274,4]]},"484":{"position":[[97,7]]},"500":{"position":[[1525,4]]},"592":{"position":[[177,4]]},"1069":{"position":[[19,4]]},"1076":{"position":[[365,5]]},"1078":{"position":[[27,4]]},"1116":{"position":[[853,4]]}}}],["workflow",{"_index":1014,"t":{"120":{"position":[[299,9]]}}}],["world",{"_index":195,"t":{"14":{"position":[[180,5],[244,5]]},"16":{"position":[[209,5]]},"18":{"position":[[661,6],[797,6],[919,6]]},"22":{"position":[[303,6]]},"40":{"position":[[207,6],[343,6],[465,6]]},"56":{"position":[[477,5]]},"124":{"position":[[1855,6]]},"132":{"position":[[206,6]]},"138":{"position":[[3814,5]]},"198":{"position":[[23,5],[162,5]]}}}],["worldwid",{"_index":1761,"t":{"239":{"position":[[3118,10],[3498,10]]}}}],["wouldn't",{"_index":1508,"t":{"186":{"position":[[604,8]]}}}],["wrap",{"_index":2493,"t":{"548":{"position":[[127,7]]}}}],["wrapper",{"_index":916,"t":{"102":{"position":[[51,7]]},"492":{"position":[[142,7]]}}}],["write",{"_index":1756,"t":{"239":{"position":[[2748,7],[7108,8],[7844,8]]}}}],["written",{"_index":861,"t":{"92":{"position":[[21,7]]},"239":{"position":[[2364,7]]},"419":{"position":[[395,7]]}}}],["wrong",{"_index":2152,"t":{"336":{"position":[[266,5]]},"374":{"position":[[263,5]]},"443":{"position":[[269,5]]},"473":{"position":[[256,5]]},"835":{"position":[[990,5]]},"995":{"position":[[394,5]]},"1011":{"position":[[397,5]]}}}],["wsl2",{"_index":1668,"t":{"218":{"position":[[422,4]]}}}],["x",{"_index":759,"t":{"78":{"position":[[913,3]]}}}],["xxx",{"_index":2840,"t":{"811":{"position":[[2034,5],[3387,3]]}}}],["y2h1bmtfmwnodw5rxzi",{"_index":2206,"t":{"352":{"position":[[158,23]]}}}],["yaml",{"_index":363,"t":{"30":{"position":[[884,4]]},"172":{"position":[[25,5]]},"300":{"position":[[214,4]]},"302":{"position":[[77,4]]},"304":{"position":[[32,4]]},"306":{"position":[[3900,4]]},"308":{"position":[[129,4]]},"366":{"position":[[16,4]]},"500":{"position":[[114,4],[1047,4]]},"510":{"position":[[764,4]]},"803":{"position":[[178,4],[236,4]]}}}],["ye",{"_index":91,"t":{"8":{"position":[[412,6]]},"118":{"position":[[466,3]]},"180":{"position":[[4894,5],[5013,5]]},"803":{"position":[[1033,3]]}}}],["yield",{"_index":2913,"t":{"863":{"position":[[217,5]]}}}],["you'd",{"_index":1544,"t":{"194":{"position":[[816,5]]}}}],["you'll",{"_index":104,"t":{"10":{"position":[[161,6]]},"90":{"position":[[1422,6]]},"108":{"position":[[803,6]]},"156":{"position":[[491,6]]},"158":{"position":[[1508,6]]},"220":{"position":[[15,6],[146,6]]},"233":{"position":[[93,6]]}}}],["you'r",{"_index":32,"t":{"4":{"position":[[45,6]]},"8":{"position":[[424,6],[578,6]]},"10":{"position":[[138,6]]}}}],["you'v",{"_index":1217,"t":{"154":{"position":[[57,6]]},"160":{"position":[[57,6]]}}}],["yourself",{"_index":81,"t":{"8":{"position":[[208,8]]}}}],["yyi",{"_index":2841,"t":{"811":{"position":[[2044,5]]}}}],["z",{"_index":2849,"t":{"811":{"position":[[5015,2],[5020,2]]}}}],["zero",{"_index":1982,"t":{"298":{"position":[[362,4]]},"572":{"position":[[634,5]]},"835":{"position":[[426,4]]}}}],["zgi6gl",{"_index":1880,"t":{"251":{"position":[[284,9]]}}}]],"pipeline":["stemmer"]}}] \ No newline at end of file diff --git a/search.html b/search.html index 5a662ae..c5e6212 100644 --- a/search.html +++ b/search.html @@ -1,18 +1,21 @@ - + -Search the documentation +Search the documentation | Cogment - - - + + + + + + - - +

Search the documentation

+ + \ No newline at end of file